基于C语言的五子棋程序毕业课程设计报告
- 格式:doc
- 大小:87.50 KB
- 文档页数:22
(此文档为WORD格式,下载后您可任意编辑修改!)
石家庄铁道学院课程设计
基于C语言的五子棋程序课程设计
单位:数0901分院(系)
专业:数学与应用数学
学号:
学生姓名:许晓倩
指导教师:石玉晶
完成日期 2010年 07月 14日
摘要
本程序是一款棋类益智游戏程序,与五子棋游戏相近,是由C语言编写的可在WINDOWS 系统下运行的娱乐游戏平台。该程序面向广大棋类游戏的爱好者,能够提供方便,实现基本智能控制的游戏环境。本程序可以实现人人对战,用户可以根据需要自行选择不同维数的棋盘。对战中,为方便双方棋手,采用键盘上的上下左右键控制棋子的上下左右移动,由空格键控制下棋,双方都可通过ESC键终止游戏。游戏开始后,红、白双方轮流下棋,程序会根据双方下棋的先后顺序自动显示不同颜色的棋子,提示当前下棋的棋手,任何一方由三子连成一线时,游戏结束,结束时会显示对战双方胜负情况。
关键词:五子棋游戏应用程序,C语言,图形函数。
目录
1.选题的意义4
2.系统功能需求分析
2.1设计思想-5
2.2功能模块-5
2.3流程图说明6
3.系统设计---7
3.1流程图---7
3.2数据结构-7
3.3中心算法代码说明v
4.系统实现---9
4.1程序代码--9
4.2系统使用--24
4.3运行效果说明4
5.总结
5.1设计收获--25
5.2存在的主要问题
5.3参考文献--25
第1章选题的意义
总的来说,通过五子棋的设计,能使我掌握软件开发过程的问题分析、系统设计、程序编码、测试等基本方法和技能并熟悉分支、循环、数组、函数等的综合运用。
这次课程设计我们在学习了C语言之后第一次一个人设计程序,以前在完成作业时虽然也写程序,但当时的程序通常都是很短的,涉及到的知识点也通常比较单一。这次的课程设计则是对我们这半年学习的C语言的中分支、循环、数组、函数等知识的综合运用,也是对我们所学知识的一个综合考察。在运用这些知识的时候也锻炼了软件开发所需要的问题分析、系统设计、程序编码、测试等基本方法和技能,为我们以后从事软件开发打下基础。另外,在这个五子棋游戏的设计过程中还会涉及到我们在C语言课堂上没有涉及到的图形设计,这又未尝不是一个学习新知识的好机会。我希望自己通过查阅资料,在编写程序,调试程序的过程中,独立掌握这一知识,并将它正确运用到我的程序中来。
其次,五子棋是一款非常简单的棋类游戏,我从小学六年级就就开始玩五子棋,那时候用的还是自己画的棋盘,到大学有了更多的充裕时间,我开始经常的玩QQ游戏中的五子棋,对五子棋浓厚的兴趣使我在看到这一课题的时候马上选择了它,虽然五子棋游戏的应用程序已经普遍,但身为棋迷的我希望将自己所学的知识应用到五子棋游戏中,设计出一款我自己的五子棋。
第2章系统功能需求分析
2.1 设计思想
该系统为五子棋应用程序的简版,功能上要求玩家可以自己选择3到9维的棋盘,玩家通过键盘上的上下左右键来实现棋子的移动,通过空格键输入棋子,每一步都可以通过ESC键,退出游戏,当一方三子连成一线时,这一方赢棋,并结束游戏。
2.2 功能模块
分析:程序总共包括5个模块,分别是初始化棋盘模块,判断结果模块,键盘功能控制模块,流程控制模块。
初始化棋盘模块:该模块的主要功能是根据玩家的选择初始化棋盘维数。
键盘功能控制模块:该模块根据玩家输入的上下左右键来控制棋盘上棋子的移动,根据enter键控制棋子的输入。
判断结果模块:该模块的功能是根据玩家输入的棋盘上的棋子,判定是否某一方存在三子连成一线。
游戏控制模块:该模块用来控制游戏的开始,在任意阶段任一方按ESC结束游戏,任一方三子连成一线,该方赢棋,输出结果,结束游戏。
流程控制模块:控制整个程序的运行,包括开始,结束以及各个模块的运行顺序各个函数之间的调用。
2.3功能结构图
第3章系统设计
3.1 流程图
ESC
ESC
ESC
ESC
按任意键
是
否
3.2 数据结构
程序在windows界面中建立坐标系,棋盘初始点x1,y1,x2,y2,棋盘维数n,棋格宽度规定为120,以step_x,step_y,为棋子小坐标乘以棋盘宽度后为棋子坐标。
3.3 中心算法代码说明
程序要求使用者自己输入棋盘维数为实现这一功能,主函数中使用语句printf(“Please choose a qipan between 3 and 9:”);使用者输入数字后,使用语句scanf(“%d”,&n);再调用函数printf_qipan(int n)。
printf_qipan(int n)中,建立一个图形窗口,建立坐标系,以n为变量,输出3到9维棋盘。
程序要求使用者能够通过键盘来控制棋子的移动和输入,judge_key(int
x,int y)设置了键盘功能。
通过定义
#define LEFT 0x4b00
#define RIGHT 0x4d00
#define DOWN 0x5000
#define UP 0x4800
#define ESC 0x011b
#define SPACE 0x3920
将键转化为C语言可以读取的字符,通过调用函数judge_key(int x,int y),按上下左右键,对应位置输出对应色圆环,前一位置画背景颜色圆环,覆盖红或白圆环,达到棋子的移动的效果;按空格键画实心圆,并根据step_x,step_y 的取值取得此时的棋子坐标的坐标;按ESC结束程序。
程序中规定某一方有三个字连成一线时,这一方赢棋。
函数judge_result(int x,int y,int n)用来判断哪方赢棋,
在每次输入空格键后,调用此函数,分别查看这一位置的上下左右斜方向上和这一棋子颜色相同的棋子是否有三个,若有,该方赢棋,然后输出结果,结束程序,若没有,继续游戏。