当前位置:文档之家› 五子棋游戏设计方案

五子棋游戏设计方案

五子棋游戏设计方案
五子棋游戏设计方案

目录

一、摘要: (1)

二、关键字: (1)

三、程序主流程图 (2)

四、需求分析: (3)

五、关键部分设计算法及实现: (4)

六、文件清单: (9)

七、使用说明: (9)

八、参考书目: (10)

九、附录:(源代码清单) (11)

五子棋程序

一、摘要:

五子棋游戏是一历史悠久,对抗性强,技巧性高的棋类游戏。本文用VC 设计了五子棋游戏。并就以下问题进行了探讨:

(1)棋子棋盘在程序中的表示;

(2)如何通过鼠标点击落子;

(3)如何判断输赢,在棋盘的—,|,/,\,四个方向进行搜索,超过5子以上连成一线则认为赢了。

(4)如何实现梅棋功能。

(5)如何保存并读入棋谱;

(6)如何让电脑拥有人类的智慧;

(7)编写软件代码应遵守的编写规范,成对编码原则和代码的注释;

(8)其它未详尽处,请参看源代码。

二、关键字:

棋盘数组

搜索算法

人工智能

半活

双活三

三、程序主要类结构图

CfiveStoneApp

四、需求分析:

五子棋历史源远流长,发展形势喜人,以下在网络上一篇有关五子棋历史发展的报道:

五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。?五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。? 五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。古代的五子棋的棋具与围棋相同,纵横各十七道。五子棋大约随围棋一起在我国南北朝时先后传入朝鲜、日本等地。据日本史料文献介绍,中国古代的五子棋是经由高丽(朝鲜),于1688年至1704年的日本元禄时代传到日本的。到日本明治32年(公元1899年),经过公开征名,“连珠”这一名称才被正式确定下来,取意于“日月如合壁,五星如连珠”。从此,连珠活动经过了不断的改良,主要是规则的变化(即对执黑棋一方的限制),例如,1899年规定,禁止黑白双方走“双三”;1903年规定,只禁止黑方走“双三”;1912年规定,黑方被迫走“双三”亦算输;1916年规定,黑方不许走“长连”;1918年规定,黑方不许走“四、三、三”;1931年规定,黑方不许走“双四”,并规定将19×19的围棋盘改为15×15的连珠专用棋盘。本世纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际比赛棋。? 目前,职业连珠已迅速在国际上发展起来。1988年8月8日,国际连珠联盟(RIF)由日本、俄罗斯、瑞典、亚美尼亚、阿塞拜疆、爱沙尼亚、法国、拉脱维亚、白俄罗斯等9个成员国在瑞典宣告创立,我国于1996年正式加入国际连珠联盟,现在全世界已有47个国家和地区成为国际连珠联盟的正式会员。职业连珠的世界锦标赛从1989年起每两年举办一次,现已举办了六届,第三、五、六届的冠军是爱沙尼亚人,其余三届的冠军都是日本人。我国最好成绩是团体第七,个人张进宇第9名。就水平而言,目前以俄罗斯、日本、瑞典最强,其中日本研究也最深,我国只处于中等水平。日本拥有自己的五子棋职业棋手,并且对连珠技术的研究也相当普遍和全面。日本每年举行连珠名人战。? 五子棋的根在中国,有着广泛的群众基础。但与世界先进的五子棋技术相比,我们的棋艺水平还很低,所以我们要推广五子棋,宣传五子棋,争取在较短的时间内赶上和超过世界五子棋坛的先进水平。1990年,由那威和十几名五子棋爱好者,共同发起并成立了中国第一个现代职业五子棋的民间组织----京都五子棋队,现已发展成为拥有百余名选手的北京京都五子棋队。日本连珠联盟曾多次派代表团访问中国,与中国广大爱好者进行交流和友谊比赛,瑞典连珠联盟也于1995年派代表团访问了中国,京都五子棋队曾两次选派选手代表中国参加世界杯比赛,取得此成绩反映了我国五子棋水平在世界上所处的位置,同时也显示了我国在此项运动中的发展潜力。1997年5月北京成功地举办了第一届“康柏杯”

国际五子棋名人邀请赛,引起了国际棋联的极大重视,并在第四十四届棋联会议上提出:“中国作为五子棋的发源国,不仅回到了国际大家庭中来,更重要的是对五子棋在下个世纪的发展起到了世界性的推动作用,并将为国际连珠棋成为奥运项目做出贡献。”? 随着1996年中央电视台(CCTV-5)《黑白世界-五子棋讲座》的开播和中国五子棋网上比赛的开通,将世界连珠五子棋运动的最新状况及时展现在眼前,为五子棋爱好者提供了尽情参与的机会,这无疑对国内的普及、发展起到了推动的作用。北京连珠五子棋体育文化交流中心已拥有了22位国际段位棋手,他们肩负着新的历史使命,不断为中国五子棋爱好者提供立足国内、面向世界、一展才华的机会。我国于1998年8月成功地举办了第二届世界杯青少年锦标赛,1999年7月在北京举办了第六届世界杯冠军赛,2000年将举办第三届世界杯团体赛。在北京的带动下,全国其他地区也先后成立了五子棋组织。河北廊坊地区成立了廊坊五子棋协会;天津市成立了由天津市体委领导的天津市五子棋工作委员会;上海、云南、杭州等地也都成立了五子棋的组织。五子棋的发展在中国出现方兴未艾之势。? 一位哲人说过:“中国人的智慧火种,往往使外国人得以燎原,反过来,燎原的火焰必将照亮火种的源头。”

如上文所述,五子棋既简单易学,又有其内涵和深度;集娱乐性和对抗性为一体,是一款为老、少、中各年龄阶段的人所喜欢的棋类游戏。

五、关键部分设计算法及实现:

系统地将五子棋程序完成,是有一定难度的。现将其关键部分的实现过程描述如下:

1、如何表示棋盘棋子。

五子棋棋盘由15*15横竖线交叉绘制而成,落子点在横竖的交叉点上。

采用15*15的二维数组表示棋盘,每个数组元素表示一个交叉点,用数组的值表示棋子:

以0表示未落子;

以1表示黑子;

以2表示白子。

注:

在程序中棋盘数组在中定义,是一全局数组;

long FiveChess[15][15];

在主程序中初始化:

