15 puzzle game: Difference between revisions
Content added Content deleted
m (Meh... removed github link - it's either the same as this code, or irrelevant to this code, not enough information yet to distinguish which...) |
No edit summary |
||
Line 3: | Line 3: | ||
=={{header|Ring}}== |
=={{header|Ring}}== |
||
CalmoSoft [[wp:15_puzzle|Fifteen Puzzle Game]] written in Ring Programming Language (http://ring-lang.net) |
CalmoSoft [[wp:15_puzzle|Fifteen Puzzle Game]] written in Ring Programming Language (http://ring-lang.net) |
||
Output: |
|||
[[https://www.dropbox.com/s/a3tier1ztf5pyll/CalmoSoftFifteenPuzzleGame.jpg?dl=0 image]] |
|||
The code: |
The code: |
Revision as of 14:59, 6 February 2016
15 puzzle game is a draft programming task. It is not yet considered ready to be promoted as a complete task, for reasons that should be found in its talk page.
Ring
CalmoSoft Fifteen Puzzle Game written in Ring Programming Language (http://ring-lang.net)
Output: [image]
The code:
load "guilib.ring" App1 = new qApp { rnd = [] empty = 16 win1 = new qWidget() { move(0,0) resize(350,400) setWindowTitle("CalmoSoft Fifteen Puzzle Game") new qPushButton(win1) { setgeometry(100,220,120,30) settext("Scramble") setclickevent("scramble()") } btn1 = new qPushButton(win1) { setgeometry(100,100,30,30) setclickevent("moveTile(1)") } btn2 = new qPushButton(win1) { setgeometry(130,100,30,30) setclickevent("moveTile(2)") } btn3 = new qPushButton(win1) { setgeometry(160,100,30,30) setclickevent("moveTile(3)") } btn4 = new qPushButton(win1) { setgeometry(190,100,30,30) setclickevent("moveTile(4)") } btn5 = new qPushButton(win1) { setgeometry(100,130,30,30) setclickevent("moveTile(5)") } btn6 = new qPushButton(win1) { setgeometry(130,130,30,30) setclickevent("moveTile(6)") } btn7 = new qPushButton(win1) { setgeometry(160,130,30,30) setclickevent("moveTile(7)") } btn8 = new qPushButton(win1) { setgeometry(190,130,30,30) setclickevent("moveTile(8)") } btn9 = new qPushButton(win1) { setgeometry(100,160,30,30) setclickevent("moveTile(9)") } btn10 = new qPushButton(win1) { setgeometry(130,160,30,30) setclickevent("moveTile(10)") } btn11 = new qPushButton(win1) { setgeometry(160,160,30,30) setclickevent("moveTile(11)") } btn12 = new qPushButton(win1) { setgeometry(190,160,30,30) setclickevent("moveTile(12)") } btn13 = new qPushButton(win1) { setgeometry(100,190,30,30) setclickevent("moveTile(13)") } btn14 = new qPushButton(win1) { setgeometry(130,190,30,30) setclickevent("moveTile(14)") } btn15 = new qPushButton(win1) { setgeometry(160,190,30,30) setclickevent("moveTile(15)") } btn16 = new qPushButton(win1) { setgeometry(190,190,30,30) settext("") setclickevent("moveTile(16)") } resetbtn = new qPushButton(win1) { setgeometry(100,250,120,30) settext("Reset") setclickevent("resetTiles()") } button = [btn1, btn2, btn3, btn4, btn5, btn6, btn7, btn8, btn9, btn10, btn11, btn12, btn13, btn14, btn15, btn16] for i = 1 to 15 button[i] {settext(string(i))} next show() } exec() } func scramble for n= 1 to 300 nr=random(16) up = (empty = (nr - 4)) down = (empty = (nr + 4)) left = ((empty = (nr - 1)) and ((nr % 4) != 1)) right = ((empty = (nr + 1)) and ((nr % 4) != 0)) move = up or down or left or right if move = 1 and (nr != 0) button[nr] { temp = text() } button[empty] {settext(temp)} button[nr] {settext("")} empty = nr ok next func moveTile nr2 up = (empty = (nr2 - 4)) down = (empty = (nr2 + 4)) left = ((empty = (nr2- 1)) and ((nr2 % 4) != 1)) right = ((empty = (nr2 + 1)) and ((nr2 % 4) != 0)) move = up or down or left or right if move = 1 button[nr2] { temp2 = text() } button[empty] {settext(temp2)} button[nr2] {settext("")} empty = nr2 ok func resetTiles empty = 16 for i = 1 to 15 button[i] {settext(string(i))} next button[16] {settext("")}