2048: Difference between revisions

Content added Content deleted
Line 6,425: Line 6,425:
size = 4
size = 4
limit = 6
limit = 6
num = 0
numbers = [2,4,8,16,32,64]
flag = 0
x1 = 0
x2 = 0
y1 = 0
y2 = 0
button = newlist(size,size)
button = newlist(size,size)
moveleft = []
moveleft = []
Line 6,431: Line 6,436:
moveup = []
moveup = []
movedown = []
movedown = []
myfilter2 = null
myfilter3 = null
winheight = 0
winwidth = 0


app = new qApp {
app = new qApp {
Line 6,436: Line 6,445:
win = new qWidget() {
win = new qWidget() {
setWindowTitle('2048 Game')
setWindowTitle('2048 Game')
setminimumwidth(300)
setminimumheight(300)
move(490,100)
move(490,100)
resize(450,500)
for n = 1 to size
for n = 1 to size
for m = 1 to size
for m = 1 to size
col = 100 + n*40
button[n][m] = new MyButton(win)
row = 100 + m*40
next
next
arrow = new qLineedit(win)
mup = new qPushButton(win)
mdown = new qPushButton(win)
mleft = new qPushButton(win)
mright = new qPushButton(win)
newgame = new qPushButton(win)
myfilter = new qallevents(win)
myfilter.setResizeEvent("pResize()")
installeventfilter(myfilter)
myfilter3 = new qAllEvents(win) {
setMouseButtonPressEvent("pPress()")
setMouseButtonReleaseEvent("pRelease()")}
installeventfilter(myfilter3)
pResize()
show()
}
exec()
}

func pPress()
x1 = myfilter3.getglobalx()
y1 = myfilter3.getglobaly()
func pRelease()
x2 = myfilter3.getglobalx()
y2 = myfilter3.getglobaly()
xx1 = floor(x1/floor(winwidth/4)) - 2
xx2 = floor(x2/floor(winwidth/4)) - 2
yy1 = floor(y1/floor(winheight/8)) - 1
yy2 = floor(y2/floor(winheight/8)) - 1
bool = (yy1 <= size) and (yy2 <= size)
if (yy1 = yy2) and (xx2 < xx1) and bool
pleft()
ok
if (yy1 = yy2) and (xx1 < xx2) and bool
pright()
ok
if (xx1 = xx2) and (yy2 < yy1) and bool
pup()
ok
if (xx1 = xx2) and (yy1 < yy2) and bool
pdown()
ok

func pResize()
winwidth = win.width()
winheight = win.height()
arrow.close()
arrow = new qLineedit(win) {
setGeometry(0,7*floor(winheight/8),winwidth,floor(winheight/8))
arrow.setfocus(true)
myfilter2 = new qAllEvents(win) {
setkeypressevent("keypress()")
}
installeventfilter(myfilter2)
}
for n = 1 to size
for m = 1 to size
button[n][m].close()
col = (n-1)*floor(winwidth/4)
row = (m-1)*floor(winheight/8)
fontsize = 10 + (winheight/16)
fontsize2 = 10 + (winheight/50)
button[n][m] = new MyButton(win) {
button[n][m] = new MyButton(win) {
setGeometry(col,row,40,40)
setGeometry(col,row,winwidth/4,winheight/8)
setFont(new qFont("Verdana",fontsize,100,0))
setalignment(Qt_AlignHCenter | Qt_AlignVCenter)
setstylesheet('background-color:orange')
setstylesheet('background-color:orange')
show()
}
}
next
next
next
next
newgame.close()
newgame = new qPushButton(win) {
newgame = new qPushButton(win) {
setGeometry(180,380,80,40)
setGeometry(0,7*floor(winheight/8),winwidth,floor(winheight/8))
setFont(new qFont("Verdana",fontsize2,100,0))
setstylesheet('background-color:violet')
setstylesheet('background-color:violet')
settext('New Game')
settext('New Game')
setClickEvent('pbegin()')
setClickEvent('pbegin()')
show()
}
}
mup.close()
mup = new qPushButton(win) {
mup = new qPushButton(win) {
setGeometry(140,300,40,40)
setGeometry(0,5*floor(winheight/8),winwidth/4,floor(winheight/8))
setFont(new qFont("Verdana",fontsize2,100,0))
settext('up')
settext('up')
setClickEvent('pup()')
setClickEvent('pup()')
show()
}
}
mdown.close()
mdown = new qPushButton(win) {
mdown = new qPushButton(win) {
setGeometry(180,300,40,40)
setGeometry(floor(winwidth/4),5*floor(winheight/8),winwidth/4,floor(winheight/8))
setFont(new qFont("Verdana",fontsize2,100,0))
settext('down')
settext('down')
setClickEvent('pdown()')
setClickEvent('pdown()')
show()
}
}
mleft.close()
mleft = new qPushButton(win) {
mleft = new qPushButton(win) {
setGeometry(220,300,40,40)
setGeometry(2*floor(winwidth/4),5*floor(winheight/8),winwidth/4,floor(winheight/8))
setFont(new qFont("Verdana",fontsize2,100,0))
settext('left')
settext('left')
setClickEvent('pleft()')
setClickEvent('pleft()')
show()
}
}
mright.close()
mright = new qPushButton(win) {
mright = new qPushButton(win) {
setGeometry(260,300,40,40)
setGeometry(3*floor(winwidth/4),5*floor(winheight/8),winwidth/4,floor(winheight/8))
setFont(new qFont("Verdana",fontsize2,100,0))
settext('right')
settext('right')
setClickEvent('pright()')
setClickEvent('pright()')
show()
}
}
win.show()
pbegin()
pbegin()

show()
func keypress()
}
nKey = myfilter2.getkeycode()
exec()
switch nKey
}
on 16777234 pleft()
on 16777236 pright()
on 16777235 pup()
on 16777237 pdown()
off