for(int I=0;I<15;I++)

for(int j=0;j<15;j++)

FiveChess[I][j]=0;

刚开始时棋盘中未落一子,故全部交叉点为0。

2、如何用鼠标落子。

算法:

当程序在棋盘上点击一次后,捕获这个鼠标点击位置,如果这个点的位置在棋盘在棋盘范围内,则认可这一鼠标点击,否则,则认为这次鼠标点击无效。若鼠标点击在棋盘范围之内,则还要进一步判断,在这个位置是否已经落下了子,如果是也认为此次点击无效,如不是,则在棋盘数组填写相应的数据(或1或2),并相应的位置画出一个棋子。

具体实现:

当用户在程序窗口点击一次鼠标后,松开后,进入窗口过程的消息分支WM_LBUTTONUP;

在这个消息中的参数lParam中带有鼠标点击松开时的位置(x坐标,y纵坐标),放到一个用POINT定义的结构中:

POINT pp;

=LOWORD(lParam); 402||>402) break;//超出范围而退出,等待下一次按键落子。

下一步:

POINT ArrayPp=PositionToPosition(pp);

把刚才棋盘范围内的有效点击屏幕坐标转为棋盘数组坐标,

0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 50,50

400,400

例:

100,100转化成棋盘数组为1,1

再对刚才ArrayPp所表示的棋盘位置进行判断是否有子;

if(FiveChess[][ ]!=0)

{

break;//退出,等待下一次按键

}

如无子,则在相应的棋盘数组中填写数据:

FiveChess[][ ]=1;或

FiveChess[][ ]=2;

并在相应的位置画好棋子;

hdc1=GetDC(hWnd);

hMemDc1=CreateCompatibleDC(hdc1);

SelectObject(hMemDc1,hBlack); //黑子

SelectObject(hMemDc1,hWhite);//白子

BitBlt(hdc1,,,24,24,hMemDc1,0,0,SRCCOPY);

DeleteDC(hMemDc1);

ReleaseDC(hWnd,hdc1);

3、如何判输赢;

算法:

每下一子则在-、|、/、\四个方向搜索一次,如果有五颗或五颗同一色棋子在同一线上,

则判该方胜。

搜索算法如下:

置开始点和终止点坐标POINT start,end;

都初始化为该点位置;

while(start上面一个位置不为空或异色子) {

start=上面的位置坐标;

}

while(end下面一个位置不为空或异色子) {

start=下面的位置坐标;

}

注:-左面为上面,右面为下面;

| 上面为上面,下面为下面;

/ 上面为上面,下面为下面;

\ 上面为上面,下面为下面;

如果end 与start之间位置大于等于5,则认为该方赢。

具体实现:

见中SEARCH()函数,则函数返回50,则表示赢了。

4、如何实现悔棋功能和撤消悔棋功能:

悔棋一步算法:

首先设置好一全局数组,每下一步棋把相应的位置记录在该数组中,悔棋时只需要把该数组最后一次记录的位置所对应的棋盘数组中的值置为0,然后再根据棋盘数组中的数组,重复绘制一次棋盘棋子即可。

撤消悔棋算法:

同样定义一个全局数组,上面悔棋过程中每悔一步,把悔棋的位置记到该数组,撤消悔棋只需要把最后一次记录的撤消悔棋数组所对应的棋盘数组置为1或2即可。

具体实现:

见中MAINWNDPROC()中的

IDM_OPERATE_PREVIOR:分支(悔棋一步)

IDM_OPERATE_BACK:分支(撤消悔棋)

5、如何保存并读入棋谱。

算法:

保存棋谱:

由于棋子的所有信息都保存在棋盘数组中,所以只需要把棋盘数组中内容存储进文件即可。

读入棋谱:

与前面相反,把文件中的数据读进棋盘组中,然后要求程序根据新棋盘数组的内容重绘一次即可。

具体实现:

见中的OPEN_CHESS_FAMIL Y()

和SA VE_CHESS_FAMIL Y()

6、五子棋中的人工智能:

1)首先定义两个数组用于表示每个未下的点的重要程度(用数字区别这个重要程度):

两个数组分别定义为:

BlackSituation[15][15][5]//表示白子(在下棋的时候可以敌方,也可以代表已方)

WhiteSituation[15][15][5]//表示黑子(在下棋的时候可以敌方,也可以代表已方)

[15][15]表示有15*15个点

后面的[5]表示每个点有四个方向和一个汇总数据(0),

分别是—(横1),|(竖2),/(斜线3),\(反叛斜线4);

例如:(见图,见表)

(1)在(5,7)这个点落一子,

横方向(对于黑子)

只能构成成一个活一,

故BlackSituation[5][7][1]

=4;

(2) 而(5,7)这个点上落一子,

竖方向(对于黑子)

能构成一个活四,

故BlackSituation[5][7][2]

=16384;

(3) 而(5,7)这个点上落一子,

横方向(对于白子)

能构成一个活一,

故BlackSituation[5][7][2]

=4;

(4)而(5,7)这个点上落一子,反斜线方向(对于白子)

能构成一个活二,

半活

5

262144

5

65536

4

16384

4

4096

3

1024

3

256

2

64

2

16

1

4

1

1

修正数据

双活三

修正值

说明

10000

大于半活四

故BlackSituation[5][7][2]=64;

其它以此类推。

2)按这个规则把所求的各

个方向值汇总到

BlackSituaiton[x][y][0], WhiteSituaiton[x][y][0]中。

3)然后把BlackSituaiton[x][y][0]和WhiteSituaiton[x][y][0]相加,

得到一个总的数值。

4)在BlackSituation[x][y][0]和

WhiteSituaiton[x][y][0]相加的结果中,

选出最大的值,其坐标为作为电脑下子点。

这个数字,即包括了进攻也包括了防守。

因为这个数字把对于敌人和

对于自己的重要程度都考虑进去了。

5)为了个别特别的情况,还特别设了修正值,见表。

7、编写软件代码应遵守的规范格式,成对编码原则和代码的注释;

当写程序写到具有一定规模的程序时,还有许多非程序语言与算法所能解决的问题,以下我在编写程序的过程中的一些体会。

(1)成对编码

