Jump to content

15 puzzle game: Difference between revisions

m
Line 1,735:
 
<lang easyprog.online>len f[] 16
subr initvars
#
time0# = time
subr draw
findone = 0
.
func draw . .
color 353
move 0 0
Line 1,758 ⟶ 1,761:
.
.
subrfunc init . .
call drawinitvars
for i range 16
f[i] = i + 1
.
# shuffle
for i = 14 downto 1
r = random (i + 1)
swap f[r] f[i]
.
# make it solvable
inv = 0
for i range 15
Line 1,777 ⟶ 1,783:
swap f[0] f[1]
.
time0# = time
fin = 0
textsize 12
call draw
.
func move_tile . .
c = round (mouse_x / 25 - 0.5)
r = round (mouse_y / 25 - 0.5)
i = r * 4 + c
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]
.
subr call draw
findone = 1
for i range 15
if f[i] > f[i + 1]
findone = 0
.
.
if findone = 1
color 242131
move 0 0
rect 100 10050
textsize 10
color 797
move 5 10
text "Well done!"
move 5 25
text "Time: " & round (time - time0#)
.
.
on mouse_down
if findone = 1
call init
else
call move_tile
c = round (mouse_x / 25 - 0.5)
r = round (mouse_y / 25 - 0.5)
i = r * 4 + c
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
fin = 1
for i range 15
if f[i] > f[i + 1]
fin = 0
.
.
if fin = 1
color 242
move 0 0
rect 100 100
textsize 10
color 797
move 5 10
text "Well done!"
move 5 25
text "Time: " & round (time - time0#)
.
.
.
2,083

edits

Cookies help us deliver our services. By using our services, you agree to our use of cookies.