c语言五子棋游戏

上传人:飞*** 文档编号:30955350 上传时间:2018-02-03 格式:DOC 页数:27 大小:256KB
返回 下载 相关 举报
c语言五子棋游戏_第1页
第1页 / 共27页
c语言五子棋游戏_第2页
第2页 / 共27页
c语言五子棋游戏_第3页
第3页 / 共27页
c语言五子棋游戏_第4页
第4页 / 共27页
c语言五子棋游戏_第5页
第5页 / 共27页
点击查看更多>>
资源描述

《c语言五子棋游戏》由会员分享,可在线阅读,更多相关《c语言五子棋游戏(27页珍藏版)》请在金锄头文库上搜索。

1、辽 宁 工 业 大 学C 语言程序设计 课程设计(论文)题目: 五子棋游戏 院(系): 专业班级: 学 号: 学生姓名: 指导教师: 教师职称: 起止时间: 课程设计(报告)任务及评语院(系): 教研室:软件教研室学 号 学生姓名 专业班级程序设计(报告)题目五子棋游戏程序设计(报告)任务程序设计的任务与要求:(1)掌握 C 语言编程的基础知识。(2)较熟练地编写 C 语言应用程序。(3)了解 C 语言的常用标准函数、编程技巧、异常处理。(5)联系已学过的内容,巩固所学的理论,增强独立工作能力。(6)通过设计主要使学生有一个独立编写程序的过程,对理论学习及动手能力都有一个很大的提高。(7)通过

2、本次设计,进一步培养学生热爱专业的思想,同时对本专业综合素质的提高起一个积极的推动作用。课程设计过程中,要严格遵守实践环节的时间安排,听从指导教师的指导。正确地完成上述内容,记录实习日记,规范完整地撰写出课程设计报告。指导教师评语及成绩成绩: 指导教师签字: 2009 年 1 月 11 日辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)目 录第 1 章 课程设计的目的与要求 .11.1 课程设计目的 .11.2 课程设计的实验环境 .11.3 课程设计的预备知识 .11.4 课程设计要求 .1第 2 章 课程设计内容 .22.1 程序功能介绍 .22.2 程序整体设计说明 .22.

3、2.1 设计思路 .22.2.2 数据结构设计及用法说明 .32.2.3 程序结构(流程图) .32.2.4 各模块的功能及程序说明 .52.2.5 程序结果 .62.3 程序源代码及注释 .6第 3 章 课程设计总结 .23参考资料 .24辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)1第 1 章 课程设计的目的与要求1.1 课程设计目的本课程设计是计算机科学与技术专业重要的实践性环节之一,是在学生学习完程序设计语言(C) 课程后进行的一次全面的综合练习。本课程设计的目的和任务: 1. 巩固和加深学生对 C 语言课程的基本知识的理解和掌握 2. 掌握 C 语言编程和程序调试的基

4、本技能 3. 利用 C 语言进行基本的软件设计4. 掌握书写程序设计说明文档的能力5. 提高运用 C 语言解决实际问题的能力1.2 课程设计的实验环境硬件要求能运行 Windows 2000/XP 操作系统的微机系统。C 语言程序设计及相应的开发环境。1.3 课程设计的预备知识熟悉 C 语言及 C 语言开发工具。1.4 课程设计要求1. 分析课程设计题目的要求2. 写出详细设计说明3. 编写程序代码,调试程序使其能正确运行4. 设计完成的软件要便于操作和使用5. 设计完成后提交课程设计报告辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)2第 2 章 课程设计内容2.1 程序功能介绍

5、本程序是在一个方阵上通过两人对弈的形式,依次在棋盘上放置两种颜色的棋子,哪一方先让五个棋子形成一条直线(包括横、竖、对角线 3 个方向) ,即为获胜,游戏初始运行界面应为如下: 游戏操作规则: 1、 按左右上下方向键移动棋子 2、 按空格键确定落棋子 3、 禁止在棋盘外按空格2.2 程序整体设计说明2.2.1 设计思路1) 黑先、白后,从天元开始相互顺序落子。2) 白棋第一手应在天元为界自己一侧布子,之后双方可任意行子。3) 最先在棋盘横向、竖向、斜向形成连续的相同色五个棋子的一方为胜。 4) 黑棋禁手判负、白棋无禁手。黑棋禁手包括“三、三” “四、四” “长连” 。黑方只能“四、三”胜。 5

