16 puzzle game: Difference between revisions

Content added Content deleted
Line 245: Line 245:


void local fn move( tag as int )
void local fn move( tag as int )
int r, rc = (tag mod 10)
int r, a, b, c, rc = (tag mod 10)
select tag / 10
select tag / 10
case _left : rc*=4
case _up : a = rc : b = a + 8 : c = +4
mid$(board, rc-3, 4) = mid$(board, rc-2, 3) + mid$(board,rc -3,1)
case _right : a = rc * 4 : b = a - 2 : c = -1
case _right : rc*=4
case _down : a = rc + 12 : b = a - 8 : c = -4
mid$(board, rc-3, 4) = mid$(board, rc, 1) + mid$(board, rc - 3, 3)
case _left : a = rc * 4 - 3 : b = a + 2 : c = +1
case _up
for r = rc to 12 step 4
swap board[r], board[r+4]
next
case _down
for r = rc + 12 to 5 step -4
swap board[r], board[r-4]
next
end select
end select
for r = a to b step c
swap board[r], board[r+c]
next
if board == winBoard then window 1, @"!!! YOU WON !!!" : text,,fn colorRed
if board == winBoard then window 1, @"!!! YOU WON !!!" : text,,fn colorRed
fn drawBoard
fn drawBoard