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
_new = 1
_restrt
_help
_end
_down = 1
_down = 1
_right
_right
_up
_up
_left
_left
_new = 100
_restrt
_help
_end
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 t, r, rc = (tag mod 10)
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 : t = board[rc]
case _up
for r = rc to 12 step 4
for r = rc to 12 step 4
board[r] = board[r+4]
swap board[r], board[r+4]
next
next
board[r] = t
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] = board[r-4]
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 > _end then fn move( tag ) else fn ask( tag )
case _btnClick : if tag < _new then fn move( tag ) else fn ask( tag )
case _windowWillClose : end
case _windowWillClose : end
end select
end select