成都信息工程学院。
课程设计。题目:五子棋游戏的设计与实现。
作者签名:五子棋游戏的设计与实现。
摘要。此五子棋游戏并不是想以往的人机对弈的玩法,它主要是模拟的真人玩法,是两人亲自对弈。该游戏主要是利用win-tc编译器来编译的,该项游戏编程中利用了头文件,库函数,各种实用函数,宏定义等方式来编译的。
而且对其整体的设计思路还进行了具体的分析。同时还进行了游戏展示。
关键词: c语言;五子棋;游戏;函数;头文件;
目录。1. 引言。
该项课程设计中利用了头文件,库函数,各种实用函数,宏定义等方式来编译的。而且对其整体的设计思路还进行了具体的分析。同时还进行了游戏展示。
1.1课程设计的目的。
本程序旨在进一步训练自己的游戏开发技巧,能够掌握c语言图像模式下的编程。本程序涉及很多图形函数,包括坐标定位,颜色设置(背景色和文本颜色设置)、线条颜色、填充颜色;直线风格、文本风格、填充风格;画线、画图、画矩形函数;图形系统的初始化和关闭;图形屏幕和文字屏幕的清除;从键盘获得取键值等等。
通过该程序的训练,使自己能对c语言有一个更深刻的了解,掌握五子棋会游戏开发的基本原理,从而为以后的程序开发奠定基础。
1.2课程设计的要求。
本课程设计中要用到以下知识点:
a. 在画图,定义数组大小,以及定义光标移动键时要用到:宏定义,for循环等。
b. 在判断下棋位置时要用到:switch选择结构。
c. 贯穿整个游戏设计时用到:画图函数,done下棋函数,欢迎界面等函数。
1.3功能描述。
本程序用c语言实现了五子棋游戏,能进行基本的五子棋操作。程序能实现界面的初始化功能、下棋功能、胜负判断功能和帮助功能。
初始化功能。程序初始化屏幕和棋盘,默认player1先行。
实现下棋操作。程序能实现下棋操作,在下棋过程中可以随时退出。
判断胜负。程序对下棋的结果进行判断,分出胜负,并显示获胜信息。
显示帮助信息。程序能提示玩家轮到哪方下棋了。
2.开发环境。
该项游戏使用的开发工具是win-tc
2.1win-tc的基本介绍。
win-tc是一个tc2 windows平台开发工具。该软件以tc2为内核,提供windows平台的开发界面。支持windows平台下的功能,例如剪切,复制,粘贴等功能。
3.游戏总体设计。
3.1功能模块设计。
3.1.1系统模块图。
本程序包括4个子模块,分别是初始化模块、功能控制模块、下棋操作模块和帮助模块,如图3.1.1所示。各个模块的功能描述如下。
a.初始化模块。该模块主要是用于初始化屏幕信息,包括显示欢迎信息、操作方法和初始化棋盘。
b.功能控制模块。该模块是各个功能函数的集合,主要是被其他模块调用,包括画棋子、胜负判断和行棋转换等功能;
c.下棋操作模块。该模块用于执行下棋操作。
d.帮助模块。该模块主要用于显示帮助信息,提示轮到哪方下棋。
图3.1.1 系统功能图。
3.2流程图分析。
3.2.1.任务执行流程图。
游戏初始化是player1先行。当player1行棋后,程序判断player1是否获胜,如果获胜则显示获胜信息,否则交换行棋;交换行棋后,player2行棋,当player2行棋后,程序判断player2是否获胜,如果获胜,则显示获胜信息,否则交换行棋。程序以一方获胜或者按esc键作为结束标志。
任务执行流程图如图3.2.1所示。
3.2.2.下棋函数(done()函数)流程图。
下棋操作函数(done()函数)是本程序的核心部分,它调用功能模块中的函数来实现各种操作。首先获取key值(up、down、left、right、space、esc),如果获取的key值为esc,则退出程序;如果key值为up、down、left或right,表示移动棋子,程序首先在移动方向上判断棋子下一步是否超出边界,如果超出边界则什么也不用做(表示当前位置已经处于棋盘边界了),否则根据status[i][j]值来执行操作(如果status[i][j]为0,则画棋子显示运行轨迹;如果status[i][j]为flag值,则表示(i,j)位置已有棋子了);如果key值为space,表示落子操作,则在落子后,判断当前行棋方是否获胜,如果获胜则显示获胜信息,否则交换行棋方。done()函数的流程图如图3.
2.2所示。
3.3数据结构设计。
本程序没有自定义结构体,只定义了一些全局变量和数组。另外,该程序还涉及坐标位置的偏移,这方面的内容也在此说明。
3.3.1.定义数组。
定义了数组status[n][n],该数组存储整型类型的值,最多可以存储到status[19][19](实际上棋盘只画了18*18个位置)。数组status存储给定坐标(实际是反映映射位置的状态值)的状态值。状态值有3个,分别是和2.
0表示给定坐标映射的位置没有棋子,1表示给定坐标映射的位置是player1的棋子,2表示给定坐标映射的位置是player2的棋子。
3.3.2.全局变量。
step_x和step_y
这两个变量时整型类型的,表示行走时棋子处的坐标,分别表示x和y的坐标。
key该变量是整型类型的,表示按下的键盘的键值,本程序中可以获取的值有0x4b00(leftx4d00(rightx5000(downx4800(upx011b(esc)和0x3920(space)。
flag该变量也是整型类型的,用以表示是哪个玩家。flag为1是表示player1,为2时则表示player2.
3.3.3.坐标位置偏移。
坐标位置偏移主要是用于函数drawboard()和函数drawcircle()中。这里定义了offest_x(大小是4)、offset_y(大小是3)和offset(大小是20)3个偏移量,分别表示x、y坐标偏移和放大倍数。
3.4核心**的分析。
该程序中的精髓是main()函数。
void main()
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 welcome();表示欢迎信息的函数*/
void showmessage();
int gdriver;
int gmode;
clrscr();
welcome();
gdriver=detect;
gmode=0;
initgraph(&gdriver,&gmode,""
player=1;
drawboard();
showmessage();
do while(key!=space&&key!=esc);
while(key!=esc);
closegraph();
4.程序实现。
4.1程序结果的展示。
4.1.1.欢迎界面。
4.1.2游戏开始界面。
4.1.3. 行棋时的界面。
4.1.4. 胜利界面。
结论。经过合理的设计与分析,和多次的调试此程序可以正常的运行。并且达到了预期的效果。通过此次的游戏设计,对五子棋游戏的设计有了更深的了解,对一些编程语言有了更好的掌握。
参考文献。1] 谭浩强 c语言程序设计(第三版) 清华大学出版社
2] 谭浩强 c程序设计题解与上机指导清华大学出版社
3] 王岳斌等 c程序设计案例教程清华大学出版社。
C语言课程课程设计
课程设计报告。课程名称 c语言程序设计 系别 xxx 专业班级 xxx班 学号 xxxxxxxxxx 姓名 xxx 课程题目 10或100以内儿童加减乘除算术游戏。完成日期 2013.6.14 19 指导老师 xxx 2013年 6月 21日。附件 一 程序模块图。二 源程序。include inc...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。xx xx学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 课程类别 专业基础课。制订时间 2010年11月 计算机科学与技术系制。c语言程序课程设计教学...
C语言课程设计
目录。1 c语言程序课程设计教学大纲。2 c语言程序课程设计说明书。3 c语言程序课程设计报告 模板 4 c语言程序课程设计成绩评定表。珠海学院。课程教学大纲。课程名称 c语言程序课程设计。适用专业 2010级计算机科学与技术系各专业。课程类别 专业基础课。制订时间 2010年11月 计算机科学与技...