欢乐五子棋课程设计报告Word文件下载.docx

上传人:b****1 文档编号:13445792 上传时间:2022-10-10 格式:DOCX 页数:21 大小:79.52KB
下载 相关 举报
欢乐五子棋课程设计报告Word文件下载.docx_第1页
第1页 / 共21页
欢乐五子棋课程设计报告Word文件下载.docx_第2页
第2页 / 共21页
欢乐五子棋课程设计报告Word文件下载.docx_第3页
第3页 / 共21页
欢乐五子棋课程设计报告Word文件下载.docx_第4页
第4页 / 共21页
欢乐五子棋课程设计报告Word文件下载.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

欢乐五子棋课程设计报告Word文件下载.docx

《欢乐五子棋课程设计报告Word文件下载.docx》由会员分享,可在线阅读,更多相关《欢乐五子棋课程设计报告Word文件下载.docx(21页珍藏版)》请在冰豆网上搜索。

欢乐五子棋课程设计报告Word文件下载.docx

掌握并且熟练应用《C++程序设计》中所学知识。

掌握函数功能的划分方法,并运用此方法解决问题。

学会程序测试方案的制定,并且实现程序的测试。

通过此次实践,积累经验,提高分析和解决问题的能力。

另外,能够运用所学知识了解五子棋游戏制作的结构,将所学知识用于实践中。

1.2课程设计要求

1)在了解课程设计要求的情况下,运用C++编一个关于五子棋的程序,并可以实现相关功能。

2)在课程设计的过程中,难免会遇到一些困难和错误,这就要求自己在遇到困难时学会查找和解决,并向同学,老师请教。

最后不能解决的问题要如实反映。

3)在整个过程中,需要设计者独立完成,不得抄袭,养成独立思考的能力。

第2章课程设计任务和内容

2.1设计的主要工作

(1)总体设计:

包括功能结构图和系统流程图的设计(包含五子棋游戏的各种功能步骤)。

  

(2)细节部分:

实现人人对弈和人机对弈的要求,并且对输入的内容判断棋盘是否已满,判断输入坐标(下棋的位置)是否已有棋子,如果有就提示重下,判断是否胜利,再者是循环整个游戏或者换成人人对弈或者人机对弈,可按玩家意愿选择,并且可选是自己先玩还是电脑先玩。

(3)程序的运行:

编译后的游戏按规则步骤的将数据输入,然后按照提示就可以将游戏进行,并将其剪切出来。

2.2系统设计原则

(1)系统性。

系统是作为统一整体而存在的,因此,在系统设计中,要从整个系统的角度进行考虑,系统的代码要统一,设计规范要标准,传递语言要尽可能一致,对系统的数据采集要做到数出一处、全局共享,使一次输入得到多次利用。

  

(2)灵活性。

为保持系统的长久生命力,要求系统具有很强的环境适应性,为此,系统应具有较好的开放性和结构的可变性。

在系统设计中,应尽量采用模块化结构,提高各模块的独立性,尽可能减少模块间的数据耦合,使各子系统间的数据依赖减至最低限度。

  (3)可靠性。

可靠性是指系统抵御外界干扰的能力及受外界干扰时的恢复能力。

一个一起玩家有乐趣的游戏系统必须具有较高的可靠性,如循环连接、检错及纠错能力、简明易懂等。

  (4)规范性。

游戏的运用以吸引玩家的乐趣为前提;

一方面,系统设计中应尽量避免不必要的复杂化,另一方面各模块应尽量简洁,以便缩短处理流程。

第三章详细设计说明

3.1游戏分析和介绍

基于本游戏,首先得为整个棋盘建立一张表格用以记录棋子信息,我们使用一个20*20的二维数组 

Table[20][20] 

(20*20是五子棋棋盘的大小),数组的每一个元素对应棋盘上的一个交叉点,用点表示空位、“1”和“2”在刚开始表示人机对弈或者人人对弈,之后表示人或电脑谁先下棋。

通过输入姓名来确定玩家身份,这张表也是今后分析的基础。

在此还要为两个玩家双方各建立一张棋型表Computer[20][20][4]和Player[20][20][4],用来存放棋型数据

3.2模块图说明

图3-1

3.3文字说明

该五子棋程序基本上实现了五子棋的游戏功能,有双方下棋的棋盘界面及最终判定结果的界面。

同时该游戏采用二维坐标实现,明了易懂,方便玩家在游戏过程中的基本操作,使游戏更加简便。

在细节方面,该系统判别棋面状况,如已有棋,则提示重下,当棋盘满时,判断为平局。

该游戏基本实现了欢乐五子棋游戏的一些要求和特征。

在游戏的源程序及文档方面,我们也严格遵守软件工程思想,立足实验要求,确定任务,需求分析,设计和编码,每个步骤力求清晰易懂。

原代码注释详尽,各功能模块功能分明,可移植性强。

当然该系统也有很多不足的地方,第一次进行独立的课程设计,也有很多细节方面是考虑不到的,这款游戏也是在不断的调试和修改中产生和完善的。

希望老师能够指出不足,帮助我不断提高。

3.4初始化:

首先,建立盘面数组Table[20][20]、对战双方的棋型表Computer[20][20][4]和Player[20][20][4]并将它们清零以备使用;

然后初始化显示器、键盘、鼠等输入输出设备并在屏幕上画出棋盘。

(棋盘已经显示)

3.5主循环控制模块

控制下棋顺序,当轮到某方下子时,负责将程序转到相应的模块中去,主要担当一个调度者的角色。

3.6对方和己方下子

当轮到对方下时,您通过键盘输入0到20的数字,回车键后在棋盘上落子,程序会根据该点的位置,在Table[20][20]数组的相应地方记录,以表明该子是玩家下的或者电脑下的,然后提示另一玩家下子。

