1、 1 C 语言课程设计报告 五子棋 摘 要 五子棋是一种两人对弈的纯策略型棋类游戏, 应用 C 语言编写程 序可以在计算机上实现二人对弈五子棋功能。 二人对弈五子棋程序由 图像生成、光标移动与落子、判断胜负和系统帮助等子程序构成;程 序中应用了结构体、数组、全局变量、按键处理和图形编程等元素和 语句。程序通过棋盘和棋子图像生成、二人移子与落子和判断胜负等 功能的实现,在计算机上实现了二人五子棋对弈。 Abstract Gobang is a traditional checker-type game in which the lining up of five pieces in a stra
2、ight line scores victory. And C language can accomplish a 2-player gobang on computers. This 2-player gobang program contains 4 main sections, they are, graphics, movement and selection, victory judgment and helping system. Several elements and sentences of C programming language such as structural
3、element, array, global variables, press processing and Graphics Programming are also applied in the program. With the accomplishment of the three main subprograms, namely, checker board and pieces construction, players 2 step-selection and victory judgment, a whole program of gobang is established a
4、nd gobang is available on computers. 3 目 录 一、需求分析 4 二、概要设计 6 三、详细设计 9 四、调试分析 23 五、用户手册 24 六、测试数据 25 七、附录 26 4 第第 1 1 章:需求分析章:需求分析 1.1五子棋背景五子棋背景 传统五子棋的棋具与围棋相同,棋子分为黑白两色,棋盘为 1515,棋子放 置于棋盘线交叉点上。两人对局,各执一色,轮流下一子,先将横、竖或斜线的 5 个或 5 个以上同色棋子连成不间断的一排者为胜。 因为传统五子棋在落子后不能移动或拿掉, 所以也可以用纸和笔来进行游戏。 1.2 程序设计程序设计 本程序设计为人与
5、人对弈,一方执黑棋,一方执白棋,轮流走棋,每方都试 图在游戏结束前让自己的棋子五子相连,首先实现五子相连的一方获胜。程序执 行过程中,要求棋盘、棋子时时可见,并且人可以通过按键盘按键移动光标,摆 放棋子。 1.2.1 程序需求分析程序需求分析 根据功能需求,将程序分为图形显示、玩家控制、胜负判断和玩家计分四个 模块,以下分析各模块的需求。 图形显示模块:程序开始运行时,给出欢迎及帮助界面;游戏开始后要求生 成 1919 的棋盘图像,并在棋盘上方提示当前落子方棋子颜色,游戏进行过程 中,要求实时显示棋盘上已落下的棋子;分出胜负后,要求给出游戏结束画面。 玩家控制模块:程序开始时,需玩家确定而后开
6、始游戏;游戏过程中,两个 玩家通过不同的按键移动光标,选择落子;游戏结束时,有玩家选择是否开始新 棋局。 胜负判断模块:实时监测棋盘上棋子,一旦某一色棋子出现五子连线,终止 游戏程序,并着色连成一线的五子,弹出该色玩家胜出界面。 玩家计分模块:一方玩家再胜利后通过对文件的操作进行计分,并输出于计 分板上。 1.2.2程序流程设计程序流程设计 根据程序需求分析结果,可以得出程序的总体结构图如图 1,程序总体流程 图如图 2。 5 图 1 6 第第 2 章:概要设计章:概要设计 2.1.1 各类各类头文件头文件,变量,变量及及宏定义宏定义 #include“stdio.h“ #include “Conio.h“ #include “graphics.h“ #include #include #define closegr closegraph /*定义 1 号玩家的操作键键码*/ #define W 0x1177/*上移-W*/ #define S 0x1f73/*下移-S*/ #define A 0x1e61/*左