1、 1 实验报告实验报告 课程名称:课程名称: C C 语言语言课程设计课程设计 实验项目:实验项目: 五子棋五子棋游戏设计游戏设计 2 实验名称:五子棋游戏设计 1.实验内容: (1)掌握 C 语言的基本语法结构、程序设计方法和一些常见的算法; (2)掌握对程序排查错误的能力。 2.实验内容: (1)实现双人对战的简单步骤和规则,能够判断输赢; (2)双方轮流使用键盘的“” 、 “” 、 “” 、 “”键控制棋子在屏幕上 的位置,按“空格”键放置棋子,判断棋子应放置在棋盘范围内且不能已经有棋 子,否则使用扬声器提示不能放置; (3)当一方的棋子数在行、列或对角线上连续达到 5 个(无禁手判断)
2、 ,则 为胜方,在屏幕上显示胜利一方,按任意键退出程序。 3. 实验方案(程序设计说明) (1)算法设计思路 棋盘设计为 1919 格,初始状态光标在棋盘的左上,黑棋先走,轮流落子, 当一方连成五子或下满棋盘时,游戏结束。当游戏一方胜利后显示胜利信息。从 程序表面看,这是一个二维平面图,所以数据用二维数组来表示,数组两个下标 可以表示棋盘上的位置,数组元素的值代表棋格上的状态,共有三种情况,分别 是 0 代表无棋子,1 代表黑棋,2 代表白棋。这样程序的主要工作是接收棋手按 键操作,双方轮流使用键盘的“” 、 “” 、 “” 、 “”键控制光标移动,空格 键表示落子。一旦接收到空格键,说明棋手
3、落子,先判断是否是有效位置,也就 是说棋子应在棋盘内或棋盘的空位置上,无效位置时利用扬声器发声警示。落子 成功后, 马上判断以该位置为中心的八个方向相邻的是否有相同颜色的棋子连成 五子,如果连成五子,则游戏结束,输出胜利一方的信息。如果想在对弈的过程 中退出游戏,可以按 Esc 键。 (2)程序功能流程图 3 4程序运行结果 (1)规则界面 4 (2)对弈界面 5 6 (3)获胜界面 5出现的问题及解决方法 (1)游戏开始时,棋子原来初始在棋盘中央,一旦中央落子后,初始棋子 与已有棋子重叠,为了解决问题将初始棋子移动到棋盘左上方棋盘以外。 (2)棋子都为空心圆,在棋盘不好区分正在控制的棋子,改
4、为已确定落子 的棋子为实心圆,正在控制的棋子为空心圆。 附件附件 A 沈阳工业大学实验报告沈阳工业大学实验报告 7 (适用计算机程序设计类) 专业班级: 计专 1502 学号:248150203 姓名: 孙奇 实验程序实验程序: 本程序在 Windows XP SP3 操作系统及 Turbo C 2.0 开发环境下调试通过。 #include #include #include #include #include #define LEFT 0x4b00 #define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 #define ESC
5、0x011b #define SPACE 0x3920 #define BILI 20 #define JZ 4 #define JS 3 #define SIZE 19 int boxSIZESIZE; int step_x,step_y; int key; int flag=1; void attentoin(); void draw_box(); void draw_cicle(int x,int y,int color); void draw_slice(int x,int y,int color); void change(); void judgewho(int x,int y);
6、 void judgekey(); int judgeresult(int x,int y); void attention() char ch; window(1,1,80,25); textbackground(LIGHTBLUE); textcolor(YELLOW); clrscr(); gotoxy(15,4); 8 printf(“Play Rules:“); gotoxy(15,8); printf(“1.Press Left,Right,Up,Down Key to move Piece“); gotoxy(15,12); printf(“2.Press Space to place the Piece“); gotoxy(15,16); printf(“3.DO NOT press Space outside of the chessboard“); gotoxy(15,20); printf(