正确的程序设计思路是成对编码,先写上面的大括号,然后马上写下面的大括号。这样一个函数体就形成了。它没有任何问题。然后,比如你要写个for循环,这时候先申明一个变量I,再写这个for循环。写上面的大括号,马上写下面的大括号,然后再在中间插一二行代码。插这段代码后,如果你又要用到新变量,则再在头上添加新变量,然后再让它进行工作。这就是种成对编码。

当你用到一个内存的时候,写一个分配函数分配一块内存,马上就接着写释放这块内存的代码。然后你再在中间插上你要用这个内存做什么。

这是正确的快迅的编程方法。否则,你去查或调试代码都无从下手。针对这个程序来说,如果用成对编码,则它任何时候都是可以调试的,不需要你整个程序都写完后才能进行调试。由此可见,优点是很明显的。

(2)代码的注释

代码本身体现不出价值来,有价值的代码一定是不仅格式非常规范,而且还要有很详细的设计思路和注释,这个是很重要的。首先要养成这种习惯,我们的教科书里面很少讲为什么要做注释,注释应该怎么注。有些人爱在哪儿下注释就在哪儿下注释,甚至还在语句中间也加,中间也可弄两个斜杠放两个花括号注释。

注释格式是非常重要的,但很少有去注意它。现在的程序如果没有注释,则基本上是没法用的,也就跟你拿一个可执行程序没什么两样,你拿过来还不能修改,你改了后编出来的程序绝对不能用。所以,程序如果没有详细的注释,别人就算拿到了代码也没有用,体现不出它的价值来。

我的建议是整个程序有个总的说明注释,每个分程序有分程序说明注释。

六、文件清单:

文件名

功能

主程序

主程序头文件及窗口过程文件

资源文件

五子棋核心函数文件

宏定义常量文件

大图标文件

小图标文件

五子棋游戏设计方案

目录 一、摘要: (1) 二、关键字: (1) 三、程序主流程图 (2) 四、需求分析: (3) 五、关键部分设计算法及实现: (4) 六、文件清单: (9) 七、使用说明: (9) 八、参考书目: (10) 九、附录:(源代码清单) (11) 五子棋程序 一、摘要:

五子棋游戏是一历史悠久,对抗性强,技巧性高的棋类游戏。本文用VC 设计了五子棋游戏。并就以下问题进行了探讨: (1)棋子棋盘在程序中的表示; (2)如何通过鼠标点击落子; (3)如何判断输赢,在棋盘的—,|,/,\,四个方向进行搜索,超过5子以上连成一线则认为赢了。 (4)如何实现梅棋功能。 (5)如何保存并读入棋谱; (6)如何让电脑拥有人类的智慧; (7)编写软件代码应遵守的编写规范,成对编码原则和代码的注释; (8)其它未详尽处,请参看源代码。 二、关键字: 棋盘数组 搜索算法 人工智能 活 半活 双活三

三、程序主要类结构图

CfiveStoneApp

四、需求分析: 五子棋历史源远流长,发展形势喜人,以下在网络上一篇有关五子棋历史发展的报道: 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为“連珠”,英译为“Renju”,英文称之为“Gobang”或“FIR”(Five in a Row的缩写),亦有“连五子”、“五子连”、“串珠”、“五目”、“五目碰”、“五格”等多种称谓。?五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征“短、平、快”,又有古典哲学的高深学问“阴阳易理”;它既有简单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。? 五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。古代的五子棋的棋具与围棋相同,纵横各十七道。五子棋大约随围棋一起在我国南北朝时先后传入朝鲜、日本等地。据日本史料文献介绍,中国古代的五子棋是经由高丽(朝鲜),于1688年至1704年的日本元禄时代传到日本的。到日本明治32年(公元1899年),经过公开征名,“连珠”这一名称才被正式确定下来,取意于“日月如合壁,五星如连珠”。从此,连珠活动经过了不断的改良,主要是规则的变化(即对执黑棋一方的限制),例如,1899年规定,禁止黑白双方走“双三”;1903年规定,只禁止黑方走“双三”;1912年规定,黑方被迫走“双三”亦算输;1916年规定,黑方不许走“长连”;1918年规定,黑方不许走“四、三、三”;1931年规定,黑方不许走“双四”,并规定将19×19的围棋盘改为15×15的连珠专用棋盘。本世纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际比赛棋。? 目前,职业连珠已迅速在国际上发展起来。1988年8月8日,国际连珠联盟(RIF)由日本、俄罗斯、瑞典、亚美尼亚、阿塞拜疆、爱沙尼亚、法国、拉脱维亚、白俄罗斯等9个成员国在瑞典宣告创立,我国于1996年正式加入国际连珠联盟,现在全世界已有47个国家和地区成为国际连珠联盟的正式会员。职业连珠的世界锦标赛从1989年起每两年举办一次,现已举办了六届,第三、五、六届的冠军是爱沙尼亚人,其余三届的冠军都是日本人。我国最好成绩是团体第七,个人张进宇第9名。就水平而言,目前以俄罗斯、日本、瑞典最强,其中日本研究也最深,我国只处于中等水平。日本拥有自己的五子棋职业棋手,并且对连珠技术的研究也相当普遍和全面。日本每年举行连珠名人战。? 五子棋的根在中国,有着广泛的群众基础。但与世界先进的五子棋技术相比,我们的棋艺水平还很低,所以我们要推广五子棋,宣传五子棋,争取在较短的时间内赶上和超过世界五子棋坛的先进水平。1990年,由那威和十几名五子棋爱好者,共同发起并成立了中国第一个现代职业五子棋的民间组织----京都五子棋队,现已发展成为拥有百余名选手的北京京都五子棋队。日本连珠联盟曾多次派代表团访问中国,与中国广大爱好者进行交流和友谊比赛,瑞典连珠联盟也于1995年派代表团访问了中国,京都五子棋队曾两次选派选手代表中国参加世界杯比赛,取得此成绩反映了我国五子棋水平在世界上所处的位置,同时也显示了我国在此项运动中的发展潜力。1997年5月北京成功地举办了第一届“康柏杯”

五子棋报告-java

XXXX大学 XX学院 课程设计报告 课程名称:面向对象程序设计 题目名称:五子棋游戏设计 学生姓名: 专业班级: 指导教师:任晓强

