2012年C语言五子棋课程设计报告

上传人:tia****nde 文档编号:36921095 上传时间:2018-04-04 格式:DOC 页数:21 大小:352.50KB
返回 下载 相关 举报
2012年C语言五子棋课程设计报告_第1页
第1页 / 共21页
2012年C语言五子棋课程设计报告_第2页
第2页 / 共21页
2012年C语言五子棋课程设计报告_第3页
第3页 / 共21页
2012年C语言五子棋课程设计报告_第4页
第4页 / 共21页
2012年C语言五子棋课程设计报告_第5页
第5页 / 共21页
点击查看更多>>
资源描述

《2012年C语言五子棋课程设计报告》由会员分享,可在线阅读,更多相关《2012年C语言五子棋课程设计报告(21页珍藏版)》请在金锄头文库上搜索。

1、1本科控制软件设计课程设计题 目 五子棋 学 院 计信院 专 业 自动化 年 级 2011 级 学 号 222011321042081 姓 名 谯平 同 组 人 张健、李益 指 导 教 师 黄仁杰 2012 年 9 月 6 日2目目 录录1、设计简介设计简介 32、设计模块设计模块 43、小组分工小组分工 44、流程图流程图 45、设计过程设计过程 56、调试过程调试过程 67、分析与总结分析与总结 98、源程序源程序 931、设计简介五子棋是一种传统的棋盘游戏,是起源于中国古代的传统黑白棋种之一。发展于日本,流行于欧美。容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力

2、,而且富含哲理,有助于修身养性。这种游戏用笔纸都可以进行。本程序设计为人与人对弈,双方棋子为一种颜色。一方执 O 棋,一方执X 棋,执 O 形棋的一方先行下子,移动光标键为“w(上)、s(下)、a(左) 、d(右) ” ,落子键位“空格” ,然后另一方走棋,移动光标键为“上、下、左、右” ,落子键为“Enter“。接着双方轮流走棋,每方都试图在游戏结束前让自己的棋子在横线、竖线、斜线方向五子相连,首先实现五子相连的一方获胜,游戏结束。程序执行过程中,要求棋盘、棋子时时可见,并且人可以通过按键盘按键移动光标,摆放棋子。同时在落子不同情况以及出现赢家的时候都会出现相应的声音。Table4二、设计模

3、块3、小组分工李益:初始化模块谯平:下棋操作模块张健:胜负判断模块四、流程图55、设计过程1、列出所需头文件名2、定义棋盘的制符表及位置3、定义双方玩家各自的操作键4、定义数据结构5、说明自定义函数原型6、定义全局变量67、初始化图像以及获得按键值8、嵌入各自定义函数编写主函数9、编写界面初始化函数 void Init(void)10、编写画棋盘函数 void DrawMap(void)11、编写交换棋手函数 int ChangeOrder(void)12、编写获取按键值函数 int GetKey(void)13、编写落子处理函数 void DoError(void)14、编写赢棋处理函数 v

4、oid DoWin(int Order)15、编写走棋函数 int ChessGo(Order , point Cursor)16、编写判断是否赢棋函数 int JudgeWin(Order,point Cursor)17、编写判断在规定方向是否有五子相连函数 int JudgeWinline(Order,point Cursor)18、编写移动光标函数 void MoveCursor(Order,press)19、编写游戏结束处理函数 void EndGame(void)20、编写显示当前棋方函数 void ShowOrderMsg(Order)21、编写落子正确处理函数 void DoOK

5、(void)22、编写检查用户按键类别函数 int CheckKey(press)6、调试过程运行平台:C/C+程序设计学习与实验系统1、点击运行,出现棋盘界面72、根据界面提示键落子,玩家一先下,双方轮流落子。83、一方五子相连,判出赢家,游戏结束。4 按任意键退出游戏。9七、问题与与总结1、用十六进制数制表格的方法不了解,参照网例的时候也不是很明白原理,以至于表格不是很完善,两行中间的一行在棋盘上没有清晰的显示出来。2、设计这样稍微复杂的程序时,我们要多多利用自定义函数的嵌入方法,这样把主程序分为若干个自定义函数,不仅可以减少程序设计中的遗漏现象,还有利于我们建立完善的设计思维模式。3、设

6、计程序前要多翻阅资料与阅读范例,尽量减少程序编写时犯错,程序编写时犯错很浪费时间和精力,而且往往很难找出错误的地方。4、编程的前提是读懂其他程序,平时需要多练习才行,这次设计的过程步履维艰,就是因为没有长期的阅读练习和教训累积。八、源程序/* 程序中用到的库函数所在头文件应用 #include 命令包含进来 */ #include #include #include #include #include /*/ /* 定义符号常量 */ /*定义画棋盘所需的制表符*/ #define CROSSRU 0xbf /*右上角点*/ #define CROSSLU 0xda /*左上角点*/ #def

7、ine CROSSLD 0xc0 /*左下角点*/ #define CROSSRD 0xd9 /*右下角点*/ #define CROSSL 0xc3 /*左边*/ #define CROSSR 0xb4 /*右边*/ #define CROSSU 0xc2 /*上边*/ 10#define CROSSD 0xc1 /*下边*/ #define CROSS 0xc5 /*十字交叉点*/ /*定义棋盘左上角点在屏幕上的位置*/ #define MAPXOFT 5 #define MAPYOFT 2 /*定义1号玩家的操作键键码*/ #define PLAY1UP 0x1157/*上移-W*/ #

8、define PLAY1DOWN 0x1f53/*下移-S*/ #define PLAY1LEFT 0x1e41/*左移-A*/ #define PLAY1RIGHT 0x2044/*右移-D*/ #define PLAY1DO 0x3920/*落子-空格键*/ /*定义2号玩家的操作键键码*/ #define PLAY2UP 0x4800/*上移-方向键up*/ #define PLAY2DOWN 0x5000/*下移-方向键down*/ #define PLAY2LEFT 0x4b00/*左移-方向键left*/ #define PLAY2RIGHT 0x4d00/*右移-方向键right

9、*/ #define PLAY2DO 0x1c0d/*落子-回车键Enter*/ /*若想在游戏中途退出, 可按 Esc 键*/ #define ESCAPE 0x011b /*定义棋盘上交叉点的状态, 即该点有无棋子 */ /*若有棋子, 还应能指出是哪个玩家的棋子 */ #define CHESSNULL 0 /没有棋子 #define CHESS1 O/一号玩家的棋子 #define CHESS2 X/二号玩家的棋子 /*定义按键类别*/ #define KEYEXIT 0/*退出键*/ #define KEYFALLCHESS 1/*落子键*/ #define KEYMOVECURSO

10、R 2/*光标移动键*/ #define KEYINVALID 3/*无效键*/ /*定义符号常量: 真, 假 - 真为1, 假为0 */ #define TRUE 1 #define FALSE 0 /*/ /*定义数据结构 */*棋盘交叉点坐标的数据结构*/ struct point 11 int x,y; ; /*/ /*自定义函数原型说明 */ void Init(void); int GetKey(void); int CheckKey(int press); int ChangeOrder(void); int ChessGo(int Order,struct point Curs

11、or); void DoError(void); void DoOK(void); void DoWin(int Order); void MoveCursor(int Order,int press); void DrawCross(int x,int y); void DrawMap(void); int JudgeWin(int Order,struct point Cursor); int JudgeWinLine(int Order,struct point Cursor,int direction); void ShowOrderMsg(int Order); void EndGame(void); /*/ /*

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 中学教育 > 试题/考题

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号