1、五子棋C语音程序设计青 岛 农 业 大 学本 科 生 课 程 论 文论 文 题 目 五子棋C语音程序设计 学生专业班级 通信工程 学生姓名(学号) 指 导 教 师 完 成 时 间 年 月 日正文部分1、设计简介 五子棋是一种传统的棋盘游戏,是起源于中国古代的传统黑白棋种之一。发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。这种游戏用笔纸都可以进行。 本程序设计为人与人对弈,双方棋子为两种不同符号。一方执“黑笑脸”棋,一方执“白笑脸”棋,执“白笑脸”棋的一方先行下子,先输行再输列,比如ab,落子键为“Enter。接着
2、双方轮流走棋,每方都试图在游戏结束前让自己的棋子在横线、竖线、斜线方向五子相连,首先实现五子相连的一方获胜,游戏结束。程序执行过程中,要求棋盘、棋子时时可见,如果中途退出按q键。二、设计模块三、流程图四.设计过程 1、列出所需头文件名 2、定义棋盘的制符表及位置 3、定义双方玩家各自的操作键 4、定义数据结构 5、说明自定义函数原型 6、定义全局变量 7.初始化图像以及获得按键值 8、嵌入各自定义函数编写主函数 9、编写界面初始化函数void Init(void) 10、编写画棋盘函数void Print(void) 11、编写赢棋处理函数void Input( ) 12、编写判断是否赢棋函数
3、int Judge ( )13、编写判断在规定方向是否有五子相连函数int Linksame( ) 14、编写游戏结束处理函数Int Gameover( )5、调试过程 运行平台:C/C+程序设计学习与实验系统1、 点击运行,出现棋盘界面2、 根据界面提示键落子,玩家一先下,双方轮流落子3、 方五子相连,判出赢家,游戏结束。4、 按q键退出游戏六、源程序 #include #include #define CHESSBOARD_SIZE 15const int linkcount = 5;char chessboardCHESSBOARD_SIZECHESSBOARD_SIZE;int cou
4、nt;int playerid;void init() int i, j; count = 1; playerid =1; /默认Player1先走 for (i = 0; i CHESSBOARD_SIZE; i+) for (j = 0; j CHESSBOARD_SIZE; j+) chessboardij = +; void print() int i, j; printf( a b c d e f g h i j k l m n on); for (i = 0; i CHESSBOARD_SIZE; i+) printf(%c , i + a); for (j = 0; j CHES
5、SBOARD_SIZE; j+) printf(%c, chessboardij); if (j != CHESSBOARD_SIZE - 1) printf(-); printf(n); void input() char ix, iy; int x, y; printf(player %d 下棋,想退出请输入q键 :, playerid); fflush(stdin); /清除之前缓存留下的数据 scanf(%c%c, &ix, &iy); if (ix=q) exit(0); /退出游戏 getchar(); x = ix - a; y = iy - a; while (x = CHES
6、SBOARD_SIZE | y = CHESSBOARD_SIZE | chessboardxy != +) printf(input error!nplease input again: ); fflush(stdin); /清除缓存留下的数据 scanf(%c%c, &ix, &iy); getchar(); x = ix - a; y = iy - a; chessboardxy = playerid + 1; count+; playerid = count % 2; /判断该步谁走int linksame(int x, int y, int xoffset, int yoffset,
7、 int ncount) int xnext, ynext; if (chessboardxy = +) return 0; if (ncount = linkcount - 1) return 1; xnext = x + xoffset; ynext = y + yoffset; if (xnext = CHESSBOARD_SIZE | ynext = CHESSBOARD_SIZE) return 0; if (chessboardxy = chessboardxnextynext) return linksame(xnext, ynext, xoffset, yoffset, nco
8、unt + 1); return 0;int judge() int i, j; for (i = 0; i CHESSBOARD_SIZE; i+) for (j = 0; j CHESSBOARD_SIZE; j+) if (linksame(i, j, -1, 1, 0) | linksame(i, j, 0, 1, 0) | linksame(i, j, 1, 1, 0) | linksame(i, j, 1, 0, 0) return 1; return 0;int gameover() if (count = CHESSBOARD_SIZE * CHESSBOARD_SIZE -
9、1) system(cls); print(); printf(draw game!n); return 1; if (judge() system(cls); print(); printf(player %d 恭喜你赢了!n, playerid = 1 ? 0 : 1); return 1; return 0;void gamestart() init(); while (!gameover() system(cls); print(); input(); int main() char ch = y; while (1) gamestart(); getchar(); printf(co
10、ntinue? (y/n):); ch = getchar(); if (ch = n) break; return 0;七自我总结当题目出现在我的面前时,感觉真的一点都不会,让我自己编一个程序真的太难了,感觉自己上课的时候一点都没有好好的学,现在一点都不懂,就从网上参考了一下,当看到程序的时候都看不懂,经过问同学和同学之间的商量,老师的指导,终于做出一个完整的程序,当看到完整的的程序的时候真的感觉有一种成就感,真的觉得学到知识很好,所以在以后的学习中要做到认真努力。课 程 论 文 成 绩 评 定 表学生姓名专业班级论文题目五子棋C语言课程设计指导教师评语及意见:成绩: 指导教师签字 年 月 日忽略此处.
copyright@ 2008-2022 冰豆网网站版权所有
经营许可证编号:鄂ICP备2022015515号-1