一、课程设计目的与任务(四号、宋体、加黑、顶格) (1)掌握Java编程、面向对象的基础知识。 (2)较熟练地编写Java应用程序Application。 (3)了解Java的常用标准类库、编程技巧、异常处理。 (4)联系已学过的内容,巩固所学的理论,增强独立工作能力。(5)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。 (6)通过本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。 课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。 二、课程设计内容 1本设计题目的主要内容 设计一个15╳15围棋棋盘,由两玩家交替进行对战,并可以实现以下功能: 1.选择落子的先后顺序 2.重置棋盘 3.刷新重新开始 4.退出提示 并且规定退出者判为负,但退出过程中要有提示。以防不小心点错了。 最后判断某一方是否为五子连珠。 实现一个简单的多用户五子棋的游戏程序,包括如下两个界面 (1)选择对弈桌(执黑、执白)。 (2)在游戏界面,有开始,退出(游戏未结束、点退出自动判负); 2 设计思想与程序构架

程序流程图 程序的功能分配 a. 棋盘的绘制 public void draw_qipan(Graphics G) 添加按钮 Button b1=new Button("开始"); Button b2=new Button("重置游戏"); Label lblWin=new Label(" "); Checkbox ckbHB[]=new Checkbox[3]; Button exist = new Button("退出"); public void init(){ ckbHB[0]=new Checkbox("执白",ckgHB,false); ckbHB[1]=new Checkbox("执黑",ckgHB,false); ckbHB[2]=new Checkbox("观看",ckgHB, false); } c. 鼠标棋子的触发事件 public void mouseClicked(MouseEvent e) { Graphics g=getGraphics(); int x1,y1; x1=(); y1=(); if ()<20 || ()>300 || ()<20 || ()>300) {

五子棋游戏程序的设计报告

计算机学院网络工程专业《程序设计综合课程设计》报告(2011/2012学年第一学期) 学生姓名: 学生班级:网络工程 学生学号: 指导教师: 2011年12月30日

双人五子

棋 目录 第一章课程设计目的和要求 (1) 1.1课程设计的目的 (1) 1.2课程设计的要求 (1) 第二章课程设计任务内容 (2) 2.1课程设计的主要内容 (2) 2.2系统设计原则 (2) 第三章设计说明 (3) 3.1游戏分析和介绍 (3) 3.1.1游戏分析 (3)

3.1.2游戏介绍 (3) 3.2重点模块说明 (3) 3.2.1棋盘界面Showboard() (3) 3.2.2下棋Play() (4) 3.2.3覆盖棋盘Recoverboard() (7) 3.2.4游戏结束后初始化棋盘Unitboard() (7) 3.2.5保存棋盘CopyB() (8) 3.3函数清单 (8) 3.4接口 (9) 第四章软件使用说明 (10) 4.1测试 (10) 4.2限制条件 (13) 第五章课程设计心得体会 (14) 附录一程序流程图 (15) 附录二程序代码 (16) 附录三参考文献 (26) 第一章课程设计目的和要求 1.1课程设计的目

1,学习综合运用C语言课程和其他相关课程的知识,提高分析解决实际问题的能力,进一步巩固、加深和拓宽所学的知识,进一步加强结构化程序设计的思想,加深对高级语言基本语言要素和控制结构的理解。 2,全面系统的学习面向对象程序设计的基本概念、基本语法和编程方法,与同学合作设计整套程序,并且独立完成一定工作量的程序设计. 3,掌握程序设计中的常用算法和C语言的程序技巧,培养良好的程序设计风格。 4,运用所学的知识了解五子棋游戏的制作结构,将所学的知识运用于实践中。 1.2课程设计的要求 1,与同学合作设计、编制、调试出一款双人五子棋游戏,并单独完成其中一定量的函数模块。 2,要求该游戏具有趣味性和可操作性,能够正常运行。其中用到C++语言中的各种语句、结构。(如其中需要注意全局变量和局部变量的申明,数组的使用等) 3,双人五子棋要求能够进入欢迎界面,二人对弈,当有五颗同色棋子相连时,判断出输赢等一系列游戏流程。

五子棋比赛活动策划方案

五子棋比赛活动策划方案 一、活动背景及目的纵横交错的棋盘似未来百变的道路,黑白分明的棋子是历经风雨的人生。 为了丰富和活跃校园文化生活,提高我校学生的综合素质,增强学生之间的友谊和竞争意识,营造健康向上的氛围。 我们决定策划开展电气信息系五子棋大赛,为每一个拥有这方面爱好及特长的同学提供一个展现自我的平台,在棋类的对弈中,可以帮助每一名同学锻炼自身的洞察力,培养同学们的大局观和全面思考问题的能力,提高分析问题的能力等。 二、活动组织1)活动总负责:张祎郭丹王金生2)活动策划:沈世玄李媛媛康浩3)活动安排:张祎康浩4)活动地点:北京联合大学师范学院1215教室5)活动时间:5月7日-5月18日6)参加人员:11级12级13级所有电气信息系同学均可报名参加,每班至少报名2人,限报5人。 三、活动内容1、前期准备:1)4月23日开会安排工作:由沈世玄负责绘制报名表格,然后下发至各班负责人,做好报名工作后,将报名人员进行统计,沈世玄李媛媛负责制订总规则。 2)4月28日前将报名表统一交到沈世玄或李媛媛处。 3)5月3日12:15在1215进行抽签工作。 4)5月3日抽调后勤组及其它各组10名左右的裁判进行培训。 5)确定分组后,5月4日上午通知比赛人员,5月7日开始正式

进行比赛工作。 6)所需物品:8—10副的五子棋。 2、比赛过程:1)负责人和裁判11:45到达比赛场地,进行准备工作,通知所有比赛人员于11:55—12:15到场,比赛于12:05正式开始。 遇到上午五节课情况,延时或调整时间。 2)两人一组,预计15—30组,分3—4天完成所有比赛。 3)各组采取三局两胜制,按照正规五子棋比赛规则进行,胜方算通过海选可进行下一轮比赛,负方淘汰出局。 四、注意事项本次比赛,以友谊第一比赛第二为基本,各裁判员要做到公正公平,具体安排如下:1)所有比赛人员要尊重对手,尊重裁判,遵守比赛规则,出现违反上述情况的同学可终止其比赛。 2)摄影技术组组长沈世玄、苏琳负责安排每个比赛日的摄影工作。 3)关于本次活动的未尽事宜,各班负责人将另行通知。 五、后续工作1)宣传组负责撰写此次活动宣传稿件。 2)部员可以就此次活动,提出意见及建议。

