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 |
||
button[n][m] = new MyButton(win) |
|||
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, |
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( |
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( |
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( |
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( |
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( |
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 |
||
button[rn][rm].settext('2') |
|||
button[rn][rm].settext(string(numbers[ran])) |
|||
next |
next |
||
arrow.setfocus(true) |
|||
func pdown() |
func pdown() |
||
num = gameover() |
|||
if num = size*size |
|||
flag = 1 |
|||
msgBox('You lost!') |
|||
pbegin() |
|||
ok |
|||
if flag = 0 |
|||
pmovedown() |
|||
newnum() |
|||
ok |
|||
func pup() |
func pup() |
||
num = gameover() |
|||
if num = size*size |
|||
flag = 1 |
|||
msgBox('You lost!') |
|||
pbegin() |
|||
ok |
|||
if flag = 0 |
|||
pmoveup() |
|||
newnum() |
|||
ok |
|||
func pleft() |
func pleft() |
||
num = gameover() |
|||
if num = size*size |
|||
flag = 1 |
|||
msgBox('You lost!') |
|||
pbegin() |
|||
ok |
|||
if flag = 0 |
|||
pmoveleft() |
|||
newnum() |
|||
ok |
|||
func pright() |
func pright() |
||
num = gameover() |
|||
if num = size*size |
|||
flag = 1 |
|||
msgBox('You lost!') |
|||
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) |
||
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 |
||
return num |
|||
msgBox('You lost!') |
|||
return 1 |
|||
ok |
|||
return |
|||
func msgBox(text) { |
func msgBox(text) { |
||
m = new qMessageBox(win) { |
m = new qMessageBox(win) { |
||
setWindowTitle(' |
setWindowTitle('2048 Game') |
||
setText(text) |
setText(text) |
||
show() |
show() |
||
Line 6,718: | Line 6,832: | ||
see "]" + nl |
see "]" + nl |
||
class MyButton from |
class MyButton from qLabel |
||
func setText |
func setText(cValue) |
||
Super.setText(cValue) |
Super.setText(cValue) |
||
switch cValue |
switch cValue |