将自己和对手调换一下位置,然后用上面的方法来预测对手的棋,这样既可以防住对手巧妙的攻击,又能待机发动反击,玩家若想赢的游戏,必须认真考虑每一步,在人机对弈中,要注意防范,也要考虑下一步对方怎么走,否则容易输。

3.7盘面分析填写棋型表

您在下五子棋时,一定会先根据棋盘上的情况,找出当前最重要的一些点位,如“活三”、“冲四”等;

然后再在其中选择落子点。

先来分析己方的棋型,我们从棋盘左上角出发,向右逐行搜索,当遇到一个空白点时,以它为中心向左挨个查找,如果遇到己方的子则记录然后继续,如果遇到对方的子、空白点或边界就停止查找。

左边完成后再向右进行同样的操作;

最后把左右两边的记录合并起来,得到的数据就是该点横向上的棋型,然后把棋型的编号填入到Computer[x][y][n]中就行了(x、y代表坐标,n=0、1、2、3分别代表横、竖、左斜、右斜四个方向)。

而其他三个方向的棋型也可用同样的方法得到,当搜索完整张棋盘后,己方棋型表也就填写完毕了。

然后再用同样的方法填写对方棋型表。

3.8胜负判断

当某方连成五子(包括横,竖,斜)即获胜,当某方获胜时,输出该方获胜,游戏结束,并进行下一轮游戏,提示摁1或2来进行人机或者人人对弈。

3.9程序流程图

本程序定义了各种操作函数、各种状态判定宏,思想明确,思路清晰。

各个判断选择了不同路径,因此继续进行或输出结果。

本流程图中,“循环”的利用非常直接和清晰,双方交替下棋,以及人机对弈,因此循环往复。

最终决出胜负或最终平局。

分析时,也考虑了许多种情况,针对各个情况均作出了相对措施和解决方案。

图3-2

第4章软件使用说明

4.1测试计划

如图4-1运行结果出示图,输入数字进行游戏的开始或者退出

图4-1

如图4-2为人机对弈中,玩家自己选择是玩家先下棋或者电脑先下棋

图4-2

如图4-3为人人对弈过程,输入玩家的姓名

图4-3

图4-4为人人对弈中,假设输入玩家zhangbei和jinwubing,在对弈之后,zhangbei五子相连,输出“zhangbei获胜,游戏结束”可继续进行游戏。

图4-4

如图4-5为人机对弈中,最后玩家五子相连,输出了“玩家获胜,游戏结束”,可继续进行游戏。

图4-5

4.2限制条件

在运行该程序时,在人人对弈中,当涉及到1*1时,需要6个子才能算获胜,这是本程序的一个缺陷。

另外,在本程序中涉及到许多函数都没学过,对这次的设计是一个很大的挑战,但在同学老师的帮助下最终克服了许多困难。

第五章课程设计心得体会

在本次课程设计中,不仅让我认识到自己学习上的不足,也通过请教其他同学和老师学会了修改并运行程序,还让自己复习了编程的知识,对遇到的众多问题,通过思考,耐心动手解决问题,在课程设计期间我也学到了课本中很多学不到的知识,明白了只有通过自己不断的动手实践才能找出不足、找出问题和提高自己能力,发现课程设计是我学习和掌握专业知识的好方法,让自己思维变得活跃,也会看懂,学明白程序问题,本次受益匪浅。

最后,感谢王俊艳老师教我们《数据结构》这门课程,交给我很多程序设计的思想和知识。

这次课程设计最要感谢老师和同学为我提供了这么多宝贵的意见并对我的报告做了很多的批示,给我讲解了很多我不懂得知识及应用方法,为我更好更快的完成报告付出了辛勤和汗水。

附录1:

参考文献

1)严蔚敏吴伟民《数据结构》北京清华大学出版社2010年

2)苏仕华魏韦巍王敬生刘燕君《数据结构课程设计(第二版)》北京机械工业出版社2010年。

3)谭浩强《C程序设计(第二版)》北京清华大学出版社1999年

4)谭浩强《C++程序设计》北京清华大学出版社2009年

5)丁展《Visual 

C++游戏开发技术与实例》北京人民邮电出版社2005年

附录2:

程序清单

#include<

iostream>

memory.h>

string>

usingnamespacestd;

constintN=20;

//定义棋盘规模

intpace=0;

//统计步数

constcharchess[2]={'

X'

'

O'

};

//定义数组显示棋子颜色

intlastI=0;

intmaxI=9,maxJ=9;

intlastJ=0;

boolSystemError=0;

voidinitchess(char*A,intN)//该函数,初始化棋盘

{

inti,j;

for(i=0;

i<

N;

i++){

for(j=0;

j<

j++)

{

A[i*N+j]='

.'

;

}

return;

}

voidprintchess(char*A,intN)//该函数,打印棋盘

{

i++)

{

if(i<

10)

cout<

<

"

"

i;

else

N<

endl;

9)

i+1<

A[i*N+j];

voidplayer(char*A,intN,intcolor)//该函数为玩家落子

while

(1)

if(color==0)

请黑色方输入落子坐标,格式为xy"

请白色方输入落子坐标,格式为xy"

输入00退出游戏"

cin>

>

j>

if(j==0&

&

i==0)

if(color==0)

黑色方放弃,白子获胜了,祝贺您!

白色方放弃,黑子获胜了,祝贺您!

SystemError=1;

i--;

j--;

0||i>

20||j<

0||j>

20)

请您输入1--20的数"

elseif(A[i*N+j]!

='

已有棋子,请您重下"

break;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > PPT模板 > 艺术创意

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1