基于JAVA的五子棋游戏系统设计与实现

基于JAVA的五子棋游戏系统设计与实 现

基于JAVA的五子棋游戏系统设计与实现专业电子信息工程 学生董永杰 指导教师曾玉

摘要 当前,随着计算机网络的的发展,以计算机技术和网络技术为核心的现代网络技术已经在现实生活和生产中得到了广泛的使用,已经成为多数人群的休闲方式,也为多数人所喜好。当然,为了满足没有网络同样能娱乐的要求,许多小游戏做成了单机和网络的双功能。 本软件使用JAVA语户端之间的连接,利用多线程技术言实现,经过对图形界面,绘图,布局管理器等去构造出游戏的单机功能,在此基础上,利用SCOKET的知识,建立起服务器与客来处理服务器端与客户端之间的数据传输,通信问题,使得客户端和服务器端之间能够同步的进行处理。 经过对软件的编写,更深入的理解了面向对象的概念,也体会到利用面向对象语言处理一些问题的优势。同时也加深了对多线程,流套接字等高级技术的理解。 关键词:多线程;流套接字;数据传输;同步。

ABSTRACT At present, With the rapid development of computer network. Taking computer technology and the network technology as the core, modern network technology is already used in the real life and the production and already became the leisure mode of the most people. And most people like them. Of course, it’s a pity that there still have some clients lacking of network because of various causes. In order to satisfy the above clients’ requirements. A large number of games ,usually nam ed as “small games” by players, are designed for involving two kinds of different function. The former game is often played by these players whose computers never connect with the network. It’s called for stand-alone version games. Just as its name implies, the later is named as online version games This software implemented with JAVA language, and according to the understanding of SCOKET ,GUI and paint image ichnology. Established in these foundation , the server co ects with the multi- client, and transmission the information between many clients using the multi-thread proceeding technology. it is very convenient for both client and server to do the synchronous processing. Through to the software compilation, deepen understanding and grasp to the technology above understanding and holding.

五子棋(JAVA版)实习报告及原代码

实习报告 课程名称信息系统认知实习实习题目java五子棋专业 班级 学号 学生姓名 实习成绩 指导教师 2010年1月 前言

摘要 五子棋作为一个棋类竞技运动,在民间十分流行,为了熟悉五子棋规则及技巧,以及研究简单的人工智能,决定用Java开发五子棋游戏。主要完成了人机对战和玩家之间联网对战2个功能。网络连接部分为Socket编程应用,客户端和服务器端的交互用Class Message定义,有很好的可扩展性,客户端负责界面维护和收集用户输入的信息,及错误处理。服务器维护在线用户的基本信息和任意两个对战用户的棋盘信息,动态维护用户列表。在人机对弈中通过深度搜索和估值模块,来提高电脑棋手的智能。分析估值模块中的影响精准性的几个要素,以及提出若干提高精准性的办法,以及对它们搜索的节点数进行比较,在这些算法的基础上分析一些提高电脑AI方案,如递归算法、电脑学习等。算法的研究有助于理解程序结构,增强逻辑思维能力,在其他人工智能方面也有很大的参考作用。 1引言 1.1课题背景 五子棋是起源于中国古代的传统黑白棋种之一。现代五子棋日文称之为连珠,英译为Renju,英文称之为Gobang或FIR(Five in a Row 的缩写),亦有连五子、五子连、串珠、五目、五目碰、五格等多种称谓。 五子棋起源于古代中国,发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法,一说早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展的一个分支。在中国的文化里,倍受人们的青睐。本世纪初五子棋传入欧洲并迅速风靡全欧。通过一系列的变化,使五子棋这一简单的游戏复杂化、规范化,而最终成为今天的职业连珠五子棋,同时也成为一种国际 比赛棋。 Java语言是当今最为流行的程序设计语言之一作为一门非常优秀和极为健壮的编程语言,它同时具有的面向对象,与平台无关,分布式应用,安全,稳定和多线程等优良的特征,使用Java语言,不仅可以开发出功能强大的大型应用程序,而且Java语言本身突出的跨平台的特性也使得它特别适合于Internet上的应用开发,可以这样说,Java的出现使得所开发的应用程序“一次编写,处处可用”的 实现成为了可能。 1.2本课题研究的意义 近来随着计算机的快速发展,各种各样的电脑游戏层出不穷,使得我们能有更多的娱乐项目,而棋类游戏能起到锻炼人的思维和修身养性的作用,而且棋类游戏水平颇高,大有与人脑分庭抗礼之势。其中战胜过国际象棋世界冠军-卡斯帕罗夫的“深蓝”便是最具说服力的代表;其它像围棋的“手淡”、象棋的“将族”

五子棋

五子棋 作品特点:C语言程序五子棋 作品功能:五子棋人机对战,人人对战。 目录:1 五子棋介绍。 2五子棋棋型介绍。 3人人对战的实现。 4电脑下子的实现。 5棋型价值的计算。 6胜利及棋型的判断。 7补充说明 1五子棋介绍。 五子棋是一种两人对弈的纯策略型棋类游戏。只要任意一方在棋盘上且同一个回合上连为五子为胜。还有禁手规则,在本程序中不作讨论。 2五子棋棋型介绍。 本程序中的棋型均为本人自定义。本程序总共设计35种棋型。●表示玩家的棋子,◎表示电脑的棋子。以下称电脑方为己方,玩家方为对方。从一空点向某一方向判断该方向的棋型。某一方向指1-8方向从右顺时针开始数。

(1)空棋型。从一空点向一方向看连续2个为空的棋型。空棋型共1种。 如图,从左端的空点向右看会发现有连续2个空点。 (2)活棋型。2端无挡的棋型为活棋型。活棋型共8种:己方4种,对方4种。 左图为己活 3 。从左端的空点向右看会发现己方有连续的3个子,且右端无挡。故该点的1方向为己活3。 左图为对活2 (3)冲棋型。1端无挡的棋型为冲棋型。冲棋型共9种:己方4种,对方4种,边界1种。 左图为边界冲棋型。空点的右端为边界。 或左图为己冲2。从左端的空点向右看会发现己方有连续的2个子,且右端有挡(此处有挡表示有对方的子或为边界)。故该点的1方向为己冲2。 左图为对冲4。 (4)空活棋型。从一空点向一方向看有1个空点,继

