def scramble
srand()
pos = 0
0.upto(15) do |i|
if @board[i].nil?
pos = i
break
end
end
0.upto(SCRAMBLE_MOVES) do
dir = rand(4).to_i
x = y = 0
if (dir == 0) && (pos > 3)
y = -1
elsif (dir == 1) && (pos < 12)
y = 1
elsif (dir == 2) && ((pos % 4) != 0)
x = -1
elsif (dir == 3) && ((pos % 4) != 3)
x = 1
else
retry
end
oldpos = pos + y * 4 + x;
@board[pos] = @board[oldpos];
@board[oldpos] = nil
@board[pos].pos = pos
@board[pos].move(-x * PIECE_SIZE, -y * PIECE_SIZE)
@canvas.update_now()
pos = oldpos
end
end