五子棋游戏__课程设计报告(含源代码可以运行)
萌到你眼炸
901次浏览
2021年01月27日 22:18
最佳经验
本文由作者推荐
大学生诚信调查报告-庙会走透透
v1.0
可编辑可修改
《软件基础》大作业
项目名称
:
五子棋游戏
学
号
:
0510
0605
姓
名
:
校建林
朱颖
完成时间
:
2011
年
11
月
28
日
指导教师
:
鲁可
I
I
v1.0
可编辑可修改
目录
第一章
需求分析
.................................................. .................................................. ......................................... 1
开发背景
................................. .................................................. .................................................. ...................... 1
第二章
技术线路
..................................... .................................................. .................................................. .... 5
技术线路模块图
....................... ................................
5
技术线路说明
................................... ......................
5
第五章
总结
....................................... .................................................. .................................................. .......... 8
附录一
参考文献
........ .................................................. .................................................. ................................. 8
II
II
v1.0
可编辑可修改
五子棋游戏
第一章
需求分析
开发背景
软件需求分析是软件开发周期的第一个阶段,
也是关系到软件开发成败的关键一
步。
对于任何一个软件而言,
需求分析工作 都是至关重要的一步。
只有通过软件需求
分析,
才能把软件的功能和性能由总体的概念 性描述转化为具体的规格说明,
进而建
立软件开发的基础。
实践表明,
需求分 析工作进行得好坏,
在很大程度上决定了软件
开发的成败。
软件需求分析的 任务是:
让用户和开发者共同明确将要开发的是一个什么样的软
件。具体而言,就是通过对问题 及其环境的理解、分析和综合,建立逻辑模型,完成
新软件的逻辑方案设计。
基于本 游戏,
首先得为整个棋盘建立一张表格用以记录棋子信息,
我们使用一个
15*15< br>的二维数组
Table[15][15](15*15
是五子棋棋盘的大小
)< br>,数组的每一个元素
对应棋盘上的一个交叉点,用‘0’表示空位、‘1’代表己方的子、‘2’ 代表对方
的子;
这张表也是今后分析的基础。
在此之后还要为两个玩家双方各建立一张 棋型表
Computer[15][15][4]
和
Player[15][15][ 4]
,用来存放棋型数据。
项目目标
五子棋与游戏开发具体任务完成日期以及任务的具体分
配
五子棋游戏开发成员:校建林、朱颖。
五子棋游戏开发具体的任务步骤:
1.
需求分析
内容包括:总体分析、五子棋与游戏开发成员和具体任务完成日期以及任务的具体分配、
初始化、< br>主循环控制模块、玩家下子、盘面分析填写棋型表、
对方下子、胜负判
断。
2.
技术线路
1
v1.0
可编辑可修改
内容包括:采用的软件及开发平台是什么。
项目的总体方案—包括模块及模块间的联系、信息流、数据流等。
项目的详细设计—包括模块的功能、数据结构及算法等。
技术线路模块图技术线路模块图、技术线路说明。
3.
系统设计
内容包括:流程图、流程图说明。
4.
程序测试分析
5.
总结。
6.
源代码。
2.
具体日期完成任务
1.
第五周完成任务:完成具体的需求分析 中的总体分析、五子棋与游戏开发成员
和具体任务完成日期以及任务的具体分配、初始化、主循环控制模 块等部分内容
的任务。
2.
第六周完成任务:
完成具的需求分析中 的玩家下子、
盘面分析填写棋型表、
对
方下子、胜负判断等部分内容的任务。
3.
第七周完成任务:< br>完成具的功能描述的功能模块图、
功能说明部分内容的任务。
4.
第八周完成任务:完成具的系统设计的流程图、流程图说明部分内容的任务。
5.
第九周完成任务:完成具的程序测试结果部分内容的任务。
6.
第九周完成任务:完成具的五子棋游戏源代码中的初始化程序任务。
7.
第九周完成任务:完成具的五子棋游戏源代码中的主循环控制模块程序任务。
8.
第十周完成任务:完成具的五子棋游戏源代码中的玩家下子的有关程序任务。
< br>9.
第十一周完成任务:完成具的五子棋游戏源代码中的盘面、棋型的有关程序任
务。< br>
10.
第十二周完成任务:完成具的五子棋游戏源代码中的对方下子的有关程序任务。
11.
第十二周完成任务:完成具的五子棋游戏源代码中的整体程序任务。
2
v1.0
可编辑可修改
12.
第十三周完 成任务:
完成具的系统设计的流程图、
流程图说明部分内容的任务。
13..
第十四周完成任务:完成具的程序测试结果以及总结部分内容的任务。
3.
五子棋游戏开发具体任务的具体分配
1.
校建林、朱颖共同完成需求分析任务。
-
2.
校建 林完成具体的需求分析中的总体分析、
五子棋与游戏开发成员和具体任
务完成日期以及任务的具 体分配、初始化、主循环控制模块等部分内容的任务。
3.
朱颖完成具的需求分析中的玩家下子、盘面分析填写棋型表、
对方下子、胜
负判断等部分内容的任务。
4.
校建林、朱颖共同完 成具的功能描述的功能模块图、功能说明部分内容的任
务。
5.
校建林、
朱颖共同完成具的系统设计的流程图、
流程图说明部分内容的任务。
6.
校建林完成具的程序测试结果部分内容的任务。
7.
校建林、朱颖共同完成具的五子棋游戏源代码中的初始化程序任务。
8.
校建林、朱颖共同完成具的五子棋游戏源代码中的玩家下子的有关程序任务
。
10.
校建林完成具的五子棋游戏源代码中的玩家下子的有关程序任务。
11.
朱颖完成具的五子棋游戏源代码中的盘面、棋型的有关程序任务。
12.
校建林、
朱颖共同完成具的五子棋游戏源代码中的对方下子的有关程序任务。
13
.校建林、朱颖共同完成具的五子棋游戏源代码中的整体程序任务。
14.
校建林、
朱颖共同完成具的系统设计的流程图、
流程图说明部分内容的任务。
15.
校建林、朱颖共同完成具的
程序测试结果以及总结部分内容的任务。
运行环境
初始化
首
先
,
建
立
盘
面
数
组
Table[15][15]
、< br>对
战
双
方
的
棋
型
表
Compute r[15][15][4]
和
Player[15][15][4]
并将它们清零以备 使用;然后初始化显示器、键盘、鼠等输入输出设备并在
屏幕上画出棋盘(棋盘可以不显示)
。
项目任务书
主循环控制模块
控制下棋顺序,当轮到某方下子时,负责将程序转到相应的模块中去,主要担当一个调度者
3
v1.0
可编辑可修改
的角色。
玩家下子
当轮到玩家下时,
您通过键盘或鼠标在棋盘上落子,< br>程序会根据该点的位置,
在
Table[15][15]
数组的相应地方记录‘ 2’,以表明该子是玩家下的。
盘面分析填写棋型表
您在下五 子棋时,
一定会先根据棋盘上的情况,
找出当前最重要的一些点位,
如
“活三 ”、“冲四”等;然后再在其中选择落子点。先来分析己方的棋型,我们从棋
盘左上角出发,向右逐行搜 索,当遇到一个空白点时,以它为中心向左挨个查找,如
果遇到己方的子则记录然后继续,
如果 遇到对方的子、
空白点或边界就停止查找。
左
边完成后再向右进行同样的操作;
最后把左右两边的记录合并起来,
得到的数据就是
该点横向上的棋型,然后把棋型的编号填入 到
Computer[x][y][n]
中就行了(
x
、
y
代表坐标,
n=0
、
1
、
2
、
3
分别代表 横、竖、左斜、右斜四个方向)
。而其他三个方向
的棋型也可用同样的方法得到,当搜索完整张 棋盘后,己方棋型表也就填写完毕了。
然后再用同样的方法填写对方棋型表。
注意:所有棋型的编号都要事先
定义好,越重要的号数越大!
对方下子
有
了
上
面
填
写的
两
张
棋
型
表
,
就
是
遍历
棋
型
表
Computer[15][15][4]
和
Player[15][15][4]
找出其中数值最大的一点,在该点下子即可。但这种算法的弱点< br>非常明显,
只顾眼前利益,
不能顾全大局,
这就和许多五子棋初学者一样犯了“ 目光
短浅”的毛病。
如果在这儿下子将会形成对手不得不防守的棋型
(例如 :
‘冲四’、
‘活三’)
;那么下一步对手就会照您的思路下子来防守您,如此一来便 完成了第一
步的预测。
这时再调用模块
4
对预测后的棋进行盘面分析,
如果出现了‘四三’、
‘双
三’或‘双四’等制胜点,
那么己方就可以获胜了
(当然对黑棋而言‘双三’、
‘双
四’是禁手,
另当别论)
;
否则 照同样的方法向下分析,
就可预测出第二步、
第三步……
等一等,要是盘面 上没有对手必须防的棋型,哪该怎么办呢进攻不成的话就得考虑防守了,
将自己和对手调换一下位置,然 后用上面的方法来预测对手的棋,这样既可以防住对手巧妙的攻
4
v1.0
可编辑可修改
击,又能待机发动反击,何乐而不为呢!
胜负判断
务须多言,
某方形成五子连即获胜;
若黑棋走 出‘双三’、
‘双四’或长连即以禁手
判负。
第二章
技术线路
技术线路模块图
五子棋游戏
判断< br>棋盘
是否
已满
判断
是否
出错
并提
示
判断
那方
获胜
交替
循环
双方
下棋
图
功能模块图
技术线路说明
该五子棋程序基本上实现了五子棋的游戏功能,有双方下棋的界面及最 终判定结果的界面。
同时该游戏采用二维坐标实现,
明了易懂,
方便玩家在游戏过程中 的基本操作,
使游戏更加简便。
在细节方面,该系统提供实时存储功能,随时记录为完成的游戏 ,使用户可以很好的处理意外中
断的情况。该游戏基本实现了游戏的一些要求和特征。在游戏的源程序及 文档方面,我们也严格
遵守软件工程思想,
立足实验要求,
确定任务,
需求分 析,
设计和编码,
每个步骤力求清晰易懂。
原代码注释详尽,各功能模块功能分明,可 移植性强。当然该系统也有很多不足的地方,第一次
进行独立的课程设计,也有很多细节方面是考虑到的 ,这款游戏也是在不断的调试和修改中产生
和完善的。希望老师能够指出不足,帮助我不断提高。
5
v1.0
可编辑可修改
第三章
系统设计
流程图
开始棋盘已满
是
输出平局
否
“
0
”方选位置
判断该 位置是否有棋
有
另找位置
无
“
0
”方落子
否
判断“
0
”方是否获
胜
是
输出“
0
”
方 获胜
否
棋盘已满
是
输出平局
结束
否
“
x< br>”方选位置
判断该位置是否有棋
有
另找位置
无
“
x< br>”方落子
判断“
x
”方是否获
胜
是
输出
“< br>x
”方
获胜
图
流程图
流程图说明
本程序定义了各种操作函数、各种状态判定宏,思想明确,思路清晰。各 个判断
选择了不同路径,因此继续进行或输出结果。程序中,
“循环”的利用非常直接和清晰,双方交替下棋,因此循环往复。最终决出胜负或最终平局。分析时,也考虑了许
多种情况,针对 各个情况均作出了相对措施和解决方案
。
程序采用循环进行双方交替下棋,
并进行了很多判断。
首先判断棋盘是否已满,
若棋盘已满,
则输出平局,结束游戏;若 棋盘未满,则继续进行。然后判断“
0
”方是否胜出,若“
0
”方获胜,则输出“
0
”方获胜,结束游戏;若“
0
”方没有获胜,则继续进行。再 判断“
x
”方是否获胜,
若“
x
”方获胜,则输出“
x”方获胜,结束游戏;若“
x
”方没有获胜,则继续进行。回到“首
6