Add undo support. Remove some puzzles because I am running out of space.
This commit is contained in:
parent
a4ac18ffa2
commit
72f0fe6253
|
@ -28,10 +28,19 @@ typedef struct tGameSquare {
|
|||
} tGameSquare;
|
||||
|
||||
|
||||
typedef struct tUndoMove {
|
||||
tGameSquare oldSquare;
|
||||
tPos x;
|
||||
tPos y;
|
||||
bool isValid;
|
||||
} tUndoMove;
|
||||
|
||||
|
||||
typedef struct tGame {
|
||||
tGameSquare squares[BOARD_SIZE * BOARD_SIZE];
|
||||
struct tPuzzle *puzzle;
|
||||
tUpdatePosCallback callback;
|
||||
tUndoMove undo;
|
||||
} tGame;
|
||||
|
||||
|
||||
|
@ -149,7 +158,7 @@ bool isSquareInvalid(tPos col, tPos row)
|
|||
}
|
||||
|
||||
|
||||
void refreshInvalid(tPos col, tPos row)
|
||||
void refreshInvalid(void)
|
||||
{
|
||||
tPos x, y;
|
||||
tGameSquare *square;
|
||||
|
@ -184,6 +193,11 @@ bool setValueAtPos(tPos x, tPos y, tSquareVal val)
|
|||
return false;
|
||||
}
|
||||
|
||||
theGame.undo.isValid = true;
|
||||
memcpy(&(theGame.undo.oldSquare), square, sizeof(*square));
|
||||
theGame.undo.x = x;
|
||||
theGame.undo.y = y;
|
||||
|
||||
if (square->value != val) {
|
||||
square->value = val;
|
||||
update = true;
|
||||
|
@ -207,7 +221,7 @@ bool setValueAtPos(tPos x, tPos y, tSquareVal val)
|
|||
refreshPos(x,y);
|
||||
|
||||
if (checkValues)
|
||||
refreshInvalid(x, y);
|
||||
refreshInvalid();
|
||||
|
||||
return true;
|
||||
}
|
||||
|
@ -220,8 +234,63 @@ bool toggleScratchValueAtPos(tPos x, tPos y, tSquareVal val)
|
|||
if (square->knownAtStart) {
|
||||
return false;
|
||||
}
|
||||
|
||||
theGame.undo.isValid = true;
|
||||
memcpy(&(theGame.undo.oldSquare), square, sizeof(*square));
|
||||
theGame.undo.x = x;
|
||||
theGame.undo.y = y;
|
||||
|
||||
square->scratchValues ^= (0x1 << val);
|
||||
refreshPos(x, y);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
bool undoLastMove(void)
|
||||
{
|
||||
tGameSquare *square;
|
||||
bool update = false;
|
||||
bool checkValues = false;
|
||||
tPos x = theGame.undo.x;
|
||||
tPos y = theGame.undo.y;
|
||||
bool correct;
|
||||
|
||||
if (!theGame.undo.isValid)
|
||||
return false;
|
||||
|
||||
square = &(SQUARE_XY(x, y));
|
||||
|
||||
if (square->knownAtStart) {
|
||||
return false;
|
||||
}
|
||||
|
||||
theGame.undo.isValid = false;
|
||||
|
||||
if (square->value != theGame.undo.oldSquare.value) {
|
||||
square->value = theGame.undo.oldSquare.value;
|
||||
update = true;
|
||||
checkValues = true;
|
||||
}
|
||||
|
||||
if (square->scratchValues != theGame.undo.oldSquare.scratchValues) {
|
||||
square->scratchValues = theGame.undo.oldSquare.scratchValues;
|
||||
update = true;
|
||||
}
|
||||
|
||||
if (checkValues) {
|
||||
correct = checkValueAtPos(theGame.puzzle, square->value, x, y);
|
||||
if (square->correct != correct) {
|
||||
square->correct = correct;
|
||||
update = true;
|
||||
}
|
||||
}
|
||||
|
||||
if (update)
|
||||
refreshPos(x,y);
|
||||
|
||||
if (checkValues)
|
||||
refreshInvalid();
|
||||
|
||||
return true;
|
||||
}
|
|
@ -40,5 +40,8 @@ extern bool setValueAtPos(tPos x, tPos y, tSquareVal val);
|
|||
// Returns false if unable to toggle the scratch value for some reason
|
||||
extern bool toggleScratchValueAtPos(tPos x, tPos y, tSquareVal val);
|
||||
|
||||
// Returns false if the last move cannot be undone.
|
||||
extern bool undoLastMove(void);
|
||||
|
||||
|
||||
#endif /* defined(__a2sudoku__game__) */
|
||||
|
|
|
@ -842,81 +842,6 @@ tPuzzle easyPuzzles[] = {
|
|||
PVAL(9),SVAL(8),PVAL(1), SVAL(6),PVAL(5),PVAL(2), SVAL(3),SVAL(4),PVAL(7),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
PVAL(9),SVAL(1),PVAL(8), SVAL(3),PVAL(6),PVAL(4), PVAL(5),PVAL(2),PVAL(7),
|
||||
PVAL(3),PVAL(2),SVAL(5), PVAL(9),PVAL(8),PVAL(7), PVAL(6),SVAL(4),PVAL(1),
|
||||
PVAL(7),SVAL(4),PVAL(6), SVAL(1),PVAL(5),SVAL(2), PVAL(9),SVAL(8),PVAL(3),
|
||||
|
||||
PVAL(6),PVAL(5),PVAL(2), SVAL(4),PVAL(3),SVAL(8), PVAL(1),PVAL(7),PVAL(9),
|
||||
PVAL(4),PVAL(9),SVAL(7), PVAL(6),PVAL(2),PVAL(1), PVAL(8),PVAL(3),SVAL(5),
|
||||
PVAL(1),PVAL(8),PVAL(3), PVAL(5),SVAL(7),SVAL(9), PVAL(4),PVAL(6),SVAL(2),
|
||||
|
||||
PVAL(2),PVAL(6),SVAL(9), PVAL(8),PVAL(1),SVAL(3), SVAL(7),PVAL(5),PVAL(4),
|
||||
PVAL(8),PVAL(7),PVAL(4), SVAL(2),PVAL(9),PVAL(5), PVAL(3),PVAL(1),SVAL(6),
|
||||
SVAL(5),PVAL(3),SVAL(1), PVAL(7),SVAL(4),PVAL(6), PVAL(2),PVAL(9),PVAL(8),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
PVAL(6),PVAL(7),PVAL(3), PVAL(8),PVAL(4),PVAL(2), PVAL(1),SVAL(9),PVAL(5),
|
||||
SVAL(9),PVAL(1),PVAL(5), SVAL(7),PVAL(3),PVAL(6), SVAL(4),PVAL(8),SVAL(2),
|
||||
PVAL(4),PVAL(2),PVAL(8), PVAL(1),PVAL(9),SVAL(5), SVAL(3),PVAL(6),PVAL(7),
|
||||
|
||||
PVAL(3),PVAL(4),PVAL(2), PVAL(9),PVAL(8),PVAL(7), SVAL(6),SVAL(5),PVAL(1),
|
||||
SVAL(8),PVAL(6),SVAL(7), SVAL(5),PVAL(1),PVAL(3), PVAL(9),SVAL(2),PVAL(4),
|
||||
PVAL(5),SVAL(9),SVAL(1), PVAL(2),PVAL(6),SVAL(4), PVAL(8),SVAL(7),PVAL(3),
|
||||
|
||||
PVAL(1),PVAL(5),PVAL(6), PVAL(3),PVAL(2),PVAL(9), PVAL(7),PVAL(4),PVAL(8),
|
||||
PVAL(2),SVAL(3),PVAL(9), PVAL(4),PVAL(7),SVAL(8), PVAL(5),SVAL(1),PVAL(6),
|
||||
SVAL(7),SVAL(8),PVAL(4), SVAL(6),SVAL(5),PVAL(1), PVAL(2),PVAL(3),PVAL(9),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
PVAL(9),PVAL(8),SVAL(6), PVAL(4),SVAL(7),PVAL(5), PVAL(1),PVAL(2),PVAL(3),
|
||||
PVAL(5),PVAL(1),PVAL(7), SVAL(3),PVAL(6),SVAL(2), SVAL(4),SVAL(9),SVAL(8),
|
||||
PVAL(4),PVAL(2),PVAL(3), PVAL(1),PVAL(8),PVAL(9), PVAL(6),PVAL(7),SVAL(5),
|
||||
|
||||
PVAL(2),PVAL(9),SVAL(5), PVAL(6),PVAL(1),PVAL(8), PVAL(3),PVAL(4),PVAL(7),
|
||||
PVAL(6),PVAL(4),PVAL(1), SVAL(5),SVAL(3),PVAL(7), PVAL(2),PVAL(8),SVAL(9),
|
||||
PVAL(7),PVAL(3),PVAL(8), PVAL(2),PVAL(9),PVAL(4), PVAL(5),SVAL(1),SVAL(6),
|
||||
|
||||
SVAL(8),PVAL(6),PVAL(2), PVAL(9),PVAL(5),SVAL(1), SVAL(7),PVAL(3),SVAL(4),
|
||||
SVAL(3),PVAL(7),SVAL(4), SVAL(8),PVAL(2),PVAL(6), PVAL(9),PVAL(5),PVAL(1),
|
||||
PVAL(1),SVAL(5),SVAL(9), PVAL(7),PVAL(4),PVAL(3), PVAL(8),PVAL(6),PVAL(2),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
SVAL(7),PVAL(8),SVAL(9), SVAL(2),PVAL(3),PVAL(1), PVAL(6),PVAL(5),PVAL(4),
|
||||
PVAL(1),PVAL(3),PVAL(4), PVAL(5),PVAL(6),PVAL(7), PVAL(2),PVAL(9),SVAL(8),
|
||||
SVAL(2),SVAL(5),PVAL(6), SVAL(4),PVAL(9),PVAL(8), PVAL(1),SVAL(7),SVAL(3),
|
||||
|
||||
SVAL(4),PVAL(1),PVAL(3), PVAL(6),SVAL(8),PVAL(5), PVAL(9),SVAL(2),PVAL(7),
|
||||
PVAL(5),SVAL(7),PVAL(2), PVAL(3),SVAL(4),PVAL(9), PVAL(8),PVAL(6),PVAL(1),
|
||||
PVAL(9),SVAL(6),SVAL(8), PVAL(1),PVAL(7),PVAL(2), PVAL(3),SVAL(4),PVAL(5),
|
||||
|
||||
PVAL(8),PVAL(2),PVAL(7), PVAL(9),PVAL(5),SVAL(3), PVAL(4),PVAL(1),SVAL(6),
|
||||
SVAL(3),SVAL(4),PVAL(1), SVAL(7),SVAL(2),SVAL(6), SVAL(5),PVAL(8),PVAL(9),
|
||||
PVAL(6),PVAL(9),PVAL(5), PVAL(8),PVAL(1),PVAL(4), PVAL(7),PVAL(3),PVAL(2),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
PVAL(1),PVAL(2),PVAL(4), SVAL(3),PVAL(9),PVAL(5), SVAL(6),PVAL(7),SVAL(8),
|
||||
PVAL(7),PVAL(8),PVAL(9), PVAL(6),SVAL(4),PVAL(2), PVAL(3),PVAL(5),PVAL(1),
|
||||
PVAL(3),PVAL(6),SVAL(5), PVAL(7),SVAL(1),SVAL(8), PVAL(2),PVAL(4),PVAL(9),
|
||||
|
||||
PVAL(4),PVAL(9),SVAL(1), SVAL(5),SVAL(2),PVAL(6), PVAL(8),SVAL(3),PVAL(7),
|
||||
SVAL(5),PVAL(7),PVAL(8), PVAL(1),PVAL(3),SVAL(9), PVAL(4),PVAL(6),PVAL(2),
|
||||
PVAL(6),SVAL(3),PVAL(2), PVAL(4),PVAL(8),PVAL(7), SVAL(9),SVAL(1),PVAL(5),
|
||||
|
||||
SVAL(8),PVAL(4),SVAL(6), PVAL(9),PVAL(5),PVAL(1), SVAL(7),SVAL(2),PVAL(3),
|
||||
PVAL(9),PVAL(1),PVAL(3), PVAL(2),PVAL(7),SVAL(4), PVAL(5),PVAL(8),PVAL(6),
|
||||
PVAL(2),PVAL(5),PVAL(7), PVAL(8),PVAL(6),PVAL(3), SVAL(1),SVAL(9),PVAL(4),
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
@ -1686,81 +1611,6 @@ tPuzzle mediumPuzzles[] = {
|
|||
PVAL(6),PVAL(9),PVAL(3), PVAL(5),PVAL(7),PVAL(4), PVAL(1),PVAL(8),SVAL(2),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
PVAL(3),SVAL(8),PVAL(4), SVAL(9),PVAL(2),PVAL(5), PVAL(6),PVAL(7),SVAL(1),
|
||||
SVAL(2),PVAL(6),PVAL(1), SVAL(8),PVAL(3),PVAL(7), PVAL(4),PVAL(9),PVAL(5),
|
||||
SVAL(7),PVAL(9),SVAL(5), PVAL(6),PVAL(1),SVAL(4), PVAL(8),SVAL(3),PVAL(2),
|
||||
|
||||
SVAL(5),PVAL(1),PVAL(7), PVAL(2),PVAL(4),PVAL(3), SVAL(9),PVAL(6),SVAL(8),
|
||||
SVAL(6),SVAL(2),PVAL(3), PVAL(1),PVAL(8),PVAL(9), PVAL(5),PVAL(4),SVAL(7),
|
||||
PVAL(9),PVAL(4),PVAL(8), PVAL(7),SVAL(5),SVAL(6), PVAL(1),PVAL(2),PVAL(3),
|
||||
|
||||
PVAL(1),PVAL(3),PVAL(9), PVAL(4),SVAL(7),PVAL(8), PVAL(2),SVAL(5),PVAL(6),
|
||||
SVAL(8),PVAL(7),SVAL(6), SVAL(5),PVAL(9),PVAL(2), PVAL(3),SVAL(1),PVAL(4),
|
||||
PVAL(4),PVAL(5),PVAL(2), PVAL(3),PVAL(6),PVAL(1), PVAL(7),PVAL(8),PVAL(9),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
PVAL(9),PVAL(4),PVAL(7), PVAL(5),PVAL(3),SVAL(8), PVAL(1),PVAL(6),PVAL(2),
|
||||
PVAL(6),PVAL(5),PVAL(8), SVAL(2),PVAL(7),PVAL(1), PVAL(3),SVAL(4),PVAL(9),
|
||||
PVAL(1),SVAL(3),PVAL(2), PVAL(9),PVAL(6),PVAL(4), PVAL(8),SVAL(5),SVAL(7),
|
||||
|
||||
PVAL(2),PVAL(7),SVAL(1), PVAL(6),SVAL(9),PVAL(3), PVAL(5),PVAL(8),SVAL(4),
|
||||
SVAL(5),PVAL(9),SVAL(3), PVAL(8),SVAL(4),PVAL(2), PVAL(6),PVAL(7),PVAL(1),
|
||||
PVAL(4),SVAL(8),SVAL(6), PVAL(1),PVAL(5),SVAL(7), PVAL(9),PVAL(2),SVAL(3),
|
||||
|
||||
PVAL(3),SVAL(6),PVAL(4), SVAL(7),PVAL(1),PVAL(5), SVAL(2),PVAL(9),PVAL(8),
|
||||
SVAL(7),PVAL(2),PVAL(5), PVAL(3),SVAL(8),SVAL(9), PVAL(4),SVAL(1),PVAL(6),
|
||||
SVAL(8),PVAL(1),PVAL(9), PVAL(4),PVAL(2),PVAL(6), PVAL(7),PVAL(3),PVAL(5),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
PVAL(2),PVAL(1),PVAL(8), SVAL(6),SVAL(5),PVAL(3), PVAL(7),PVAL(9),SVAL(4),
|
||||
PVAL(3),PVAL(4),PVAL(7), PVAL(9),PVAL(1),SVAL(8), SVAL(6),PVAL(2),SVAL(5),
|
||||
PVAL(6),PVAL(5),PVAL(9), SVAL(2),PVAL(7),PVAL(4), PVAL(3),SVAL(1),PVAL(8),
|
||||
|
||||
PVAL(5),SVAL(8),PVAL(1), PVAL(4),PVAL(9),PVAL(7), PVAL(2),SVAL(6),PVAL(3),
|
||||
PVAL(4),PVAL(7),SVAL(2), PVAL(8),SVAL(3),PVAL(6), PVAL(1),PVAL(5),PVAL(9),
|
||||
PVAL(9),PVAL(6),SVAL(3), SVAL(5),PVAL(2),PVAL(1), SVAL(8),PVAL(4),PVAL(7),
|
||||
|
||||
PVAL(1),PVAL(3),SVAL(4), PVAL(7),PVAL(6),PVAL(5), PVAL(9),PVAL(8),SVAL(2),
|
||||
SVAL(8),SVAL(9),PVAL(6), PVAL(3),SVAL(4),PVAL(2), PVAL(5),SVAL(7),PVAL(1),
|
||||
SVAL(7),PVAL(2),PVAL(5), PVAL(1),PVAL(8),SVAL(9), PVAL(4),PVAL(3),PVAL(6),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
PVAL(8),SVAL(5),PVAL(7), PVAL(6),SVAL(2),SVAL(9), PVAL(1),PVAL(4),SVAL(3),
|
||||
SVAL(6),PVAL(3),PVAL(1), SVAL(7),PVAL(8),PVAL(4), PVAL(2),PVAL(9),PVAL(5),
|
||||
PVAL(9),PVAL(4),PVAL(2), PVAL(1),PVAL(5),SVAL(3), SVAL(8),PVAL(7),PVAL(6),
|
||||
|
||||
PVAL(4),PVAL(8),PVAL(6), SVAL(2),PVAL(1),PVAL(5), PVAL(9),PVAL(3),PVAL(7),
|
||||
SVAL(5),PVAL(7),SVAL(9), PVAL(8),PVAL(3),PVAL(6), PVAL(4),SVAL(1),SVAL(2),
|
||||
PVAL(2),SVAL(1),PVAL(3), PVAL(4),PVAL(9),PVAL(7), SVAL(6),PVAL(5),PVAL(8),
|
||||
|
||||
SVAL(7),PVAL(9),PVAL(4), SVAL(5),SVAL(6),PVAL(8), PVAL(3),SVAL(2),PVAL(1),
|
||||
PVAL(1),PVAL(6),PVAL(5), SVAL(3),PVAL(4),PVAL(2), PVAL(7),SVAL(8),SVAL(9),
|
||||
PVAL(3),PVAL(2),SVAL(8), PVAL(9),SVAL(7),PVAL(1), PVAL(5),PVAL(6),PVAL(4),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
PVAL(3),PVAL(8),PVAL(1), SVAL(9),SVAL(2),PVAL(4), PVAL(6),SVAL(5),PVAL(7),
|
||||
SVAL(5),PVAL(9),PVAL(4), PVAL(6),PVAL(3),PVAL(7), SVAL(2),PVAL(8),SVAL(1),
|
||||
SVAL(6),SVAL(7),PVAL(2), PVAL(8),SVAL(1),PVAL(5), SVAL(9),SVAL(3),PVAL(4),
|
||||
|
||||
PVAL(7),PVAL(3),PVAL(8), SVAL(1),PVAL(4),SVAL(6), PVAL(5),PVAL(2),PVAL(9),
|
||||
SVAL(4),PVAL(2),SVAL(9), PVAL(5),PVAL(7),SVAL(3), SVAL(8),SVAL(1),PVAL(6),
|
||||
PVAL(1),SVAL(5),PVAL(6), PVAL(2),PVAL(8),PVAL(9), PVAL(7),PVAL(4),PVAL(3),
|
||||
|
||||
PVAL(2),PVAL(1),PVAL(7), SVAL(3),PVAL(6),PVAL(8), PVAL(4),SVAL(9),PVAL(5),
|
||||
PVAL(9),SVAL(6),SVAL(3), PVAL(4),PVAL(5),PVAL(2), PVAL(1),PVAL(7),PVAL(8),
|
||||
SVAL(8),PVAL(4),PVAL(5), SVAL(7),PVAL(9),PVAL(1), PVAL(3),PVAL(6),PVAL(2),
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
@ -2440,6 +2290,21 @@ tPuzzle hardPuzzles[] = {
|
|||
PVAL(2),PVAL(5),SVAL(7), SVAL(1),PVAL(9),PVAL(6), PVAL(4),PVAL(8),SVAL(3),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
PVAL(9),SVAL(1),PVAL(8), SVAL(3),PVAL(6),PVAL(4), PVAL(5),PVAL(2),PVAL(7),
|
||||
PVAL(3),PVAL(2),SVAL(5), PVAL(9),PVAL(8),PVAL(7), PVAL(6),SVAL(4),PVAL(1),
|
||||
PVAL(7),SVAL(4),PVAL(6), SVAL(1),PVAL(5),SVAL(2), PVAL(9),SVAL(8),PVAL(3),
|
||||
|
||||
PVAL(6),PVAL(5),PVAL(2), SVAL(4),PVAL(3),SVAL(8), PVAL(1),PVAL(7),PVAL(9),
|
||||
PVAL(4),PVAL(9),SVAL(7), PVAL(6),PVAL(2),PVAL(1), PVAL(8),PVAL(3),SVAL(5),
|
||||
PVAL(1),PVAL(8),PVAL(3), PVAL(5),SVAL(7),SVAL(9), PVAL(4),PVAL(6),SVAL(2),
|
||||
|
||||
PVAL(2),PVAL(6),SVAL(9), PVAL(8),PVAL(1),SVAL(3), SVAL(7),PVAL(5),PVAL(4),
|
||||
PVAL(8),PVAL(7),PVAL(4), SVAL(2),PVAL(9),PVAL(5), PVAL(3),PVAL(1),SVAL(6),
|
||||
SVAL(5),PVAL(3),SVAL(1), PVAL(7),SVAL(4),PVAL(6), PVAL(2),PVAL(9),PVAL(8),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
PVAL(8),SVAL(6),SVAL(4), SVAL(2),PVAL(9),PVAL(7), PVAL(1),PVAL(5),PVAL(3),
|
||||
|
@ -2470,6 +2335,36 @@ tPuzzle hardPuzzles[] = {
|
|||
SVAL(3),PVAL(2),SVAL(5), PVAL(1),PVAL(7),SVAL(8), PVAL(4),PVAL(6),PVAL(9),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
PVAL(6),PVAL(7),PVAL(3), PVAL(8),PVAL(4),PVAL(2), PVAL(1),SVAL(9),PVAL(5),
|
||||
SVAL(9),PVAL(1),PVAL(5), SVAL(7),PVAL(3),PVAL(6), SVAL(4),PVAL(8),SVAL(2),
|
||||
PVAL(4),PVAL(2),PVAL(8), PVAL(1),PVAL(9),SVAL(5), SVAL(3),PVAL(6),PVAL(7),
|
||||
|
||||
PVAL(3),PVAL(4),PVAL(2), PVAL(9),PVAL(8),PVAL(7), SVAL(6),SVAL(5),PVAL(1),
|
||||
SVAL(8),PVAL(6),SVAL(7), SVAL(5),PVAL(1),PVAL(3), PVAL(9),SVAL(2),PVAL(4),
|
||||
PVAL(5),SVAL(9),SVAL(1), PVAL(2),PVAL(6),SVAL(4), PVAL(8),SVAL(7),PVAL(3),
|
||||
|
||||
PVAL(1),PVAL(5),PVAL(6), PVAL(3),PVAL(2),PVAL(9), PVAL(7),PVAL(4),PVAL(8),
|
||||
PVAL(2),SVAL(3),PVAL(9), PVAL(4),PVAL(7),SVAL(8), PVAL(5),SVAL(1),PVAL(6),
|
||||
SVAL(7),SVAL(8),PVAL(4), SVAL(6),SVAL(5),PVAL(1), PVAL(2),PVAL(3),PVAL(9),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
PVAL(9),PVAL(8),SVAL(6), PVAL(4),SVAL(7),PVAL(5), PVAL(1),PVAL(2),PVAL(3),
|
||||
PVAL(5),PVAL(1),PVAL(7), SVAL(3),PVAL(6),SVAL(2), SVAL(4),SVAL(9),SVAL(8),
|
||||
PVAL(4),PVAL(2),PVAL(3), PVAL(1),PVAL(8),PVAL(9), PVAL(6),PVAL(7),SVAL(5),
|
||||
|
||||
PVAL(2),PVAL(9),SVAL(5), PVAL(6),PVAL(1),PVAL(8), PVAL(3),PVAL(4),PVAL(7),
|
||||
PVAL(6),PVAL(4),PVAL(1), SVAL(5),SVAL(3),PVAL(7), PVAL(2),PVAL(8),SVAL(9),
|
||||
PVAL(7),PVAL(3),PVAL(8), PVAL(2),PVAL(9),PVAL(4), PVAL(5),SVAL(1),SVAL(6),
|
||||
|
||||
SVAL(8),PVAL(6),PVAL(2), PVAL(9),PVAL(5),SVAL(1), SVAL(7),PVAL(3),SVAL(4),
|
||||
SVAL(3),PVAL(7),SVAL(4), SVAL(8),PVAL(2),PVAL(6), PVAL(9),PVAL(5),PVAL(1),
|
||||
PVAL(1),SVAL(5),SVAL(9), PVAL(7),PVAL(4),PVAL(3), PVAL(8),PVAL(6),PVAL(2),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
SVAL(8),SVAL(1),PVAL(7), PVAL(6),PVAL(3),PVAL(9), PVAL(5),SVAL(2),PVAL(4),
|
||||
|
@ -2485,126 +2380,6 @@ tPuzzle hardPuzzles[] = {
|
|||
PVAL(4),PVAL(5),PVAL(6), PVAL(7),PVAL(9),PVAL(8), SVAL(2),PVAL(3),SVAL(1),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
PVAL(4),PVAL(8),PVAL(6), PVAL(5),SVAL(1),PVAL(3), PVAL(7),PVAL(9),SVAL(2),
|
||||
PVAL(5),PVAL(3),PVAL(2), PVAL(9),SVAL(4),PVAL(7), PVAL(6),PVAL(1),PVAL(8),
|
||||
PVAL(9),SVAL(7),PVAL(1), SVAL(6),PVAL(2),SVAL(8), PVAL(5),SVAL(4),PVAL(3),
|
||||
|
||||
PVAL(8),SVAL(2),PVAL(4), PVAL(1),PVAL(7),PVAL(5), PVAL(9),PVAL(3),SVAL(6),
|
||||
PVAL(7),SVAL(6),PVAL(3), PVAL(8),SVAL(9),PVAL(4), PVAL(1),PVAL(2),SVAL(5),
|
||||
SVAL(1),PVAL(5),SVAL(9), PVAL(2),PVAL(3),PVAL(6), PVAL(8),SVAL(7),SVAL(4),
|
||||
|
||||
PVAL(6),PVAL(1),PVAL(7), PVAL(3),PVAL(5),PVAL(2), PVAL(4),PVAL(8),SVAL(9),
|
||||
PVAL(3),PVAL(4),SVAL(8), SVAL(7),SVAL(6),PVAL(9), SVAL(2),PVAL(5),PVAL(1),
|
||||
SVAL(2),PVAL(9),PVAL(5), PVAL(4),PVAL(8),PVAL(1), SVAL(3),PVAL(6),PVAL(7),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
PVAL(6),PVAL(7),SVAL(4), SVAL(5),PVAL(1),PVAL(3), PVAL(8),PVAL(9),PVAL(2),
|
||||
PVAL(2),PVAL(5),PVAL(3), PVAL(7),SVAL(8),PVAL(9), SVAL(6),PVAL(4),PVAL(1),
|
||||
SVAL(1),PVAL(9),PVAL(8), PVAL(4),PVAL(2),SVAL(6), SVAL(3),PVAL(5),PVAL(7),
|
||||
|
||||
PVAL(8),PVAL(3),PVAL(1), PVAL(9),SVAL(5),SVAL(7), SVAL(4),PVAL(2),PVAL(6),
|
||||
PVAL(7),SVAL(4),PVAL(6), SVAL(1),PVAL(3),PVAL(2), PVAL(5),SVAL(8),PVAL(9),
|
||||
SVAL(9),SVAL(2),PVAL(5), SVAL(6),PVAL(4),PVAL(8), PVAL(7),PVAL(1),PVAL(3),
|
||||
|
||||
PVAL(4),PVAL(6),SVAL(9), PVAL(8),PVAL(7),PVAL(1), PVAL(2),PVAL(3),SVAL(5),
|
||||
SVAL(3),PVAL(8),PVAL(7), SVAL(2),PVAL(9),PVAL(5), PVAL(1),SVAL(6),PVAL(4),
|
||||
PVAL(5),SVAL(1),PVAL(2), PVAL(3),PVAL(6),SVAL(4), PVAL(9),SVAL(7),PVAL(8),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
SVAL(8),PVAL(4),PVAL(1), PVAL(6),PVAL(5),SVAL(9), PVAL(3),PVAL(2),SVAL(7),
|
||||
PVAL(3),PVAL(5),PVAL(6), PVAL(7),SVAL(4),PVAL(2), PVAL(8),PVAL(9),PVAL(1),
|
||||
PVAL(2),PVAL(9),PVAL(7), SVAL(8),PVAL(1),SVAL(3), PVAL(5),PVAL(6),PVAL(4),
|
||||
|
||||
SVAL(6),PVAL(2),PVAL(5), PVAL(3),PVAL(9),SVAL(1), SVAL(4),PVAL(7),PVAL(8),
|
||||
SVAL(4),PVAL(8),PVAL(9), PVAL(2),PVAL(7),PVAL(5), PVAL(1),SVAL(3),PVAL(6),
|
||||
PVAL(1),PVAL(7),PVAL(3), PVAL(4),SVAL(8),SVAL(6), PVAL(9),SVAL(5),SVAL(2),
|
||||
|
||||
PVAL(9),PVAL(6),SVAL(8), SVAL(5),SVAL(2),PVAL(4), SVAL(7),PVAL(1),PVAL(3),
|
||||
SVAL(7),SVAL(1),PVAL(2), PVAL(9),SVAL(3),PVAL(8), SVAL(6),PVAL(4),PVAL(5),
|
||||
PVAL(5),SVAL(3),PVAL(4), PVAL(1),PVAL(6),PVAL(7), SVAL(2),PVAL(8),PVAL(9),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
PVAL(9),PVAL(8),SVAL(5), PVAL(6),PVAL(3),SVAL(2), PVAL(4),SVAL(7),SVAL(1),
|
||||
SVAL(4),PVAL(7),SVAL(1), PVAL(8),PVAL(5),PVAL(9), PVAL(2),PVAL(6),PVAL(3),
|
||||
SVAL(3),PVAL(2),SVAL(6), PVAL(7),PVAL(4),PVAL(1), PVAL(9),SVAL(8),PVAL(5),
|
||||
|
||||
PVAL(6),PVAL(5),PVAL(9), PVAL(4),PVAL(1),SVAL(7), SVAL(3),PVAL(2),PVAL(8),
|
||||
PVAL(2),PVAL(1),PVAL(3), PVAL(9),SVAL(6),SVAL(8), PVAL(5),PVAL(4),PVAL(7),
|
||||
PVAL(8),PVAL(4),PVAL(7), SVAL(5),PVAL(2),PVAL(3), SVAL(6),SVAL(1),SVAL(9),
|
||||
|
||||
PVAL(7),SVAL(9),PVAL(4), PVAL(2),SVAL(8),PVAL(5), PVAL(1),PVAL(3),SVAL(6),
|
||||
SVAL(1),PVAL(6),PVAL(8), SVAL(3),PVAL(9),PVAL(4), SVAL(7),PVAL(5),PVAL(2),
|
||||
PVAL(5),PVAL(3),PVAL(2), PVAL(1),SVAL(7),PVAL(6), PVAL(8),PVAL(9),PVAL(4),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
SVAL(8),PVAL(2),PVAL(4), SVAL(1),PVAL(9),PVAL(6), PVAL(7),PVAL(3),PVAL(5),
|
||||
SVAL(7),PVAL(1),SVAL(6), PVAL(2),SVAL(5),SVAL(3), PVAL(8),PVAL(4),PVAL(9),
|
||||
PVAL(3),PVAL(5),PVAL(9), PVAL(4),PVAL(8),PVAL(7), SVAL(1),PVAL(6),SVAL(2),
|
||||
|
||||
PVAL(5),SVAL(3),PVAL(1), PVAL(7),SVAL(4),PVAL(2), PVAL(9),SVAL(8),SVAL(6),
|
||||
SVAL(9),SVAL(6),PVAL(2), SVAL(5),PVAL(3),PVAL(8), PVAL(4),SVAL(7),SVAL(1),
|
||||
PVAL(4),PVAL(8),PVAL(7), SVAL(9),PVAL(6),PVAL(1), PVAL(5),PVAL(2),PVAL(3),
|
||||
|
||||
PVAL(6),PVAL(9),SVAL(5), PVAL(3),PVAL(7),PVAL(4), SVAL(2),PVAL(1),PVAL(8),
|
||||
SVAL(1),SVAL(7),PVAL(8), PVAL(6),PVAL(2),PVAL(9), SVAL(3),PVAL(5),PVAL(4),
|
||||
PVAL(2),PVAL(4),PVAL(3), PVAL(8),PVAL(1),PVAL(5), PVAL(6),SVAL(9),PVAL(7),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
PVAL(7),PVAL(9),PVAL(6), SVAL(1),SVAL(8),PVAL(5), PVAL(2),PVAL(4),PVAL(3),
|
||||
PVAL(1),SVAL(4),SVAL(3), SVAL(6),PVAL(9),PVAL(2), PVAL(7),PVAL(8),PVAL(5),
|
||||
PVAL(8),SVAL(5),PVAL(2), SVAL(7),PVAL(4),PVAL(3), SVAL(6),SVAL(1),PVAL(9),
|
||||
|
||||
PVAL(3),PVAL(8),PVAL(5), PVAL(4),PVAL(2),PVAL(1), SVAL(9),PVAL(7),SVAL(6),
|
||||
PVAL(6),SVAL(2),PVAL(4), PVAL(9),PVAL(5),SVAL(7), PVAL(1),PVAL(3),PVAL(8),
|
||||
PVAL(9),PVAL(1),SVAL(7), PVAL(8),SVAL(3),PVAL(6), PVAL(4),PVAL(5),SVAL(2),
|
||||
|
||||
PVAL(5),PVAL(3),SVAL(9), PVAL(2),SVAL(1),SVAL(4), PVAL(8),PVAL(6),PVAL(7),
|
||||
SVAL(4),SVAL(7),SVAL(8), PVAL(3),PVAL(6),SVAL(9), SVAL(5),PVAL(2),PVAL(1),
|
||||
PVAL(2),PVAL(6),PVAL(1), SVAL(5),PVAL(7),SVAL(8), PVAL(3),PVAL(9),PVAL(4),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
SVAL(2),PVAL(6),PVAL(5), PVAL(1),PVAL(3),SVAL(8), PVAL(9),PVAL(4),SVAL(7),
|
||||
PVAL(3),PVAL(7),SVAL(9), PVAL(5),SVAL(2),PVAL(4), SVAL(1),PVAL(8),PVAL(6),
|
||||
PVAL(4),SVAL(8),PVAL(1), PVAL(9),SVAL(6),PVAL(7), PVAL(2),PVAL(3),PVAL(5),
|
||||
|
||||
SVAL(7),PVAL(5),PVAL(4), SVAL(3),PVAL(1),SVAL(9), PVAL(8),SVAL(6),PVAL(2),
|
||||
PVAL(8),SVAL(1),SVAL(2), PVAL(7),PVAL(4),PVAL(6), SVAL(5),PVAL(9),SVAL(3),
|
||||
PVAL(6),SVAL(9),PVAL(3), PVAL(8),PVAL(5),PVAL(2), PVAL(4),PVAL(7),PVAL(1),
|
||||
|
||||
PVAL(1),SVAL(2),PVAL(8), PVAL(4),SVAL(7),PVAL(3), PVAL(6),SVAL(5),PVAL(9),
|
||||
PVAL(5),PVAL(4),SVAL(7), PVAL(6),PVAL(9),PVAL(1), PVAL(3),SVAL(2),PVAL(8),
|
||||
PVAL(9),PVAL(3),SVAL(6), PVAL(2),SVAL(8),PVAL(5), PVAL(7),PVAL(1),SVAL(4),
|
||||
}
|
||||
},
|
||||
{
|
||||
{
|
||||
PVAL(3),PVAL(6),PVAL(7), SVAL(8),PVAL(5),PVAL(9), PVAL(2),SVAL(1),PVAL(4),
|
||||
PVAL(1),SVAL(5),PVAL(8), PVAL(2),SVAL(4),SVAL(7), PVAL(9),PVAL(3),PVAL(6),
|
||||
PVAL(9),PVAL(2),PVAL(4), SVAL(3),PVAL(1),SVAL(6), PVAL(5),SVAL(7),PVAL(8),
|
||||
|
||||
SVAL(4),PVAL(1),PVAL(5), PVAL(7),PVAL(6),PVAL(8), PVAL(3),SVAL(9),PVAL(2),
|
||||
SVAL(2),SVAL(3),PVAL(6), SVAL(1),SVAL(9),PVAL(4), PVAL(7),PVAL(8),PVAL(5),
|
||||
PVAL(8),PVAL(7),SVAL(9), PVAL(5),PVAL(2),PVAL(3), PVAL(4),PVAL(6),SVAL(1),
|
||||
|
||||
PVAL(6),SVAL(9),PVAL(2), PVAL(4),PVAL(3),SVAL(1), SVAL(8),PVAL(5),PVAL(7),
|
||||
SVAL(7),PVAL(4),SVAL(3), SVAL(6),PVAL(8),PVAL(5), PVAL(1),PVAL(2),PVAL(9),
|
||||
SVAL(5),PVAL(8),PVAL(1), PVAL(9),PVAL(7),SVAL(2), PVAL(6),SVAL(4),SVAL(3),
|
||||
}
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -278,9 +278,9 @@ void displayInstructions(void)
|
|||
"Press O to change options.\n"
|
||||
"Press R to start a new game.\n"
|
||||
"Press H to see this info again.\n"
|
||||
"\n"
|
||||
" Press O to change options or any other\n"
|
||||
" key to start",
|
||||
"Press U to undo your last move.\n"
|
||||
" Press O to change options now or any\n"
|
||||
" other key to start",
|
||||
difficultyString(gameOptions.difficulty),
|
||||
(gameOptions.showInvalid ? "On" : "Off"),
|
||||
(gameOptions.showWrong ? "On" : "Off"));
|
||||
|
@ -663,6 +663,15 @@ bool playGame(void)
|
|||
case '(':
|
||||
shouldNotBeep = toggleScratchValueAtPos(cursorX, cursorY, 9);
|
||||
break;
|
||||
|
||||
case 'u':
|
||||
case 'U':
|
||||
shouldNotBeep = undoLastMove();
|
||||
break;
|
||||
|
||||
default:
|
||||
shouldNotBeep = false;
|
||||
break;
|
||||
}
|
||||
if (!shouldNotBeep) {
|
||||
printf("\007");
|
||||
|
|
Loading…
Reference in New Issue