File indexing completed on 2024-05-19 07:54:44

0001 /****************************************************************************
0002  *    Copyright 2011  Ian Wadham <iandw.au@gmail.com>                       *
0003  *    Copyright 2015  Ian Wadham <iandw.au@gmail.com>                       *
0004  *                                                                          *
0005  *    This program is free software; you can redistribute it and/or         *
0006  *    modify it under the terms of the GNU General Public License as        *
0007  *    published by the Free Software Foundation; either version 2 of        *
0008  *    the License, or (at your option) any later version.                   *
0009  *                                                                          *
0010  *    This program is distributed in the hope that it will be useful,       *
0011  *    but WITHOUT ANY WARRANTY; without even the implied warranty of        *
0012  *    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the         *
0013  *    GNU General Public License for more details.                          *
0014  *                                                                          *
0015  *    You should have received a copy of the GNU General Public License     *
0016  *    along with this program.  If not, see <http://www.gnu.org/licenses/>. *
0017  ****************************************************************************/
0018 
0019 #ifndef GLOBALS_H
0020 #define GLOBALS_H
0021 
0022 #include <QList>
0023 
0024 // Values used in vacant and unusable cells (e.g. for Samurai puzzles).
0025 #define VACANT 0
0026 #define UNUSABLE -1
0027 
0028 enum SudokuType {Plain, XSudoku, Jigsaw, Samurai, TinySamurai, Roxdoku, Aztec,
0029                  Mathdoku, KillerSudoku, EndSudokuTypes};
0030 
0031 enum Difficulty {VeryEasy  = 0, Easy = 1, Medium = 2, Hard = 3, Diabolical = 4,
0032                  Unlimited = 5};
0033 
0034 enum Symmetry   {DIAGONAL_1, CENTRAL, LEFT_RIGHT, SPIRAL, FOURWAY,
0035                  RANDOM_SYM, LAST_CHOICE = RANDOM_SYM, NONE, DIAGONAL_2};
0036 
0037 enum CageOperator {NoOperator, Divide, Subtract, Multiply, Add};
0038 
0039 using BoardContents = QList<int>;
0040 
0041 // The maximum digit that can be used in a Mathdoku or Killer Sudoku puzzle.
0042 const int MaxMathOrder = 9;
0043 
0044 struct Statistics {
0045     char *     typeName;
0046     SudokuType type;
0047     int        blockSize;
0048     int        order;
0049     bool       generated;
0050     qint32     seed;
0051     int        nClues;
0052     int        nCells;
0053     int        nSingles;
0054     int        nSpots;
0055     int        nDeduces;
0056     int        nGuesses;
0057     int        firstGuessAt;
0058     float      rating;
0059     Difficulty difficulty;
0060 };
0061 
0062 #endif // GLOBALS_H