C语言实现贪吃蛇.docx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
* * C 语言实现贪吃蛇 ***************************************************************** ************************************************************ 贪吃蛇实现原理: 贪吃蛇游戏在理论上是可以无限的进行下去的(除了撞墙和 咬到自己),那么游戏主体就一定是个循环。 蛇是如何动起来的?在这里就是通过不断改变蛇的坐标,然 后根据蛇的坐标不断刷新屏幕在视觉上形成蛇的移动效果。 食物出现在随机位置(当然不能出现在障碍物和蛇身上) 蛇能吃到食物其实就是蛇头的坐标与食物的坐标重合时。 当蛇咬到自己或者撞到墙的时候游戏结束(坐标判断) ****************************************************************** ************************************************************/#incl ude lt;stdio.hgt; #include lt;conio.hgt; #include lt;stdlib.hgt; #include lt;windows.hgt; #include lt;time.hgt;//72,80,75,77 是方向键对应的键值 #define UP 72 #define DOWN 80 #define LEFT 75 #define RIGHT 77 #define SNAKE 1 #define SNAKE 1 //蛇的坐标标识 #define FOOD 2 #define FOOD 2 //食物的坐标标识 #define BAR 3 #define BAR 3 // 墙的坐标标识 //初始化地图 17*17 char map[17][17] = {0}; //初始化蛇头坐标 unsigned char snake[50] = {77}; //初始化食物坐标 unsigned char food = 68; //蛇长 char len = 1;// 存储坐标数字与 x、 y 的转换函数 void tran(unsigned char num,unsigned char * x,unsigned char * y); //打印游戏 void print_game(void); //获取方向函数(注意当蛇身长度超过一节时不能回头) int get_dir(int old_dir); //移动蛇身函数 (游戏大部分内容在其中 void move_snake(int dir); //生产食物的函数 unsigned char generate_food(void); //判断蛇死活的函数 (判断了蛇是否撞到边界或者自食 ) int isalive(void);int main(void){ int dir = UP; //初始方向默认向上, UP 是我们定义的 //按道理该游戏是可以无限继续下去的,因此是个循环 while(1){ print_game();//打印游戏dir = get_dir(dir);//获取方向 ( print_game(); //打印游戏 dir = get_dir(dir); //获取方向 (我们摁下的方 向) move_snake(dir); //移动蛇身 if(!isalive()){ //判断蛇的生命状态 break;printf(Game Over!\n); break; printf(Game Over!\n); return return 0; // void tran(unsigned char num,unsigned char * x,unsigned char * y){ //注*x = num gt;gt; //注 *y = (unsigned char)(num lt;lt; 4) gt;gt; 4; 意这里要做个强制类型转换 //根据汇 编,如果不做强制转换,y 编,如果不做强制转换, y 的值与 num 的值相同 }void print_game(void){ int i,j; } } } } //根据地图上每点的情况绘制游戏( i 表示 x 轴, j 表 示 y 轴),按行打印, j 表示行, i 表示列 for(j = 0;j lt; 17;j ++){ for(i = 0;i lt; 17;i ++){ //空白地方 if(map[i][j] == 0){ putchar( ); //蛇身 else if(map[i][j] == SNAKE){ putchar(*); } } } } //围栏 else if

文档评论(0)

zhaohuifei + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档