五子棋课程设计实验报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
西南交通大学
程序语言综合课程设计
五子棋游戏
课程《程序语言综合课程设计》
学院信息科学与技术学
专业软件工程
姓名
学号 ********
日期 2016年月日
目录
第一章课程设计的目的和要求 (3)
1.1 课程设计的目的 (3)
1.2 课程设计的要求 (3)
1.3 课程设计的实验环境 (3)
第二章功能描述 (4)
第三章总体设计 (5)
3.1 功能模块设计 (5)
3.1.1 任务执行流程图 (5)
3.1.2 下棋函数流程图 (6)
3.2 数据结构设计 (7)
3.2.1 定义结构体 (7)
3.2.2 定义数组 (7)
3.2.3 全局变量 (7)
3.3 函数功能描述 (7)
第四章程序实现 (8)
4.1源码分析 (8)
4.2运行结果及界面介绍 (22)
第五章后记 (27)
第一章课程设计的目的和要求
1.1 课程设计的目的
1.加深对C语言数据类型,运算,语句结构及其程序设计的基本方法理解和掌握;
2.熟练掌握流程图的绘制、程序设计文档的书写;
3.通过编写一个完整的程序,一方面可以检查我们这学期的学习情况,为以后的学习打下坚实的基础;
4.熟悉C语言游戏编程,掌握五子棋游戏开发的基本原理,从而为以后的程序开发奠定基础。
1.2 课程设计的要求
1、编写程序代码,调试所写程序使其能够正确运行;
2、能进行基本的五子棋操作,有图形界面,能够用键盘操作;
3、能够实现悔棋、存档和读档等附加功能
1.3 课程设计的实验环境
该课程设计在设计与实验过程中需要在windows XP系统/windows 2000以上系统中进行,程序设计要求在visual C++6.0平台中进行,完成代码的编写、编译、调试、测试等工作。本游戏对计算机硬件和操作系统要求极低,所以在这里只是把自己的电脑硬件参数和系统参数列下:
硬件:Cpu:2.1GHZ,内存,2GB,硬盘:320GB,操作系统:windows xp
软件环境:安装VC++6.0
第二章功能描述
本程序用C语言实现了五子棋游戏,能进行基本的五子棋操作。程序能实现界面的初始化功能、下棋功能、人机智能对战功能、胜负判断功能、悔棋功能、读档及存档功能,通过键盘操作控制下棋。
(1)显示欢迎界面。在游戏开始时出现一个欢迎的界面同时介绍了游戏的规则;(2)初始化功能。程序初始化屏幕和棋盘,默认玩家先行。
(3)下棋操作。利用W、S、A、D及空格键实现下棋操作,在下棋过程中能随时按ESC键退出。
(4)人机智能对战功能。电脑根据玩家的下棋对棋盘进行智能分析,然后下棋,实现人机对弈。
(5)悔棋功能。玩家可以有三次悔棋机会。
(6)胜负判断功能。程序能对下棋的结果进行判断,分出胜负。并显示获胜方。(7)读档、存档功能。游戏中途退出会提示是否存档,如果存档,则下次开始的时候会提示是否读档继续上次的游戏。
第三章总体设计3.1 功能模块设计
3.1.1 任务执行流程图
3.1.2 下棋函数流程图
3.2 数据结构设计
3.2.1 定义结构体
将棋盘上每个点的左边定义为一个结构体;
typedef struct
{
int x, y;
}point;
3.2.2 定义数组
定义数组board[15][15]表示棋盘,用来记录棋盘上每个棋子的状态;
3.2.3 全局变量
定义整形数组back[4] 用来记录前两步双方下棋的状态,便于后面进行悔棋操作定义整形n = 3; 用来记录悔棋次数
3.3 函数功能描述
1、显示欢迎信息bool welcome();
2、初始化棋盘void InitBoard();
3、输出棋盘void chessboard();
4、判断胜负int Win(char c);
5、下棋void play(point &r);
6、显示获胜void showsusscced(char c);
7、悔棋bool BackStep(int back[]);
8、人机对战智能算法void ComAlgo(point &r);
9、存盘函数bool SaveLoad();
10、读盘函数bool DownLoad();
第四章程序实现
4.1源码分析
1、显示欢迎信息
bool welcome()
{
char ch;
printf("\n\n\n\n");
printf("┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓\n");
printf("┃Welcome you to gobang World! ┃\n");
printf("┃1、You can use the A,D,W and S key to move the chessman; ┃\n");
printf("┃2、You can press Space key to enter after you move it; ┃\n");
printf("┃3、You can use Esc key to exit the game; ┃\n");
printf("┃4、Don't move the pieces out of the chessboard. ┃\n");
printf("┃Do you want to continue?(Y/N) ┃\n");
printf("┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛\n");
while (! strchr("YN", ch = toupper(getch())))
{
putchar('\a');
}
if(ch == 'N') return false;
else return true;
}
2、初始化棋盘
void InitBoard()
{
char ch; int i, j;
printf("\n\n是否读档?(Y/N)\n");
if((ch = toupper(getch())) == 'Y' && DownLoad())
printf("读档成功!\n");
else
{
for(i = 0; i < 15; i ++)
for(j = 0; j < 15; j ++)
board[i][j] = ' ';
}
chessboard();
}