五子棋游戏设计方案

绝世美人儿
993次浏览
2021年01月18日 14:53
最佳经验
本文由作者推荐

少儿美术课程-愚人节的英文

2021年1月18日发(作者:余玠)
百度文库

-
让每个人平等地提升自我















一、摘要:
................................. 1

二、关键字:
............................... 1

三、程序主流程图
........................... 2

四、需求分析:
............................. 3

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

六、文件清单:
............................. 9

七、使用说明:
............................. 9

八、参考书目:
............................. 10

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




























五子棋程序



一、








摘要:


1
百度文库

-
让每个人平等地提升自我





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




1






棋子棋盘在程序中的表示;




2






如何通过鼠标点击落子;




3






如何判断输赢,在棋盘的—,
|

/


,四个方
向进行搜索,超过
5
子以上连成一线 则认为赢了。




4






如何实现梅棋功能。




5






如何保存并读入棋谱;




6






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




7






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



8






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





二、关键字:


棋盘数组


搜索算法


人工智能





半活


双活三













2
百度文库

-
让每个人平等地提升自我































































三、程序主要类结构图




3
百度文库

-
让每个人平等地提升自我


CfiveStoneApp





























































































































































4
百度文库

-
让每个人平等地提升自我








四、需求分析:


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






五子棋是起源于中国古代的传统黑白棋种之一。 现代五子棋日文称之为“連珠”
,英译
为“
Renju

,英文称之 为“
Gobang
”或“
FIR

(Five in a Row< br>的缩写
)
,亦有“连五子”

“五
子连”

“串珠”

“五目”

“五目碰”

“五格”等多种称谓。
?
五子棋不仅能增强思维能力,
提高智力,
而且富含哲理,
有助于修 身养性。
五子棋既有现代休闲的明显特征
“短、
平、
快”

又有古典哲学的高深学问“阴阳易理”
;它既有简单易学的特性,为人民群众所喜闻乐见,
又有 深奥的技巧和高水平的国际性比赛;
它的棋文化源渊流长,
具有东方的神秘和西方的直
观;既有“场”的概念,亦有“点”的连接。它是中西文化的交流点,是古今哲理的结晶。
?


五子棋起源于古代中国,
发展于日本,风靡于欧洲。对于它与围棋的关系有两种说法 ,
一说
早于围棋,早在“尧造围棋”之前,民间就已有五子棋游戏;一说源于围棋,是围棋发展 的
一个分支。
在中国的文化里,倍受人们的青睐。古代的五子棋的棋具与围棋相同,
纵 横各十
七道。
五子棋大约随围棋一起在我国南北朝时先后传入朝鲜、
日本等地。
据日本史料文献介
绍,
中国古代的五子棋是经由高丽
(
朝鲜
)

1688
年至
1704
年的日本元禄时代传到日本的。到日本明治
32

(
公元
1899

)
,经过公开征名,
“连珠”这一名称才被正式确定下来,取
意于
“日月如合壁,五星如连珠”

从此,
连珠活动经过了不断的改良,
主要是规则的变化< br>(

对执黑棋一方的限制
)
,例如,
1899
年规定 ,禁止黑白双方走“双三”

1903
年规定,只禁
止黑方走
“双三 ”

1912
年规定,
黑方被迫走
“双三”
亦算输;
1916
年规定,
黑方不许走
“长
连”

1918
年规定,黑方不许走“四、三、三”

1931
年规定,黑方不许走“双四”
,并规定

19
×
19
的围棋盘改为
15
×15
的连珠专用棋盘。
本世纪初五子棋传入欧洲并迅速风靡全欧。
通过一系列的变 化,
使五子棋这一简单的游戏复杂化、
规范化,
而最终成为今天的职业连珠
五 子棋,
同时也成为一种国际比赛棋。
?


目前,
职业连 珠已迅速在国际上发展起来。
1988

8

8
日,国际连 珠联盟
(RIF)
由日本、俄罗斯、瑞典、亚美尼亚、阿塞拜疆、爱沙尼亚、
法国、拉 脱维亚、白俄罗斯等
9
个成员国在瑞典宣告创立,我国于
1996
年正式加入 国际连
珠联盟,现在全世界已有
47
个国家和地区成为国际连珠联盟的正式会员。职业 连珠的世界
锦标赛从
1989
年起每两年举办一次,现已举办了六届,第三、五、六届 的冠军是爱沙尼亚
人,其余三届的冠军都是日本人。我国最好成绩是团体第七,
个人张进宇第< br>9
名。
就水平而
言,目前以俄罗斯、日本、瑞典最强,其中日本研究也最深,我 国只处于中等水平。日本拥
有自己的五子棋职业棋手,
并且对连珠技术的研究也相当普遍和全面 。
日本每年举行连珠名
人战。
?


