15 puzzle game: Difference between revisions
Content added Content deleted
(Last fix C#. Ideal now :D) |
Basicgames (talk | contribs) |
||
Line 4,617: | Line 4,617: | ||
(aref *board* (first zpos) (second zpos)))))) |
(aref *board* (first zpos) (second zpos)))))) |
||
(format t "You win!~%"))</syntaxhighlight> |
(format t "You win!~%"))</syntaxhighlight> |
||
=={{header|Craft Basic}}== |
|||
[[File:15 puzzle craft basic.png|thumb]] |
|||
<syntaxhighlight lang="basic">'15 Puzzle example game |
|||
'written in Craft Basic |
|||
'by Gemino Smothers 2023 |
|||
'www.basicgames.xyz |
|||
define size = 16, correct = 0, moves = 0 |
|||
define click = 0, start = 0 |
|||
dim list[size] |
|||
gosub setup |
|||
gosub game |
|||
end |
|||
sub setup |
|||
title "15 Puzzle" |
|||
resize 0, 0, 170, 250 |
|||
center |
|||
bgcolor 0,128,0 |
|||
cls |
|||
let x = 0 |
|||
let y = 30 |
|||
let i = 0 |
|||
do |
|||
if x = 112 then |
|||
let x = 0 |
|||
let y = y + 25 |
|||
endif |
|||
let x = x + 28 |
|||
formid i + 1 |
|||
formtext "" |
|||
buttonform x, y, 25, 20 |
|||
let i = i + 1 |
|||
loop i < size |
|||
formid 17 |
|||
formtext " |
|||
staticform 40, 130, 100, 20 |
|||
bgcolor 0, 128, 0 |
|||
fgcolor 255, 255, 0 |
|||
colorform |
|||
formid 18 |
|||
formtext "" |
|||
staticform 40, 150, 100, 20 |
|||
bgcolor 0, 128, 0 |
|||
fgcolor 255, 255, 0 |
|||
colorform |
|||
formid 19 |
|||
formtext "New" |
|||
buttonform 1, 1, 50, 20 |
|||
formid 20 |
|||
formtext "Help" |
|||
buttonform 55, 1, 50, 20 |
|||
formid 21 |
|||
formtext "About" |
|||
buttonform 110, 1, 50, 20 |
|||
formid 22 |
|||
formtext "Welcome." |
|||
staticform 40, 170, 120, 20 |
|||
bgcolor 0, 128, 0 |
|||
fgcolor 255, 255, 0 |
|||
colorform |
|||
return |
|||
sub shuffle |
|||
let start = 1 |
|||
formid 22 |
|||
formtext "shuffling..." |
|||
updateform |
|||
let i = 0 |
|||
do |
|||
formid i + 1 |
|||
formtext "" |
|||
updateform |
|||
let list[i] = 0 |
|||
let i = i + 1 |
|||
loop i < size |
|||
let i = 0 |
|||
do |
|||
let f = 0 |
|||
do |
|||
let n = ( int: (rnd) * 14 ) + 1 |
|||
let s = 0 |
|||
let c = 0 |
|||
do |
|||
if n = list[c] then |
|||
let s = 1 |
|||
break |
|||
endif |
|||
let c = c + 1 |
|||
loop c < i |
|||
if s = 0 and list[i] = 0 then |
|||
formid i + 1 |
|||
formtext n |
|||
updateform |
|||
let list[i] = n |
|||
let i = i + 1 |
|||
endif |
|||
let f = f + 1 |
|||
wait |
|||
loop f = < size - 1 |
|||
loop i < size - 1 |
|||
formid 22 |
|||
formtext "" |
|||
updateform |
|||
return |
|||
sub game |
|||
do |
|||
let click = (forms) |
|||
if click > 0 and click < 17 and start = 1 then |
|||
let moves = moves + 1 |
|||
formid 17 |
|||
formtext "Moves: ", moves |
|||
updateform |
|||
gosub checkspaces |
|||
gosub checkorder |
|||
endif |
|||
if click = 19 then |
|||
gosub shuffle |
|||
let moves = 0 |
|||
let correct = 0 |
|||
formid 17 |
|||
formtext "Moves:" |
|||
updateform |
|||
formid 18 |
|||
formtext "Correct:" |
|||
updateform |
|||
endif |
|||
if click = 20 then |
|||
alert "Click the numbers to move them in the correct order." |
|||
endif |
|||
if click = 21 then |
|||
alert "15 Puzzle - by Gemino Smothers 2023 - www.basicgames.xyz |
|||
endif |
|||
button k, 27 |
|||
wait |
|||
loop k = 0 |
|||
return |
|||
sub checkspaces |
|||
let click = click - 1 |
|||
let top = click - 4 |
|||
let right = click + 1 |
|||
let bottom = click + 4 |
|||
let left = click - 1 |
|||
if top >= 0 then |
|||
if list[top] = 0 then |
|||
let n = top |
|||
gosub swap |
|||
endif |
|||
endif |
|||
if right <= size - 1 then |
|||
if list[right] = 0 then |
|||
let n = right |
|||
gosub swap |
|||
endif |
|||
endif |
|||
if bottom <= size - 1 then |
|||
if list[bottom] = 0 then |
|||
let n = bottom |
|||
gosub swap |
|||
endif |
|||
endif |
|||
if left >= 0 then |
|||
if list[left] = 0 then |
|||
let n = left |
|||
gosub swap |
|||
endif |
|||
endif |
|||
return |
|||
sub swap |
|||
let t = list[click] |
|||
let list[n] = list[click] |
|||
let list[click] = 0 |
|||
let click = click + 1 |
|||
formid click |
|||
formtext "" |
|||
updateform |
|||
let n = n + 1 |
|||
formid n |
|||
formtext t |
|||
updateform |
|||
return |
|||
sub checkorder |
|||
let correct = 0 |
|||
let i = 0 |
|||
do |
|||
if list[i] = i + 1 then |
|||
let correct = correct + 1 |
|||
formid 18 |
|||
formtext "Correct: ", correct |
|||
updateform |
|||
endif |
|||
let i = i + 1 |
|||
loop i < size - 1 |
|||
if correct = size - 1 then |
|||
alert "You win! Moves: ", moves |
|||
endif |
|||
return</syntaxhighlight> |
|||
=={{header|EasyLang}}== |
=={{header|EasyLang}}== |