15 puzzle game: Difference between revisions

Line 5,195:
=={{header|EasyLang}}==
 
[https://easylang.devonline/apps/15-puzzle.html Run it]
 
<syntaxhighlight lang="text">
Line 5,203:
len f[] 16
proc draw . .
clear
for i = 1 to 16
h = f[i]
if h < 16
x = (i - 1) mod 4 * 24 + 3
y = (i - 1) div 4 * 24 + 3
color 210
move x y
rect 22 22
move x + 4 y + 6
if h < 10
move x + 6 y + 6
.
color 885
text h
.
color 885
.
text .h
.
.
.
global done .
proc smiley . .
s = 3.5
x = 86
y = 86
move x y
color 983
circle 2.8 * s
color 000
move x - s y - s
circle s / 3
move x + 3.5 y - 3.5
circle s / 3
linewidth s / 3
curve [ x - s y + s x y + 2 * s x + s y + s ]
.
proc init . .
done = 0
for i = 1 to 16
f[i] = i
.
# shuffle
for i = 15 downto 2
r = random i
swap f[r] f[i]
.
# make it solvable
inv = 0
for i = 1 to 15
for j = 1 to i - 1
if f[j] > f[i]
inv += 1
.
.
.
.
if inv mod 2 <> 0
if inv mod 2 swap<> f[1] f[2]0
swap f[1] f[2]
.
.
textsize 12
call draw
.
proc move_tile . .
c = mouse_x div 25
r = mouse_y div 25
i = r * 4 + c + 1
if c > 0 and f[i - 1] = 16
swap f[i] f[i - 1]
elif r > 0 and f[i - 4] = 16
swap f[i] f[i - 4]
elif r < 3 and f[i + 4] = 16
swap f[i] f[i + 4]
elif c < 3 and f[i + 1] = 16
swap f[i] f[i + 1]
.
call draw
for idone = 1 to 15
for if f[i] >= f[i1 +to 1]15
if f[i] > f[i + return1]
.done = 0
.
.
done = 1
if timerdone 0.5= 1
clear
move x10 y30
text "Well done = 2!"
.
.
on mouse_down
if done = 01
call move_tileinit
else
elif done = 3
call initmove_tile
.
.
on timer
if done = 1
smiley
done = 2
timer 2
else
done = 3
.
.
call init
</syntaxhighlight>
 
Line 11,980 ⟶ 11,960:
 
[https://youtu.be/IZqpYctv8Zs CalmoSoft Fifteen Puzzle Game in Ring - video]
 
[[Files:CalmoSoftFifteenPuzzle.png]]
 
=={{header|Ruby}}==
2,468

edits