五子棋的根在中国, 有着广泛的群众基础。但与世界先进的五子棋技术相比,
我们的棋艺水平还很低,
所以我们要推 广五子棋,
宣传五子棋,
争取在较短的时间内赶上和
超过世界五子棋坛的先进水平。< br>1990
年,由那威和十几名五子棋爱好者,共同发起并成立
了中国第一个现代职业五子 棋的民间组织
----
京都五子棋队,现已发展成为拥有百余名选手
的北京京都五子棋 队。
日本连珠联盟曾多次派代表团访问中国,
与中国广大爱好者进行交流
和友谊比赛, 瑞典连珠联盟也于
1995
年派代表团访问了中国,京都五子棋队曾两次选派选
手代表 中国参加世界杯比赛,
取得此成绩反映了我国五子棋水平在世界上所处的位置,
同时
也 显示了我国在此项运动中的发展潜力。
1997

5
月北京成功地举办了第一 届“康柏杯”
5
百度文库

-
让每个人平等地提升自我


国际五子棋名人邀请赛,
引起了国际棋联的极大重视,
并在第四十四届棋联 会议上提出:
“中
国作为五子棋的发源国,
不仅回到了国际大家庭中来,
更重 要的是对五子棋在下个世纪的发
展起到了世界性的推动作用,并将为国际连珠棋成为奥运项目做出贡献。

?


随着
1996
年中央电视台
( CCTV-5)
《黑白世界-五子棋讲座》的开播和中国五子棋网上比赛的开通,
将世界连珠五 子棋运动的最新状况及时展现在眼前,为五子棋爱好者提供了尽情参与的机
会,
这无疑对国内的 普及、
发展起到了推动的作用。
北京连珠五子棋体育文化交流中心已拥
有了
2 2
位国际段位棋手,他们肩负着新的历史使命,不断为中国五子棋爱好者提供立足国
内、面向世 界、一展才华的机会。我国于
1998

8
月成功地举办了第二届世界杯青少 年锦
标赛,
1999

7
月在北京举办了第六届世界杯冠军赛,2000
年将举办第三届世界杯团体赛。
在北京的带动下,
全国其他地区也先后成 立了五子棋组织。
河北廊坊地区成立了廊坊五子棋
协会;
天津市成立了由天津市体委领 导的天津市五子棋工作委员会;上海、
云南、
杭州等地
也都成立了五子棋的组织。五子 棋的发展在中国出现方兴未艾之势。
?


一位哲人说过:
“中国 人的智慧火种,
往往使外国人得以燎原,
反过来,
燎原的火焰必将照亮火种的源头。< br>”



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


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


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


1




如何表示棋盘棋子。


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


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



0
表示未落子;



1
表示黑子;



2
表示白子。





注:


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


long






FiveChess[15][15];

在主程序中初始化:


for(int

I=0;I<15;I++)
6
百度文库

-
让每个人平等地提升自我

















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






















FiveChess[I][j]=0;


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









2




如何用鼠标落子。


算法:


当程序在棋盘上点击一次后,
捕获这个鼠标点击位置,< br>如果这个点的位置在棋盘在棋盘范围
内,则认可这一鼠标点击,否则,则认为这次鼠标点击无效。 若鼠标点击在棋盘范围之内,
则还要进一步判断,

在这个位置是否已经落下了子,< br>如果是也认为此次点击无效,
如不是,
则在棋盘数组填写相应的数据(或
1
2

,并相应的位置画出一个棋子。


具体实现:


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



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

POINT
定义的结构中:


POINT pp;

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





下一步:


POINT ArrayPp=PositionToPosition(pp);

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










7
百度文库

-
让每个人平等地提升自我












0

1


2



3


4



5


6


7



8


9


10

11

12

13


14

50,50
































































































8
百度文库

-
让每个人平等地提升自我
































































































































9
百度文库

-
让每个人平等地提升自我
































































































































10

少儿美术课程-愚人节的英文


少儿美术课程-愚人节的英文


少儿美术课程-愚人节的英文


少儿美术课程-愚人节的英文


少儿美术课程-愚人节的英文


少儿美术课程-愚人节的英文


少儿美术课程-愚人节的英文


少儿美术课程-愚人节的英文