社区讨论
《你能AK IOI吗》python实现
灌水区参与者 9已保存回复 15
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 14 条
- 当前快照
- 1 份
- 快照标识符
- @m60riz2v
- 此快照首次捕获于
- 2025/01/17 20:55 去年
- 此快照最后确认于
- 2025/11/04 23:13 4 个月前
用了pgzrun和random这俩模块,需要IDLE,请复制到IDLE再运行。
PYTHONimport pgzrun
import random
WIDTH = 450
HEIGHT = 550
score = 0
flag2 = 0
r = [[2,0,0,0],
[0,0,0,0],
[2,0,0,0],
[0,0,0,0]]
r_c = [[(158,149,140),(158,149,140),(158,149,140),(158,149,140)],
[(158,149,140),(158,149,140),(158,149,140),(158,149,140)],
[(158,149,140),(158,149,140),(158,149,140),(158,149,140)],
[(158,149,140),(158,149,140),(158,149,140),(158,149,140)]]
for i in range(4):
for j in range(4):
if r[i][j] == 0:
r_c[i][j] = (158,149,140)
elif r[i][j] == 2:
r_c[i][j] = (235,235,0)
elif r[i][j] == 4:
r_c[i][j] = (173,36,255)
elif r[i][j] == 8:
r_c[i][j] = (0,0,0)
elif r[i][j] == 16:
r_c[i][j] = (0,0,82)
elif r[i][j] == 32:
r_c[i][j] = (0,0,160)
elif r[i][j] == 64:
r_c[i][j] = (0,0,200)
elif r[i][j] == 128:
r_c[i][j] = (235,0,0)
elif r[i][j] == 256:
r_c[i][j] = (180,180,180)
elif r[i][j] == 512:
r_c[i][j] = (0,172,139)
elif r[i][j] == 1024:
r_c[i][j] = (0,165,0)
elif r[i][j] == 2048:
r_c[i][j] = (0,211,255)
def findout(a):
if a == "2":
return "CE"
if a == "4":
return "RE"
if a == "8":
return "MLE"
if a == "16":
return "TLE"
if a == "32":
return "OLE"
if a == "64":
return "ILE"
if a == "128":
return "WA"
if a == "256":
return "UKE"
if a == "512":
return "PC"
if a == "1024":
return "AC"
if a == "2048":
return "AK"
def draw():
global flag2
screen.draw.filled_rect(Rect((0, 0), (450, 550)), (146,135,125))
for i in range(4):
for j in range(4):
screen.draw.filled_rect(Rect((10+i*110, 110+j*110), (100, 100)), r_c[j][i])
if r[j][i] != 0:
screen.draw.text(findout(str(r[j][i])),center = (60+i*110,160+j*110),fontsize = 40,color = 'white' )
screen.draw.text('Score:'+str(score),center = (225,50),fontsize = 30,color = 'black' )
if flag2 == 1:
screen.draw.filled_rect(Rect((0, 0), (450, 550)), (0,255,0))
screen.draw.text('GAME OVER',center = (225,200),fontsize = 50,color = 'black')
screen.draw.text('得分:'+str(score),center = (225,290),fontsize = 30,color = 'black')
screen.draw.text('点击屏幕返回',center = (225,340),fontsize = 30,color = 'black')
def on_key_down(key):
global score,r,r_c,flag2
r_list = []
r_a = [2,2,2,2,2,2,2,2,2,4]
for i in range(3):
if key == keys.LEFT:
for i in range(4):
for j in range(3):
if r[i][j] == 0:
r[i][j] = r[i][j+1]
r[i][j+1] = 0
elif key == keys.RIGHT:
for i in range(4):
for j in range(3):
if r[i][3-j] == 0:
r[i][3-j] = r[i][2-j]
r[i][2-j] = 0
elif key == keys.UP:
for i in range(3):
for j in range(4):
if r[i][j] == 0:
r[i][j] = r[i+1][j]
r[i+1][j] = 0
elif key == keys.DOWN:
for i in range(3):
for j in range(4):
if r[3-i][j] == 0:
r[3-i][j] = r[2-i][j]
r[2-i][j] = 0
if key == keys.LEFT:
for i in range(4):
for j in range(3):
if r[i][3-j] == r[i][2-j] and r[i][3-j] != 0:
r[i][2-j] = r[i][3-j] + r[i][2-j]
r[i][3-j] = 0
score += r[i][2-j]
break
elif key == keys.RIGHT:
for i in range(4):
for j in range(3):
if r[i][j] == r[i][j+1] and r[i][j] != 0:
r[i][j+1] = r[i][j] + r[i][j+1]
r[i][j] = 0
score += r[i][j+1]
break
elif key == keys.UP:
for i in range(3):
for j in range(4):
if r[3-i][j] == r[2-i][j] and r[3-i][j] != 0:
r[2-i][j] = r[3-i][j] + r[2-i][j]
r[3-i][j] = 0
score += r[2-i][j]
break
elif key == keys.DOWN:
for i in range(3):
for j in range(4):
if r[i][j] == r[i+1][j] and r[i][j] != 0:
r[i+1][j] = r[i][j] + r[i+1][j]
r[i][j] = 0
score += r[i+1][j]
break
for i in range(3):
if key == keys.LEFT:
for i in range(4):
for j in range(3):
if r[i][j] == 0:
r[i][j] = r[i][j+1]
r[i][j+1] = 0
elif key == keys.RIGHT:
for i in range(4):
for j in range(3):
if r[i][3-j] == 0:
r[i][3-j] = r[i][2-j]
r[i][2-j] = 0
elif key == keys.UP:
for i in range(3):
for j in range(4):
if r[i][j] == 0:
r[i][j] = r[i+1][j]
r[i+1][j] = 0
elif key == keys.DOWN:
for i in range(3):
for j in range(4):
if r[3-i][j] == 0:
r[3-i][j] = r[2-i][j]
r[2-i][j] = 0
for i in range(4):
for j in range(4):
if r[i][j] == 0:
r_list.append([i,j])
if r_list != []:
a = random.choice(r_list)
b = random.choice(r_a)
r[a[0]][a[1]] = b
else:
flag2 = 1
for i in range(4):
for j in range(3):
if r[i][j] == r[i][j+1]:
flag2 = 0
for i in range(3):
for j in range(4):
if r[i][j] == r[i+1][j]:
flag2 = 0
for i in range(4):
for j in range(4):
if r[i][j] == 0:
r_c[i][j] = (158,149,140)
elif r[i][j] == 2:
r_c[i][j] = (235,235,0)
elif r[i][j] == 4:
r_c[i][j] = (173,36,255)
elif r[i][j] == 8:
r_c[i][j] = (0,0,0)
elif r[i][j] == 16:
r_c[i][j] = (0,0,82)
elif r[i][j] == 32:
r_c[i][j] = (0,0,160)
elif r[i][j] == 64:
r_c[i][j] = (0,0,200)
elif r[i][j] == 128:
r_c[i][j] = (235,0,0)
elif r[i][j] == 256:
r_c[i][j] = (180,180,180)
elif r[i][j] == 512:
r_c[i][j] = (0,172,139)
elif r[i][j] == 1024:
r_c[i][j] = (0,165,0)
elif r[i][j] == 2048:
r_c[i][j] = (0,211,255)
def on_mouse_down():
global flag2,score,r,r_c
if flag2 == 1:
flag2 = 0
score = 0
r = [[2,0,0,0],
[0,0,0,0],
[2,0,0,0],
[0,0,0,0]]
r_c = [[(158,149,140),(158,149,140),(158,149,140),(158,149,140)],
[(158,149,140),(158,149,140),(158,149,140),(158,149,140)],
[(158,149,140),(158,149,140),(158,149,140),(158,149,140)],
[(158,149,140),(158,149,140),(158,149,140),(158,149,140)]]
for i in range(4):
for j in range(4):
if r[i][j] == 0:
r_c[i][j] = (158,149,140)
elif r[i][j] == 2:
r_c[i][j] = (238,228,218)
elif r[i][j] == 4:
r_c[i][j] = (173,36,255)
elif r[i][j] == 8:
r_c[i][j] = (242,177,121)
elif r[i][j] == 16:
r_c[i][j] = (245,149,99)
elif r[i][j] == 32:
r_c[i][j] = (246,124,95)
elif r[i][j] == 64:
r_c[i][j] = (246,94,59)
elif r[i][j] == 128:
r_c[i][j] = (237,207,114)
elif r[i][j] == 256:
r_c[i][j] = (237,207,114)
elif r[i][j] == 512:
r_c[i][j] = (237,207,114)
elif r[i][j] == 1024:
r_c[i][j] = (237,207,114)
elif r[i][j] == 2048:
r_c[i][j] = (237,207,114)
mobile_key_type5()
pgzrun.go()
都看到这里了,来发表个评论吧
回复
共 15 条回复,欢迎继续交流。
正在加载回复...