func pbegin()
func pbegin()
Line 6,490: Line 6,588:
rn = random(size - 1) + 1
rn = random(size - 1) + 1
rm = random(size - 1) + 1
rm = random(size - 1) + 1
ran = random(limit - 1) + 1
button[rn][rm].settext('2')
button[rn][rm].settext(string(numbers[ran]))
next
next
arrow.setfocus(true)


func pdown()
func pdown()
if gameover() = 1
num = gameover()
return
if num = size*size
ok
flag = 1
pmovedown()
msgBox('You lost!')
newnum()
pbegin()
ok
if flag = 0
pmovedown()
newnum()
ok


func pup()
func pup()
if gameover() = 1
num = gameover()
return
if num = size*size
ok
flag = 1
pmoveup()
msgBox('You lost!')
newnum()
pbegin()
ok
if flag = 0
pmoveup()
newnum()
ok


func pleft()
func pleft()
if gameover() = 1
num = gameover()
return
if num = size*size
ok
flag = 1
pmoveleft()
msgBox('You lost!')
newnum()
pbegin()
ok
if flag = 0
pmoveleft()
newnum()
ok


func pright()
func pright()
if gameover() = 1
num = gameover()
return
if num = size*size
ok
flag = 1
pmoveright()
msgBox('You lost!')
newnum()
pbegin()
ok
if flag = 0
pmoveright()
newnum()
ok


func pmoveleft()
func pmoveleft()
Line 6,543: Line 6,661:
moveleft[p] = temp
moveleft[p] = temp
del(moveleft,p+1)
del(moveleft,p+1)
exit
ok
ok
ok
ok
Line 6,582: Line 6,699:
moveright[p] = temp
moveright[p] = temp
del(moveright,p-1)
del(moveright,p-1)
exit
if moveright[p-1] = temp
p = p - 1
ok
ok
ok
ok
ok
Line 6,620: Line 6,739:
moveup[p] = temp
moveup[p] = temp
del(moveup,p+1)
del(moveup,p+1)
exit
ok
ok
ok
ok
Line 6,658: Line 6,776:
movedown[p] = temp
movedown[p] = temp
del(movedown,p+1)
del(movedown,p+1)
exit
ok
ok
ok
ok
Line 6,687: Line 6,804:
func gameover()
func gameover()
num = 0
num = 0
flag = 0
for n = 1 to size
for n = 1 to size
for m = 1 to size
for m = 1 to size
Line 6,694: Line 6,812:
next
next
next
next
if num = size*size
return num
msgBox('You lost!')
return 1
ok
return


func msgBox(text) {
func msgBox(text) {
m = new qMessageBox(win) {
m = new qMessageBox(win) {
setWindowTitle('21 Game')
setWindowTitle('2048 Game')
setText(text)
setText(text)
show()
show()
Line 6,718: Line 6,832:
see "]" + nl
see "]" + nl


class MyButton from qPushButton
class MyButton from qLabel
func setText cValue
func setText(cValue)
Super.setText(cValue)
Super.setText(cValue)
switch cValue
switch cValue