Python游戏
从图形导入*def cn(x):返回x.decode('utf-8 ')
def quit(): _quit=1
全球跑步
跑步=1
def redraw(rect):canvas . blit(img)def default():
全局图标,颜色,字体
con={"l":15," x":15," y":33," r":13," n":15}
color={"bg":0x7777bb," fg":0x333333," p1":0x000000," p2":0xffffff," w":0xff0000}
font = u " Sans MT 936 _ S60 " def initial():
全局图像,画布,con,color,cur_x,cur_y,turn,pos1,pos2,pos
appuifw.app.screen='full '
appuifw . app . body = canvas = appuifw。画布()
img=Image.new((240,320))
img.clear(彩色["bg"])
cur_x=7
cur_y=7
turn=1
pos1=[]
pos2=[]
pos=[]
对于范围内的I(con[" n "]* con[" n "]):
posappend(0)def paint _ back():
全局图像,颜色,字体
#img.text((90,25),cn('快乐五子棋'),color["fg"],font)
对于范围内的I(con[" x "],con[" x "]+con["l"]* con[" n "]-1,con[" l "]):
img.line((i,con["y"],I,con[" y "]+con[" l "]*(con[" n "]-1)),color["fg"])
对于范围内的I(con[" y "],con[" y "]+con["l"]* con[" n "]-1,con[" l "]):
img.line((con["x"],I,con[" x "]+con[" l "]*(con[" n "]-1),I),color["fg"])
Img.text((40,270),cn ('Player 1 '),color ["P1"],font)
Img.text((160,270),cn ('Player 2 '),color["p2"],font)
img.point((90,263),color["p1"],width=con["r"],fill=color["p1"])
img.point((144,263),color["p2"],width=con["r"],fill=color["p2"])
def paint_cur(x,y,sh):
全局图像,con,color,pos1,pos2,正在运行
如果运行& lt& gt1:返回
ax=con["x"]+con["l"]*x
ay=con["y"]+con["l"]*y
b=con["l"]/2
如果sh & lt& gt0:
c=color["p"+str(sh)]
if rp((x,y))& lt;& gt0:
c =颜色["w"]
如果sh==0:
c =颜色["bg"]
img.line((ax-b,ay-2,ax-b,ay-b,ax-2,ay-b),c)
img.line((ax-b,ay+2,ax-b,ay+b,ax-2,ay+b),c)
img.line((ax+b,ay-2,ax+b,ay-b,ax+2,ay-b),c)
img.line((ax+b,ay+2,ax+b,ay+b,ax+2,ay+b),c)
redraw(())def paint_q(x,y,z):
全球图像、图标、颜色
ax=con["x"]+con["l"]*x
ay=con["y"]+con["l"]*y
b=con["l"]/2
如果z==0:
c =颜色["bg"]
否则:
c=color["p"+str(z)]
img.point((ax,ay),c,width=con["r"],fill=c)
重绘(())
如果z==0:
img.line((ax-b,ay,ax+b,ay),c)
img.line((ax,ay-b,ax,ay+b),c)
def k_up():
全局电流x,电流y,电流,转向
画图_曲线(曲线_x,曲线_y,0)
cur_y=cur_y-1
if cur_y==-1:
cur_y=con["n"]-1
paint_cur(cur_x,cur_y,turn)def k_down():
全局电流x,电流y,电流,转向
画图_曲线(曲线_x,曲线_y,0)
cur_y=cur_y+1
if cur_y==con["n"]:
cur_y=0
paint_cur(cur_x,cur_y,turn)def k_left():
全局电流x,电流y,电流,转向
画图_曲线(曲线_x,曲线_y,0)
cur_x=cur_x-1
if cur_x==-1:
cur_x=con["n"]-1
paint_cur(cur_x,cur_y,turn)def k_right():
全局电流x,电流y,电流,转向
画图_曲线(曲线_x,曲线_y,0)
cur_x=cur_x+1
if cur_x==con["n"]:
cur_x=0
paint_cur(cur_x,cur_y,turn)def rp(x):
全球con,pos
if(x[0]& lt;0或x[0]& gt;=con["n"]或x[1]& lt;0或x[1]& gt;=con["n"]):返回0
#print x,pos[x[0]*con["n"]+x[1]]
return pos[x[0]* con[" n "]+x[1]]def WP(x,y):
全球con,pos
pos[x[0]* con[" n "]+x[1]]= y
定义win():
对于pos1中的I:
k=0
对于范围(0,6)内的j:
如果rp((i[0]+j,I[1])= = 1:
k=k+1
否则:
破裂
如果k & gt=5:
返回1
k=0
对于范围(0,6)内的j:
如果rp((i[0],i[1]+j))==1:
k=k+1
否则:
破裂
如果k & gt=5:
返回1
k=0
对于范围(0,6)内的j:
如果rp((i[0]+j,i[1]+j))==1:
k=k+1
否则:
破裂
如果k & gt=5:
返回1
k=0
对于范围(0,6)内的j:
如果rp((i[0]+j,i[1]-j))==1:
k=k+1
否则:
破裂
如果k & gt=5:
为pos2中的I返回1:
k=0
对于范围(0,6)内的j:
如果rp((i[0]+j,I[1])= = 2:
k=k+1
否则:
破裂
如果k & gt=5:
返回2
k=0
对于范围(0,6)内的j:
如果rp((i[0],i[1]+j))==2:
k=k+1
否则:
破裂
如果k & gt=5:
返回2
k=0
对于范围(0,6)内的j:
如果rp((i[0]+j,i[1]+j))==2:
k=k+1
否则:
破裂
如果k & gt=5:
返回2
k=0
对于范围(0,6)内的j:
如果rp((i[0]+j,i[1]-j))==2:
k=k+1
否则:
破裂
如果k & gt=5:
返回2
返回0
def k_enter():
全局cur_x,cur_y,turn,pos1,pos2,con,颜色,字体,跑步
如果运行& lt& gt1:返回
if rp((cur_x,cur_y))==0:
如果turn==1:
pos1.append((cur_x,cur_y))
img.rectangle((35,255,100,272),color["bg"])
img.rectangle((135,255,200,272),color["p2"])
如果转弯==2:
pos2.append((cur_x,cur_y))
img.rectangle((35,255,100,272),color["p1"])
img.rectangle((135,255,200,272),color["bg"])
画图_q(曲线_x,曲线_y,转弯)
wp((cur_x,cur_y),转)
if win()& lt;& gt0:
#img.text((80,300),cn('玩家')+str(回合)+cn("赢!"),颜色["fg"],字体)
img.rectangle((35,255,100,272),color["bg"])
img.rectangle((135,255,200,272),color["bg"])
画图_曲线(曲线_x,曲线_y,0)
跑步=2
转=3圈
paint_cur(cur_x,cur_y,turn)def bindkey():
canvas.bind(key_codes。EKeyUpArrow,k_up)
canvas.bind(key_codes。EKeyDownArrow,k_down)
canvas.bind(key_codes。EKeyLeftArrow,k_left)
canvas.bind(key_codes。EKeyRightArrow,k_right)
canvas.bind(key_codes。EKeySelect,k_enter)默认()
首字母()
paint_back()
画图_曲线(曲线_x,曲线_y,1)
img.rectangle((35,255,100,272),color["p1"])
bindkey()redraw(())
appuifw . app . exit _ key _ handler = quit()
_quit=0
while (1-_quit):
e32.ao_sleep(0.2)
重绘(())