续看有己方或对方的活棋型。空活棋型共8种: 己方4种,对方4种。 左图为己空活2。从左端的空点向右看有1个空点,继续看会发现己方有连续的2个 子,且右端无挡。故该点的1方向为己空活2。 左图为对空活1。 (5)空冲棋型。从一空点向一方向看有1个空点,继续看有己方或对方或边界冲棋型。空冲棋型共9 种:己方4种,对方4种,边界1种。 左图为边界空冲棋型。空点的右端为空点再右看为边界。 或左图为己空冲2。 从左端的空点向右看有1个空点,继续看会发现己方 有连续的2个子,且右端有挡。故该点的1方向为己 空冲2。 3人人对战的实现。 双方玩家轮流下子,直到一方形成五连即判为胜方。下子时输入棋盘上显示的对应坐标。如果某方需要悔棋,则输入 15 15 即可。悔棋只能悔一步。在人机对战中亦可悔棋。

“银河灿烂,五子连星”五子棋大赛策划书通用范本

内部编号:AN-QP-HT652 版本/ 修改状态:01 / 00 In The Early Stage Of Research, Through The Assumption And Conception Of The Implementation Plan, We Can Form An Effective Plan, And Analyze And Summarize The Resources And Other Stage Results Of The Proposed Plan, So As T o Form Methods And Experience T o Guide The Future Of Similar Matters. 编辑:__________________ 审核:__________________ 单位:__________________ “银河灿烂,五子连星”五子棋大赛 策划书通用范本

“银河灿烂,五子连星”五子棋大赛策 划书通用范本 使用指引:本方案文件可用于前期的研究中,通过对落实计划的设想和构思,形成有效的方案,并对拟建方案所取得的资源等阶段成果进行分析总结,形成方法经验来指导未来同类事项的进行。资料下载后可以进行自定义修改,可按照所需进行删减和使用。 活动主题:“银河灿烂,五子连星”五子棋大赛 活动目的:为发展我校五子棋,提高五子棋水平,并“以棋会友”,来增进各高校之间的友谊,同时丰富大学生活。 活动介绍:一、主办单位:云南大学棋友联盟 二、比赛项目:五子棋 三、比赛时间:XX年5月11日 四、比赛地点:云南大学呈贡校区城建之家

基于JAVA的五子棋游戏系统设计与实现

基于JA V A的五子棋游戏系统设计与实现专业电子信息工程 学生董永杰 指导教师曾玉

摘要 目前,随着计算机网络的的发展,以计算机技术和网络技术为核心的现代网络技术已经在现实生活和生产中得到了广泛的使用,已经成为多数人群的休闲方式,也为多数人所喜好。当然,为了满足没有网络同样能娱乐的要求,许多小游戏做成了单机和网络的双功能。 本软件使用JAVA语户端之间的连接,利用多线程技术言实现,通过对图形界面,绘图,布局管理器等去构造出游戏的单机功能,在此基础上,利用SCOKET 的知识,建立起服务器与客来处理服务器端与客户端之间的数据传输,通信问题,使得客户端和服务器端之间能够同步的进行处理。 通过对软件的编写,更深入的理解了面向对象的概念,也体会到利用面向对象语言处理一些问题的优势。同时也加深了对多线程,流套接字等高级技术的理解。 关键词:多线程;流套接字;数据传输;同步。

ABSTRACT ABSTRACT At present, With the rapid development of computer network. Taking computer technology and the network technology as the core, modern network technology is already used in the real life and the production and already became the leisure mode of the most peo ple. And most people like them. Of course, it’s a pity that there still have some clients lacking of network because of various causes. In order to satisfy the above clients’ requirements. A large number of games ,usually named as “small games” by players, are designed for involving two kinds of different function. The former game is often played by these players whose computers never connect with the network. It’s called for stand-alone version games. Just as its name implies, the later is named as online version games This software implemented with JAVA language, and according to the understanding of SCOKET ,GUI and paint image ichnology. Established in these foundation , the server co ects with the multi- client, and transmission the information between many clients using the multi-thread proceeding technology. it is very convenient for both client and server to do the synchronous processing. Through to the software compilation, deepen understanding and grasp to the technology above understanding and holding. Key Words: multiple thread, Socket, transmission-data, synchronism.

五子棋教案

教学目标: 激起学生学习五子棋的兴趣,教育学生沉着冷静,有良好的棋风。 教学准备:五子棋 教学过程: 一、认识五子棋 1.出示棋盘和棋子,教师演示,让学生认识什么是五子棋。 了解:五子棋是一种两人对弈的纯策略型棋类游戏,是起源于古代的传统种之一。发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高,而且富含,有助于修身养性。 2.明确我们社团的活动内容:五子棋。 二、学下五子棋 1、请会下五子棋的学生说说下棋的规则及下棋的经验。 2.教师总结下棋规则: ①摆成连线的五个子后,则算赢; ②如果手中的子全摆完,则移动棋盘上的子,每次棋只走一步; ③棋盘上的子不列五个就算输。 三、找棋友,分成组 可让学生自行找棋友,拼成三人一组或两人一组,三人一组的,其中一人可当裁判。 四、学生下五子棋 1.小组内可举行比赛,采用三局两胜制,决出优胜者。 2.请小棋手介绍取胜经验 3.结合活动情况评出本次小棋手

