109 lines
3.8 KiB
Text
109 lines
3.8 KiB
Text
load "guilib.ring"
|
|
load "stdlib.ring"
|
|
|
|
size = 3
|
|
flip = newlist(size,size)
|
|
board = newlist(size,size)
|
|
colflip = list(size)
|
|
rowflip = list(size)
|
|
|
|
new qapp
|
|
{
|
|
win1 = new qwidget() {
|
|
setwindowtitle("Flipping bits game")
|
|
setgeometry(465,115,800,600)
|
|
label1 = new qlabel(win1) {
|
|
setgeometry(285,60,120,40)
|
|
settext("Target")
|
|
}
|
|
label2 = new qlabel(win1) {
|
|
setgeometry(285,220,120,40)
|
|
settext("Board")
|
|
}
|
|
for n = 1 to size
|
|
for m = 1 to size
|
|
flip[n][m] = new qpushbutton(win1) {
|
|
setgeometry(200+n*40,60+m*40,40,40)
|
|
settext(string(random(1)))
|
|
}
|
|
next
|
|
next
|
|
for n = 1 to size
|
|
for m = 1 to size
|
|
board[n][m] = new qpushbutton(win1) {
|
|
setgeometry(200+n*40,260+m*40,40,40)
|
|
setclickevent("draw(" + n + "," + m +")")
|
|
}
|
|
next
|
|
next
|
|
for n = 1 to size
|
|
colflip[n]= new qpushbutton(win1) {
|
|
setgeometry(200+n*40,260,40,40)
|
|
settext("Go")
|
|
setclickevent("coldraw(" + n + ")")
|
|
}
|
|
next
|
|
for n = 1 to size
|
|
rowflip[n]= new qpushbutton(win1) {
|
|
setgeometry(200,260+n*40,40,40)
|
|
settext("Go")
|
|
setclickevent("rowdraw(" + n + ")")
|
|
}
|
|
next
|
|
scramblebutton = new qpushbutton(win1) {
|
|
setgeometry(240,460,120,40)
|
|
settext("Scramble Board")
|
|
setclickevent("scramble(flip)")
|
|
}
|
|
scramblebegin(flip)
|
|
show()
|
|
}
|
|
exec()
|
|
}
|
|
|
|
func coldraw(n)
|
|
for row = 1 to size
|
|
board[n][row] {temp = text()}
|
|
if temp = "0"
|
|
board[n][row].settext("1")
|
|
else
|
|
board[n][row].settext("0")
|
|
ok
|
|
next
|
|
|
|
func rowdraw(n)
|
|
for col = 1 to size
|
|
board[col][n] {temp = text()}
|
|
if temp = "0"
|
|
board[col][n].settext("1")
|
|
else
|
|
board[col][n].settext("0")
|
|
ok
|
|
next
|
|
|
|
func scramble(flip)
|
|
for col = 1 to size
|
|
for row = 1 to size
|
|
flip[col][row]{temp = text()}
|
|
board[col][row].settext(temp)
|
|
next
|
|
next
|
|
for mix = 1 to size*10
|
|
colorrow = random(1) + 1
|
|
colrow = random(size-1) + 1
|
|
if colorrow = 1
|
|
rc = "coldraw"
|
|
else
|
|
rc = "rowdraw"
|
|
ok
|
|
go = rc + "(" + colrow + ")"
|
|
eval(go)
|
|
next
|
|
|
|
func scramblebegin(flip)
|
|
for col = 1 to size
|
|
for row = 1 to size
|
|
flip[col][row]{temp = text()}
|
|
board[col][row].settext(temp)
|
|
next
|
|
next
|