Python大作业之五子棋游戏附代码_第1页
Python大作业之五子棋游戏附代码_第2页
Python大作业之五子棋游戏附代码_第3页
Python大作业之五子棋游戏附代码_第4页
Python大作业之五子棋游戏附代码_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python大作业一五子棋嬉

姓名:吴欣学号:

姓名:张雨清学号:

一嬉戏介绍:

我们设计的是五子棋嬉戏,支持两人一个鼠标对下,黑方用左

键单击,白方用右键单击,谁先下均可,落子无悔,下过的棋子对方

点击后不会变色,程序可自行推断输赢并在五子连珠时弹出结果对话

框,嬉戏双方需遵守不在空地点击和一次下一子的规则。

二嬉戏代码设计:

代码均为原创,没有借鉴和抄袭,首先是用户GUI界面设计-,

点击start进入嬉戏界面,点击quit则退出程序,为了便利推断和

记录,我们按从左到右,从上到下的依次给15x15二225颗棋子编号

225,左键绑定函数callbackl,点击后可算出它位于哪颗棋子上再画

出来黑子,并把对应编号计入record这个列表,之后进入推断函数。

右键绑定函数callback2,点击后画出白子,木■应编号计入recor这

个列表,之后进入推断函数,其中总列表rec的作用是使棋子不被下

其次遍。

三作业感想

这个嬉戏虽然很小但是可以供室友们晚上消遣之用,我们倾注

了许多心血,之前采纳模块化编程失败了许多次,有事务响应问题,

参数传递问题,到第七个程序才胜利,感谢张同珍老师指引了许多,

我们学会了运用类,受益匪浅,对Python产生了深厚的爱好。

四过程截图

五、试验代码

fromTkinterimport*

fromLkMessageBoximport*

classGame:

def_init_(self):

self.A=[]

self.B=[]

self.record=set()

self.recor=set()

self.rec=self.recordself,recor

self.root=Tk()

self.root,geometry(〃180x250〃)

self.root,title(,zWuZiQiGame")

self.r=Canvas(self,root,width=180,height=210,bg=〃purple")

pic=PhotoImage(file="beijing.gif〃)

self.r.create_image(90,100,image=pic)

self.r.place(x=0,y=15)

Label(self,root,text='ZiQi

Game***",fg=〃red"),place(x=20,y=0)

Button(self,root,text=zzstart,z,command=self,start).place(x=3

0,y=230)

Button(self,root,text="quit

〃,command二self.root,destroy),place(x=100,y=230)

self.r.mainLoop()

defstart(self):

self.root,destroy()

self=Tk()

self.titleC'GameStart")

self.c=Canvas(self,width=480,height=480,bg=〃white")

self.c.pack()

self.c.create_rectangle(25,25,455,455,fill二〃gray")

foriinrange(30,451,30):

forjinrange(30,451,30):

self.c.createoval(i-2,j-2,i+2,j+2,fill="blue")

foriinranged,16):

self.c.create_line(30,30*i,450,30*i)

self.c.create1ine(30*i,30,30*i,450)

self.c.create_oval(234,234,246,246,fill=zzblack,z)

self.c.create_oval(115,115,125,125,fill="black")

elf.y*30+12,fill二〃black")

self.A.append(g)

self.record=set(self.A)

self.rec=self.record|self,recor

judge=panduan(g,self,record)

ifjudge==l:

answer=showinfo("Gameover","Blackwins!”)

self,destroy()

defcallback2(self,event):

u,v=event.x,event,y

s=u/15

ifs%2==l:

self.m=(s+l)/2

else:

self.m=s/2

l=v/15

if1%2==1:

self.n=(l+l)/2

else:

self.n=L/2

k=(self.n-l)*15+self.m

whi1eknotinself,rec:

self.c.create_oval(self,m*30T2,self,n*30T2,self.m*30+12,s

elf.n*30+12,fill="white")

self.B.append(k)

self.recor=set(self.B)

self,rec=self,record|self,recor

judge=panduan(k,self,recor)

ifjudge==l:

answer=showinfo("Gameover","Whitewins!”)

self,destroy()

defpanduan(g,record):

#推断横排是否出现赢的状况

if(g_4,g-3,g-2,g-1}<=record:

return1

elif{g-3,g-2,g-1,g+1}<=record:

return1

elif{g_2,g-1,g+1,g+2}<=record:

return1

elif{g-1,g+1,g+2,g+3}〈二record:

return1

elif{g+1,g+2,g+3,g+4}<=record:

return1

#推断竖列是否出现赢的状况

elif{g-60,g-45,g-30,g-15)<=record:

return1

elif{g-45,g-30,g-15,g+15)<=record:

return1

elif{g-30,g-15,g+15,g+30)<=record:

return1

elif{g-15,g+15,g+30,g+45)<=record:

return1

elif{g+15,g+30,g+45,g+60)<=record:

return1

#推断'列是否出现赢的状况

elif{g-16,g-32,g-48,g-64)<=record:

return1

elif{g-48,g-32,g-16,g+16}<=record:

return1

elif{g-32,g-16,g+16,g+32)<=record:

return1

elif{g-16,g+16,g+32,g+48}<=record:

return1

elif{g+16,g+32,g+48,g+60)<=record:

return1

#推断/列是否出现赢的状况

elif{g-14,g-28,g-42,g-56)<=record:

return1

elif{g_14,g-28,g-42,g+14)<=record:

return1

elif{g-14,g-28,g+14,g+28)<=record:

return1

elif{g-14,g+14,g+28,g+42}〈二record:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论