教学目标: 在老师帮助下认识五子棋的棋具,学会正确执子下子。 教学准备:五子棋棋具、图片 教学过程: 一、结合实物、图片认识五子棋的棋具 1.棋具包括棋盘和棋子。 2. 了解棋具历史:相传中华民族的祖先轩辕黄帝无意之中画下了十七条横线十条竖线,这无意中的发明造就出了五子棋。早在公元595年古人就用瓷来烧制了。 千百年来,人们用各种材质来制造围棋的棋子,如:玻璃、瓷器、玉、玛瑙、铜等等。 古代五子棋棋盘与围棋棋盘是通用的。五子棋棋子亦称“棋石”分黑、白两色,形状为扁圆形,有一面凸起或两面凸起等形状,厚度不超过厘米,直径为~厘米;一副棋子总数为225枚,其中黑子113枚,白子112枚。按质地的不同,可分为玻璃、陶瓷、塑料、智石、磁铁、蛤贝、烧料、水晶、玛瑙、玉石等棋子。 国内质量比较好的是云子,而日本常用的棋子是贝壳制作的。 3. 认识棋盘和棋子 棋盘:认识棋盘横竖线,交叉点。横向从左到右用a到o共十五个英语字母标出,竖向从下到上用1到15共十五个阿拉伯数字标出。棋盘上的横线和竖线共交叉形成了225个交叉点,棋子就落在棋盘的这些交叉点上。 棋盘上有5个比较特殊的交叉点,用小黑点标识出来,叫做星;中间的星叫天元,表示棋盘的正中心; 四周的4个星叫小星,表示棋盘的四个角落;星在棋盘上起一定的标示位置作用。 棋子:由黑白两种颜色组成。一人拿黑棋,另一个人拿白棋,黑棋先走,白棋后走。共有225个棋子,与交叉点的个数相同;其中黑棋113个,白棋112个,不过平时下棋棋子少些也是可以的。正确的拿棋子的方法是食指的指甲与中指的指肚儿夹住棋子。棋子落在棋盘的交叉点上,落下后不能移动,也不能吃子。 4.学生练习执子、下子,相互纠正。 二、学生分组下五子棋。 五子棋教育活动(三)

象棋、五子棋比赛活动策划书

中国象棋、五子棋比赛 策 划 书 南通大学理学院学生会 生活权益部 二零一三年二月十五日张玉制

中国象棋、五子棋比赛活动策划书一、活动主题: 纹屏论道,乐在其中;横車纵馬,胜负你握。 二、活动目的: 1.通过这次活动,让更多同学们能展示自己的智慧,在对决 中证实自己的沉稳和睿智; 2.为了丰富大学生的校园文化生活,带动青春气息; 3.培养同学们的个人爱好,提高我校学生的象棋水平; 4.提倡良好的棋德棋风,发扬高尚的竞技精神。 三、主办单位: 南通大学理学院学生会 四、承办单位: 南通大学理学院学生会生活权益部 五、活动时间: 2013年3月23日中午12:00 六、活动地点: 南通大学大学生活动室

七、活动对象: 南通大学理学院大一、大三在校生 八、活动准备: 1.宣传:在3月10日左右,请宣传部帮忙绘制海报(五、六 幅左右即可),同时定制横幅。18日左右生活权益部各干事 帮忙拉横幅、贴海报。每个干事也要根据自己对应的班级情 况,向各班通知这次活动(大三的,向各班班长打电话通知,另外每班必须要有四、五人参加); 2.购买物品:四个保温杯、八只钢笔、八个笔记本、象棋五子 棋若干(由于决赛有几组未知,故若奖品不够可在赛前再购 买)、一条横幅; 3.邀请人员:邀请大三学姐、学长及学生会相关人员当裁判、 记录员、统计人员、会场秩序维持人员(活动结束后邀请辅 导员颁发奖品及证书); 4.场地申请即借物品:分配相关工作人员去申请借用大学生活 动室和借桌椅(桌子16张左右,椅子20张左右); 5.人数统计:对大一、大三参加五子棋、象棋的人进行统计, 根据人数进行编号,20日左右集中选手进行抽签(以抽到相 邻的两个数的选手为一对进行PK),初赛、复赛、决赛都将 以这种方式进行。

五子棋游戏总体设计与实现

五子棋游戏总体设 计与实现

4.系统总体设计与实现 4.1 总体设计分析 总体设计是软件开发过程中的另一个重要阶段,在这一阶段中将根据需求分析中提出的逻辑模型,科学合理地进行物理模型的设计。这个阶段的主要目标是将反映用户信息需求的逻辑方案转换成物理方案,并为下一阶段提供必要的技术资料。 4.1.1 总体设计原则 (1)整体性:软件是作为统一整体而存在的。因此,在总体设计中要从整个软件的角度进行考虑。 (2)灵活性:为保持软件长久的生命力,要求该手机游戏软件具有很强的环境适应性。为此,游戏软件应具有较好的开放性和结构的可变性。 (3)可靠性:可靠性是指软件抵御外界干扰的能力及受外界干扰时的恢复能力。 (4)经济性:经济性是指在满足游戏软件需求的前提下,尽可能地减小游戏软件的开销。 4.1.2 软件模块总体设计 软件中各模块之间的关系一般利用层次图来表示。它是一种一系列多层次的用树形结构的矩形框描绘数据的层次结构框图。

一个单独的矩形框作为树形结构的顶层,各个数据的子集由下面的各层矩形框代表,最底层的各个矩形框代表组成这个数据的实际数据元素(不能再分割的元素),它代表完整的数据结构。这模式非常适合于需求分析阶段的需要,层次方框图对数据结构描绘随着结构精细化也越来越详细。重复细化沿着图中每条路径,从对顶层信息的分类开始,直到确定了数据结构的全部细节为止。 图4-1 游戏功能结构 本研究中将游戏软件分为三大模块,如图4-1所示,包括:游戏选项、游戏设置和帮助。按照在调研中搜集的资料对每个模块的功能进行编排制作。依据上述功能的分析,本研究中,将游

戏软件在三大模块的基础上又对每一大模块又分为几个子模块:游戏选项包括六个模块:开始游戏、重新游戏、悔棋、认输、背景音乐和退出游戏。 游戏设置包括三个模块:先后手设置、棋盘底纹颜色设置和棋盘大小设置。 帮助包括两个模块:游戏帮助和关于。 4.2 游戏设计 4.2.1 游戏前的准备 本游戏在开发之前需要做一些前期准备工作,特别是对于精通五子棋游戏的Java 游戏开发者来说。一般情况下,一款运用起来比较熟练地J2ME 开发工具是必不可少的。本游戏使用的是J2ME的简化开发工具Sun Java (TM) Wireless Toolkit 2.5.2 for CLDC,她需先将Java虚拟机安装调试好之后才能使用。WTK 2.5.2 不带有文本编辑功能,因此需要另寻搭配使用。本游戏采用Ultra Edit 进行编辑。本游戏需要几张后缀名为.png格式的卡通图,除了一张用作五子棋游戏的 Logo 外,其余的都将在游戏中使用。4.2.2 游戏界面和事件驱动设计 游戏的界面设计采取传统游戏界面风格,如图4-2所示。游戏设计中采用传统界面游戏风格,首先启动游戏,然后进入游戏开始界面,界面中放置“设置”、“开局”、“帮助”、“关

