16 puzzle game: Difference between revisions
Content added Content deleted
Line 192: | Line 192: | ||
<syntaxhighlight lang="future basic"> |
<syntaxhighlight lang="future basic"> |
||
begin enum |
begin enum |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
_down = 1 |
_down = 1 |
||
_right |
_right |
||
_up |
_up |
||
_left |
_left |
||
⚫ | |||
⚫ | |||
⚫ | |||
⚫ | |||
end enum |
end enum |
||
str63 board, startPos, winBoard |
str63 board, startPos, winBoard |
||
Line 245: | Line 245: | ||
void local fn move( tag as int ) |
void local fn move( tag as int ) |
||
int |
int r, rc = (tag mod 10) |
||
select tag / 10 |
select tag / 10 |
||
case _left : rc*=4 |
case _left : rc*=4 |
||
Line 251: | Line 251: | ||
case _right : rc*=4 |
case _right : rc*=4 |
||
mid$(board, rc-3, 4) = mid$(board, rc, 1) + mid$(board, rc - 3, 3) |
mid$(board, rc-3, 4) = mid$(board, rc, 1) + mid$(board, rc - 3, 3) |
||
case _up |
case _up |
||
for r = rc to 12 step 4 |
for r = rc to 12 step 4 |
||
board[r] |
swap board[r], board[r+4] |
||
next |
next |
||
case _down |
|||
case _down : t = board[rc] |
|||
t = board[rc+12] |
|||
for r = rc + 12 to 5 step -4 |
for r = rc + 12 to 5 step -4 |
||
board[r] |
swap board[r], board[r-4] |
||
next |
next |
||
board[r] = t |
|||
end select |
end select |
||
if board == winBoard then window 1, @"!!! YOU WON !!!" : text,,fn colorRed |
if board == winBoard then window 1, @"!!! YOU WON !!!" : text,,fn colorRed |
||
Line 302: | Line 299: | ||
void local fn doDialog(ev as long, tag as long) |
void local fn doDialog(ev as long, tag as long) |
||
select ev |
select ev |
||
case _btnClick : if tag |
case _btnClick : if tag < _new then fn move( tag ) else fn ask( tag ) |
||
case _windowWillClose : end |
case _windowWillClose : end |
||
end select |
end select |