五子棋对战游戏课程设计C语言.doc
《五子棋对战游戏课程设计C语言.doc》由会员分享,可在线阅读,更多相关《五子棋对战游戏课程设计C语言.doc(40页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、.XX远东理工学院C语言课程设计论文题目:五子棋对战游戏姓名:分院:机器人科学与技术学院专业:电子信息工程学号: 指导教师:二0一四年九月五日五子棋(C语言)摘要五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。早在“尧造围棋”之前,可能民间就已有五子棋游戏。发展于日本,流行于欧美。五子连珠棋五子棋容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。五子棋既有现代休闲的明显特征 “ 短、平、快 ” ,又有古典哲学的高深学问 “ 阴阳易理 ” ;它既有简
2、单易学的特性,为人民群众所喜闻乐见,又有深奥的技巧和高水平的国际性比赛;它的棋文化源渊流长,具有东方的神秘和西方的直观;既有 “ 场 ” 的概念,亦有 “ 点 ” 的连接。它是中西文化的交流点,是古今哲理的结晶。AbstractsGobang is a kind of right as two pure strategy type chess game, is originated from the ancient Chinese traditional black white kind of one. Long before YaoZao go, may be the folk has go
3、bang game. Development in Japan, popular in Europe and the United States. A row chess gobang easier, for young and old, and fun, fascinating; Can not only enhance thinking ability, improve intelligence, and high in philosophy, helps to cultivate ones morality raises a gender.Gobang can not only enha
4、nce thinking ability, improve intelligence, and high in philosophy, helps to cultivate ones morality raises a gender. Gobang has obvious characteristics of modern leisure short, flat, fast, and has a profound knowledge of classical philosophy Yin and Yang yi; It has the characteristics of easy to le
5、arn, are very popular among the people, and profound skills and a high level of international petition; Its chess culture source YuanLiu long, have the mysterious Oriental and western intuitive; Both the concept of field, also has a dot connection. It is the point of munication between Chinese and w
6、estern culture, it is the crystallization of ancient and modern philosophy.目录1. 前言12. 功能描述23. 总体设计33.1 功能模块设计33.1.1 游戏执行主流程33.1.2 游戏棋子控制53.1.3 游戏帮助53.2 函数功能描述64. 程序实现84.1.程序预处理84.1.1 主函数main()114.1.2 改变玩家124.1.3 胜负及帮助显示134.1.4 切换背景154.2 运行结果164.2.1 游戏初始状态164.2.2 游戏进行状态175. 结论186. 程序附录19致谢32参考文献3335
7、/ 401. 前言五子棋是一种两人对弈的纯策略型棋类游戏,是起源于中国古代的传统黑白棋种之一。早在“尧造围棋”之前,可能民间就已有五子棋游戏。发展于日本,流行于欧美。五子连珠棋五子棋容易上手,老少皆宜,而且趣味横生,引人入胜;不仅能增强思维能力,提高智力,而且富含哲理,有助于修身养性。C语言则是目前国际上比较流行的计算机高级编程语言之一,因其简洁、使用方便且具备强大的功能而受到编程人员的普遍青睐。它既适合作为系统描述语言,也可以用来编写系统软件,还可以来编写应用软件。 用C语言来编写俄罗斯方块这个游戏有较大优势:C语言具有各种各样的数据类型,并引入了指针概念,使得程序效率更高;C语言还包含很广
8、泛的运算符;另外C语言具有强大的图形功能,支持多种显示器和驱动器,而且计算功能、逻辑判断能力也比较强大。 选择此论文题是旨在训练基本编程能力和游戏开发技巧,熟悉C语言图形模式下的编程。本程序中涉及结构体、数组、时钟中断及绘图等方面的知识。通过本程序的训练,能对C语言有一个更深刻的了解,掌握五子棋游戏开发的基本原理,为将来开发出高质量的游戏软件打下坚实的基础。2. 功能描述如图2.1所示,本游戏主要实现一下几种功能:五子棋游戏初始化模块下棋操作模块判断胜负模块帮助模块图2.1 五子棋游戏功能描述图(1) 初始化模块。进入程序后按提示操作游戏。(2) 下棋操作模块。按1进入游戏 UP DOWN L
9、IGHT RIGHT 为方向操作键,空格为落子键(3) 判断胜负模块。玩家游戏过程中,一方达到获胜条件后系统自动判定胜负,并进入主界面,重新开始下轮游戏。(4) 帮助模块,帮助玩家了解游戏操作等功能。3. 总体设计3.1 功能模块设计3.1.1 游戏执行主流程 本五子棋游戏执行主流程图3.1所示。在判断键值时,有判断五子是否练成一线,玩家是否获胜的判断:图3.1 游戏执行主流程图3.1.2 游戏棋子控制(1)在游戏开始时出现一个欢迎的界面同时介绍了游戏的规则;(2)画出棋盘的大小; (3)画棋子并确定棋子的大小; (4)判断键盘输入哪个键执行操作; (5)玩家 P1 先落棋; (6)玩家轮流下
10、棋; (7)判断赢家。这是此游戏开发的重点和难点部分。下面分别较少左移、右移、下移、上移及胜负判断的实现。棋盘设计为1818格,初始状态光标在棋盘的中央,玩家1先走,轮流落子,当一方连成五子或下满棋盘时,游戏结束(连成五子的一方获胜,下满棋盘为和棋)。当游戏一方胜利后显示胜利信息。从程序表面看,这是一个二维平面图,所以数据用二维数组来表示,数组两个下标可以表示棋盘上的位置,数组元素的值代表棋格上的状态,共有三种情况,分别是0代表空格,1代表白棋,2代表黑棋。这样程序的主要工作是接收棋手按键操作,棋手用Up、Down、Left、Right控制光标移动,空格键表示落子。一旦接收到空格键,说明棋手落
11、子,先判断是否是有效位置,也就是说已经有棋子的位置不能重叠落子。落子成功后,马上判断以该位置为中心的八个方向:上、下、左、右、左上、左下、右上、右下是否有相同颜色的棋子连成五子,如果连成五子,则游戏结束,输出相应的信息。如果想退出游戏,可以按Esc键3.1.3 游戏帮助实现比较简单,使用outtextxy()函数实现。3.2 函数功能描述1定义全局变量1. int statusNN; /*定义的数组,表示棋盘某点的状态(棋手1或棋手2)*/2. int step_x,step_y; /*行走的坐标,即每一步光标移动的距离*/3. int key ; /*获取按下的键盘的键*/4. int fl
12、ag; /*玩家标志,当flag=0时,表示该点无棋子,flag=1表示玩家1的棋子,flag=2表示玩家2的棋子*/2Main()主函数按照语法规则,首先定义使用到的常数、全局变量、函数原型说明。棋盘状态用数组int status1919,初值为0,表示空格。函数的实体比较简单,调用图形驱动、画棋盘、人人对弈等自定义函数,一旦游戏结束后,关闭图形驱动,程序结束。3DrawBoard()画棋盘函数背景颜色设为蓝色,从坐标(100,100)开始每隔20个单位用黄色画一条水平直线,一条垂直线,构成棋盘,用循环语句实现。画线函数line()的参数为线的起点和终点坐标,注意要计算正确。函数setfil
13、lstyle()可以设置填充模式和填充颜色,circle(x,y,8)以x和y为圆心画圆(这里半径为8),用它表示棋子。4ResultCheck(int x,int y)判断是否胜出函数本函数根据每次落子的位置,分别向上、下、左、右、左上、左下、右上、右下八个方向判断是否有相同颜色的棋子连成五子,如果成立,游戏就结束,并显示提示信息(如:红方获胜),否则继续落子。5Done()执行下棋函数这是游戏进行的函数,主要是接收棋手的按键消息,其处理过程如下:(1)按Esc键程序可以随时结束。(2)按上下左右光标键,则改变棋子移动的坐标值。(3)按空格键后判断:1) 如落子的位置已经有棋则无效,继续按键
14、。2) 如落子位置是空格,可以将棋子落入格内,调用ResultCheck(int x,int y)函数。3) 如果棋子变化后,棋盘已下满了棋子,则游戏结束。显示平局信息。(4)重复上述步骤,直到游戏结束。6图形功能函数以下函数原形都在graphics.h中。(1)registerbgidriver():(2)initgraph(int *driver, int *mode, char *path):用于初始化图形系统,并装入相应的图形驱动器。该函数把由driver所指向的图形驱动器代码装入内存。如果图形驱动器未装入内存,图形函数将不能操作。图形函数所用的屏显模式由mode所指向的整数值确定。最
15、后,图形驱动器的路径是由path所指向的字符串给出。如果没有指定路径,就在当前工作路径上寻找。(3)rectangle(int left,int top,int right,int bottom):函数rectangle()用当前画出由坐标left,top及right,bottom所定义的矩形。(4)setcolor(int color):把当前画线颜色设置为color所指定的颜色。(5)closegraph():该函数使图形状态失效,并且释放用于保存图形驱动器和字体的系统内存。当你的程序既用到图形输出又用到非图形输出时,应该用此函数。该函数还把系统屏显模式返回到调用initgragh()前的
16、状态。4.程序实现4.1.程序预处理 包括加载头文件,定义结构体、常量和变量,并对它们进行初始化工作。/*加载头文件*/#include #include #include #include /*图形函数库*/*编译预处理,定义按键码*/#define LEFT 0x4b00 /*向左*/#define RIGHT 0x4d00 /*向右*/#define DOWN 0x5000 /*向下*/#define UP 0x4800 /*向上*/*若想在游戏中途退出, 可按 Esc 键*/#define ESC 0x011b /*退出键*/*SPACE键表示落子*/#define SPACE 0x3
17、920 /*落子键*/*定义常量*/*设置偏移量,即定义每一步光标移动的距离*/#define OFFSET 20#define OFFSET_x 4#define OFFSET_y 3/*定义棋盘数组大小,即棋盘的大小,这里为18x18格*/#define N 19/*移动的方向*/#define LEFT 0x4b00 /*向左*/#define RIGHT 0x4d00 /*向右*/#define DOWN 0x5000 /*向下*/#define UP 0x4800 /*向上*/zi=-1;/竖向for(i=x,j=y;i=0&chipij=p;i-)zi+;for(i=x,j=y;i
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 五子棋 游戏 课程设计 语言
限制150内