还剩3页未读,继续阅读
文本内容:
Python大作业------五子棋嬉戏姓名吴欣学号姓名张雨清学号一嬉戏介绍我们设计的是五子棋嬉戏,支持两人一个鼠标对下,黑方用左键单击,白方用右键单击,谁先下均可,落子无悔,下过的棋子对方点击后不会变色,程序可自行推断输赢并在五子连珠时弹出结果对话框,嬉戏双方需遵守不在空地点击和一次下一子的规则二嬉戏代码设计:代码均为原创,没有借鉴和抄袭,首先是用户界面设计,GUI点击进入嬉戏界面,点击则退出程序,为了便利推断和记录,start quit我们按从左到右,从上到下的依次给颗棋子编号左键15x15=225225,绑定函数点击后可算出它位于哪颗棋子上再画出来黑子,并callbacks把对应编号计入这个列表,之后进入推断函数右键绑定函数record点击后画出白子,对应编号计入这个列表,之后进入推callback2,recor断函数,其中总列表的作用是使棋子不被下其次遍rec三作业感想这个嬉戏虽然很小但是可以供室友们晚上消遣之用,我们倾注了许多心血,之前采纳模块化编程失败了许多次,有事务响应问题,参数传递问题,到第七个程序才胜利,感谢张同珍老师指引了许多,我们学会了运用类,受益匪浅,对产生了深厚的爱好Python四过程截图■was
五、试验代码东from Tkinterimport*from tkMcssagcBoximport classGame:def—init_self:self.A=[]self.B=[]self.record=setself.recor=setself.rec=self.record|self.recorself.root=Tkself.root.geometryn180x250self.root.titlenWu ZiQi Game”self.r=Canvasself.root,width=180,height=210,bg=purplepic=PhotoImagefile=,beijing.gif,self.r.create_image90,100,image=picself.r.placex=O,y=15Labelself.root,text=***Wu ZiQi Game***,fg=red.placex=20,y=0Buttonself.root,text=,start,,command=self.start.placex=30,y=230Buttonself.root,text=Hquit Hdefstartself:self.top=Tkself.top.titlenGame Startself.c=Canvasself.top,width=480,height=480,bg=nwhitenself.c.packself.c.create_rectangle25,25,455,455,fill=Mgraynfor iin range30,451,30:for jin range30,451,30:self.c.create_ovali-2,j-2,i+2,j+2,fill=nblueHfor iin rangel,16:self.c.create_line30,30*i,450,30*i」ine30*i,30,30*i,450self.c.create_oval234,234,246,246,fill=,blacknself.c.create_oval115,115,125,125,fill=Hblacknself.c.create_oval355,ll5,365,125,fill=,,black,self.c.create_ovall15,355,125,365,fiU=black”self.c.create_oval355,355,365,365,fill=nblacku〉”,selfcbindButton-1self.callback1self.c.bindnButton-3n,self.callback2def callback1self,event:u,v=event.x,event,ys=u/15if s%2==l:self.x=s+l/2else:self.x=s/2l=v/15ifl%2==l:self.y=l+l/2else:self.y=l/2g=self.y-l*15+self.xwhile gnot inself.rec:self.c.create_ovalself.x*30-12,self.y*30-l2,self.x*30+12,self,y*30+12,fill=,black,self.A.appendgself.record=setself.Aself.rec=self.record|self.recorjudge=panduang,self.recordif judge=l:answer=showinfonGame over,Black wins!1self.top.destroydef callback2self,event:二u,v event,x,event,ys=u/15if s%2==l:self.m=s+1/2else:self.m=s/2l=v/15ifl%2==l:self,n=1+1/2else:self.n=l/2k=self.n-l*154-self.mwhile knot inself.rec:self.c.create_ovalself.m*30-12,self.n*30-12,self.m*30+12,self.n*30+12,fill=whiteself.B.appendkself.rccoi-sctsclf.Bself.rec=self.record|self.recorjudge=panduank,self.recorif judge=l:answer=showinfonGame over,White wins!self.top.destroydef panduang,record:#推断横排是否出现赢的状况if{g-4,g-3,g-2,g-l=record:return1elif{g-3,g-2,g-l,g+l=record:return1elif{g-2,g-1,g+1,g+2}=record:return1elif{g-1,g+1,g+2,g+3}=record:return1elif{g+l,g+2,g+3,g+4}=record:return1#推断竖列是否出现赢的状况elif{g-60,g-45,g-30,g-l5}=record:return1elif{g-45,g-30,g-l5,g+15}=record:return1elif{g-30,g-15,g+15,g+30}=record:return1elif{g-15,g+15,g+30,g+45}=record:return1elif{g+15,g+30,g+45,g+60}=record:return1#推断列是否出现赢的状况elif{g-16,g-32,g-48,g-64}=record:return1elif{g-48,g-32,g-l6,g+16}=record:return1elif{g-32,g-l6,g+16,g+32}=record:return1elif{g-16,g+16,g+32,g+48}=record:return1elif{g+16,g+32,g+48,g+60}=record:return1#推断/列是否出现赢的状况elif{g-14,g-28,g-42,g-56}=record:return1elif{g-14,g-28,g-42,g+14}=record:return1elif{g-14,g-28,g+14,g+28}=record:return1elif{g-14,g+14,g+28,g+42}=record:return1elif{g+14,g+28,g+42,g+56}=record:return1else:return0def main:欢迎来到五子棋战场!黑方用左键,白方用右键,谁先下都可以,落子无悔,不要print”在棋盘四周空地点击Are youreadyn二game Gamemain。
个人认证
优秀文档
获得点赞 0