6、) 如分不出胜负,则定为平局。6) 对局中中途退场均判为负。 7) 五连与禁手同时形成,先五为胜。 1) 长连:在一条直线或斜线上,连续下成五个以上的棋型 2) 活三:在一条直线或斜线上,由三个子构成的,必须防守否则将成为“活四”导致速胜的棋型。三只有下面两种棋型结构: 3) 活四:指在一条直线或斜线上,由连续的四个字所构成的,无论对方怎样防守,只要再走一手棋将必定成为五连的棋型: 4) 四:在一条直线或斜线上,由四个同色子构成的,必须防守否则下一步立刻成为辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)3“五连”导致速胜的棋型。活四也是四之一。2.2.2 数据结构设计及用法说明i

7、nt gPlayOrder; /*指示当前行棋方 */ struct point gCursor; /*光标在棋盘上的位置 */ char gChessBoard1919;/*用于记录棋盘上各点的状态*/ break/*是落子键*/ else /*交换行棋方*/2.2.3 程序结构(流程图)main()函数流程图辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)4Judgeplayer 流程图辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)52.2.4 各模块的功能及程序说明case KEYFALLCHESS: 判断落子。void Init(void) 界面初始化,数据初

8、始化。textmode(C40)画棋盘。void DrawCross(int x,int y)确定画棋盘上的交叉点。void DoError(void)落子错误处理。void DoWin(int Order)赢棋处理。switch(direction)判断输赢。void EndGame(void)游戏结束处理。辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)62.2.5 程序结果2.3 程序源代码及注释*加载头文件*/ #include #include #include #include #include /*编译预处理,定义按键码*/ #define LEFT 0x4b00 辽

9、 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)7#define RIGHT 0x4d00 #define DOWN 0x5000 #define UP 0x4800 /*若想在游戏中途退出, 可按 Esc 键*/ #define ESC 0x011b /*SPACE 键表示落子*/ #define SPACE 0x3920 /*设置偏移量*/ #define OFFSET 20 #define OFFSET_x 4 #define OFFSET_y 3 /*定义数组大小*/ #define N 19 /*定义全局变量*/ int statusNN; /*定义的数组,保存状态*/ i

10、nt step_x,step_y;/*行走的坐标*/ int key ; /*获取按下的键盘的键*/ int flag; /*玩家标志*/ /*自定义函数原型*/ void DrawBoard(); void DrawCircle(int x,int y,int color); void Alternation(); void JudgePlayer(int x,int y); void Done(); int ResultCheck(int x,int y); void WelcomeInfo(); void ShowMessage(); /*定义函数*/ /*显示欢迎信息函数*/ void

11、 WelcomeInfo() 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)8 char ch ; /*移动光标到指定位置*/ gotoxy(12,4); /*显示欢迎信息*/ printf(Welcome you to gobang word!); gotoxy(12,6); printf(1.You can use the up,down,left and right key to move the chessman,); gotoxy(12,8); printf( and you can press Space key to enter after you move it

12、!); gotoxy(12,10); printf(2.You can use Esc key to exit the game too !); gotoxy(12,12); printf(3.Don not move the pieces out of the chessboard !); gotoxy(12,14); printf(DO you want to continue ?(Y/N); ch=getchar(); /*判断程序是否要继续进行*/ if(ch=n|ch=N) /*如果不继续进行,则推出程序*/ exit(0); /*画棋盘函数*/ void DrawBoard() int x1,x2; int y1,y2; /*设置背景色*/ setbkcolor(2); 辽 宁 工 业 大 学 课 程 设 计 说 明 书(论 文)9/*设置线条颜色*/ setcolor(1); /*设置线条风格、宽度*/ setlinestyle(DOTTED_LINE,1,1); /*按照预设的偏移量开始画棋盘*/ for(x1=1,y1=1,y2=18;x1=1;j-) if(statusjk=flag) n1+; else break; /*水平向右数*/ for(j=x,

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

当前位置:首页 > 行业资料 > 其它行业文档

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