~mdw
/
sgt
/
puzzles
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Lee Dowling points out that duplicating the entire grid data
[sgt/puzzles]
/
unfinished
/
sokoban.c
diff --git
a/unfinished/sokoban.c
b/unfinished/sokoban.c
index
bb2e68f
..
c9cf2de
100644
(file)
--- a/
unfinished/sokoban.c
+++ b/
unfinished/sokoban.c
@@
-99,8
+99,8
@@
#define BARREL_LABEL(b) ( (b)>='A'&&(b)<='Z' ? (b) : \
(b)>=1 && (b)<=26 ? (b)+('A'-1) : 0 )
#define BARREL_LABEL(b) ( (b)>='A'&&(b)<='Z' ? (b) : \
(b)>=1 && (b)<=26 ? (b)+('A'-1) : 0 )
-#define DX(d) (d == 0 ? -1 : d == 2 ? +1 : 0)
;
-#define DY(d) (d == 1 ? -1 : d == 3 ? +1 : 0)
;
+#define DX(d) (d == 0 ? -1 : d == 2 ? +1 : 0)
+#define DY(d) (d == 1 ? -1 : d == 3 ? +1 : 0)
#define FLASH_LENGTH 0.3F
#define FLASH_LENGTH 0.3F
@@
-907,6
+907,11
@@
static char *solve_game(game_state *state, game_state *currstate,
return NULL;
}
return NULL;
}
+static int game_can_format_as_text_now(game_params *params)
+{
+ return TRUE;
+}
+
static char *game_text_format(game_state *state)
{
return NULL;
static char *game_text_format(game_state *state)
{
return NULL;
@@
-1039,7
+1044,7
@@
int move_type(game_state *state, int dx, int dy)
static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds,
int x, int y, int button)
{
static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds,
int x, int y, int button)
{
- int dx
, dy
;
+ int dx
=0, dy=0
;
char *move;
/*
char *move;
/*
@@
-1066,9
+1071,23
@@
static char *interpret_move(game_state *state, game_ui *ui, game_drawstate *ds,
dx = -1, dy = +1;
else if (button == (MOD_NUM_KEYPAD | '3'))
dx = +1, dy = +1;
dx = -1, dy = +1;
else if (button == (MOD_NUM_KEYPAD | '3'))
dx = +1, dy = +1;
+ else if (button == LEFT_BUTTON)
+ {
+ if(x < COORD(state->px))
+ dx = -1;
+ else if (x > COORD(state->px + 1))
+ dx = 1;
+ if(y < COORD(state->py))
+ dy = -1;
+ else if (y > COORD(state->py + 1))
+ dy = 1;
+ }
else
return NULL;
else
return NULL;
+ if((dx == 0) && (dy == 0))
+ return(NULL);
+
if (move_type(state, dx, dy) < 0)
return NULL;
if (move_type(state, dx, dy) < 0)
return NULL;
@@
-1429,7
+1448,7
@@
const struct game thegame = {
dup_game,
free_game,
FALSE, solve_game,
dup_game,
free_game,
FALSE, solve_game,
- FALSE, game_text_format,
+ FALSE, game_
can_format_as_text_now, game_
text_format,
new_ui,
free_ui,
encode_ui,
new_ui,
free_ui,
encode_ui,