课程设计报告--c++课程设计五子棋游戏

徐州师范大学物电学院课程设计报告 课程名称:计算机程序设计实训 题目:五子棋 专业班级: 09物41 学生姓名:高乐莲 学生学号: xxxx ___________ 日期: 2011.12.24 指导教师:赵纪平 物电学院教务部印制

说明: 1、报告中的第一、二、三项由学生在课程设计开始前填写,由指导教师指 导并确认签字。 2、学生成绩由指导教师根据学生的设计情况给出各项分值及总评成绩,并 填写成绩评定表。 3、所有学生必须参加课程设计的答辩环节,凡不参加答辩者,其成绩一律 按不及格处理。答辩小组成员应由2人及以上教师组成。答辩后学生根据答辩情况填写答辩记录表。 4、报告正文字数一般应不少于3000字,也可由指导教师根据本门课程设 计的情况另行规定。 5、平时表现成绩低于6分的学生,取消答辩资格,其该课程设计成绩按不 及格处理。 6、课程设计完成后,由指导教师根据完成情况写出总结。 7、此表格式为徐州师范大学物理与电子工程学院提供的基本格式,指导教 师可根据本门课程设计的特点及内容做适当的调整。

指导教师签字: 年月日

目录 摘要...................................................................................................II Abstract................................................................................................ II 1 绪论 (1) 1.1 课题背景 (1) 1.2 课程设计的目的 (1) 2 设计方案简述 (2) 2.1 可行性分析 (2) 2.2 需求分析 (2) 3 详细设计 (3) 3.1窗体设计 (3) 3.2游戏项目开发 (5) 3.2.1棋牌设置 (5) 3.2.2放置棋子功能的开发 (6) 3.3.3游戏获胜决断的开发 (12) 3.2.4游戏的调试与运行 (20) 4 设计结果及分析 (22) 4.1 程序的结果 (22) 4.2结果分析 (23) 5总结 (24) 参考文献 (25)

五子棋-Java课程设计

《面向对象程序设计》 课程设计报告 实验时间:2010年10月26日 实验班级:********************** 实验报告总份(片)数: 1 份(片) 实验指导老师:***** ******* 设计小组 湖南省吉首市吉首大学 课程设计报告 简单的游戏——五子棋 小组成员(姓名、学号): **(组长)** ** ** ** ** 一、实验分工

二、开发环境(实验编译以及测试环境) 硬件环境: CPU:Intel 奔腾双核E5200 主频2.5GHz 内存:2G 软件环境: 操作系统:Windows 7 编程环境JDK7.0 开发工具:Eclipse SDK 三、使用环境(用户运行环境) 硬件环境: CPU主频在500MHZ以上,内存在128M以上 软件环境: JAVA运行环境+ Windows XP或Windows 2000 以上操作系统 目录 第一章总体设计.............................................................................................................................. 1 1.1设计的目的.......................................................................................................................... 1 1.2本系统的主要功能.............................................................................................................. 1 1.3系统包含的类及类之间的关系。...................................................................................... 1 1.4 Java源文件及其功能......................................................................................................... 2 1.5 项目构建思路..................................................................................................................... 2第二章模块功能介绍.................................................................................................................. 12 2.1主类Chess...................................................................................................................... 12

Python-大作业之五子棋游戏(附代码)

Python 大作业——五子棋游戏 姓名:学号: 姓名:学号: 一游戏介绍: 我们设计的是五子棋游戏,支持两人一个鼠标对下,黑方用左键单击,白方用右键单击,谁先下均可,落子无悔,下过的棋子对方点击后不会变色,程序可自行判断输赢并在五子连珠时弹出结果对话框,游戏双方需遵守不在空地点击和一次下一子的规则。 二游戏代码设计: 代码均为原创,没有借鉴和抄袭,首先是用户GUI界面设计,点击start进入游戏界面,点击quit则退出程序,为了方便判断和记录,我们按从左到右,从上到下的顺序给15x15=225颗棋子编号225,左键绑定函数callback1,点击后可算出它位于哪颗棋子上再画出来黑子,并把对应编号计入record这个列表,之后进入判断函数。右键绑定函数callback2,点击后画出白子,对应编号计入recor这个列表,之后进入判断函数,其中总列表rec的作用是使棋子不被下第二遍。 三作业感想 这个游戏虽然很小但是可以供室友们晚上娱乐之用,我们倾注了很多心血,之前采用模块化编程失败了很多次,有事件响应问题,参数传递问题,到第七个程序才成功,感谢张同珍老师指点了很多,

我们学会了使用类,受益匪浅,对Python产生了浓厚的兴趣。四过程截图 五、实验代码 from Tkinter import * from tkMessageBox import * class Game: def __init__(self): self.A=[] self.B=[] self.record=set()

self.recor=set() self.rec=self.record|self.recor self.root=Tk() self.root.geometry("180x250") self.root.title("Wu Zi Qi Game") 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="***Wu Zi Qi Game***",fg="red").place(x=20,y=0) Button(self.root,text="start",command=self.start).place(x=30,y=230) Button(self.root,text="quit ",command=self.root.destroy).place(x=100,y=230) self.r.mainloop() def start(self): self.root.destroy() self.top=Tk() self.top.title("Game Start") self.c=Canvas(self.top,width=480,height=480,bg="white") self.c.pack() self.c.create_rectangle(25,25,455,455,fill="gray") for i in range(30,451,30): for j in range(30,451,30): self.c.create_oval(i-2,j-2,i+2,j+2,fill="blue") for i in range(1,16): self.c.create_line(30,30*i,450,30*i) self.c.create_line(30*i,30,30*i,450) self.c.create_oval(234,234,246,246,fill="black") self.c.create_oval(115,115,125,125,fill="black") self.c.create_oval(355,115,365,125,fill="black") self.c.create_oval(115,355,125,365,fill="black") self.c.create_oval(355,355,365,365,fill="black") self.c.bind("",self.callback1) self.c.bind("",self.callback2) self.c.mainloop() def callback1(self,event): u,v=event.x,event.y s=u/15 if s%2==1: self.x=(s+1)/2 else: self.x=s/2

相关主题
文本预览
相关文档 最新文档