五子棋课程设计实验报告.docx
五子棋课程设计实验报告 C语言程序设计报告题目:五子棋 班级:电气Q1041班 人数:3人 小组成员:周啸天、万广富、黄山奇指导老师:桂超 目录 第一章课程设计的目的和要求. 1.1课程设计的目的. 1.2课程设计的要求. 1.3课程设计的实验环境. 第二章功能描述. 第三章总体设计. 3.1功能模块设计. 3.1.1任务执行流程图. 3.2数据结构设计. 3.2.1定义结构体. 322定义数组. 3.2.3全局变量. 3.3函数功能描述. 第四章程序实现. 4.1源码分析. 4.2运行结果及界面介绍. 第五章后记. 第一章课程设计的目的和要求 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)读档、存档功能。游戏中途退出会提示是否存档,如果存档,贝U下次开始的时候会提示是否读档继续上次的游戏。 是 第三章总体设计3.1功能模块设计 3.1.1任务执行流程图 显示电脑 获胜信息 3.1.2下棋函数流程图 开始 定义整形数组bacf用来记录 定义整形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); 获取key 值 疋 key=SP ACE ? boardij 3.2.1赋定义'吉构 体 是 3.2数据结构设计 Key=E SC ? 将棋盘上每个点的左边定义为一个结构体; 获胜? poi nt; 显示获胜信息 下一步超 出边界? 交换行棋方 8-2.2定义数组 画棋子,显 示运动轨迹 boardi 定义数组board1515表示棋盘,用来记录棋盘上每个棋子的状态; 3.2.3全局变量 向键值指示的 方向移动一步 前两步双方下棋的状态,便于后面进行悔棋操作 是 7、悔棋bool BackStep(int back); 8、人机对战智能算法void ComAlgo(point &r); 9、存盘函数bool SaveLoad(); 10、读盘函数bool DownLoad(); 第四章程序实现 4.1 源码分析 1、显示欢迎信息 bool welcome() char ch; printf("nnnn"); printf(" i - 1 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"); prin tf(" 1 - 1n"); while (! strchr("YN", ch = toupper(getch() putchar('a'); if(ch = 'N') return false; else return true;