网站大量收购独家精品文档,联系QQ:2885784924

贪吃蛇 - 副本.doc

  1. 1、本文档共39页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
贪吃蛇 - 副本

一、系统目标 通过不同的函数实现画出蛇身,食物,蛇的上下左右移动,在蛇身达到一定长度时通关出现不同障碍物的功能,并在游戏进行时,实现按玩家意愿调整速度,暂停,开始等功能。在开始界面写出游戏操作按键,游戏得分,画出围墙等信息的功能。 二、设计思想 2.1、解决的主要问题 2.1.1、蛇的移动 2.1.2、食物的出现 2.1.3、障碍物的表示 2.1.4、蛇身的画出 2.2、如何解决问题 · 2.2.1、通过坐标表示蛇身各部分,在蛇移动过程中,只需控制蛇头的坐标。再通过一个循环将蛇身的各个坐标向前移动,用前面一节的坐标表示后面一节,例如: for(i=snake.node-1;i0;i--) { snake.x[i]=snake.x[i-1]; snake.y[i]=snake.y[i-1]; } 2.2.2、采用随机函数产生在围墙即由点(150,40)与(600,450)为左上角与右下角的矩形范围内,并通过2个循环判断产生的食物,x,y坐标是否为10的倍数,是则画出食物,不是则把其坐标值增加,知道为10的倍数,并将其画出,例: while(food.x%10!=0) food.x++; while(food.y%10!=0) food.y++; 2.2.3、 障碍物以固定的坐标在固定的位置画出,并利用全局定义的二维数组让其中心点坐标位置等于1,有利于后期判断蛇是否撞到障碍物 number[zai[0].x[0]+i][zai[0].y[0]+5]=1; if (number[snake.x[0]+5][snake.y[0]+5]==1) { GameOver; snake.life=1; } 判断蛇是否撞到障碍物 2.2.4、 在蛇移动的过程中主要是控制蛇头的移动和蛇尾的消失,所以在控制蛇头移动时只要控制蛇头的坐标,即通过判断蛇移动方向,不同的方向控制蛇头的X,Y坐标变化 ,而蛇尾的消失则是在蛇每往前移动一步,则把原来的蛇尾编程背景色,即消失,例: setfillstyle(BLACK); //用黑色去除蛇的的最后一节 bar(snake.x[snake.node-1],snake.y[snake.node-1],snake.x[snake.node-1]+10,snake.y[snake.node-1]-10); 三、设计的过程及步骤 1、设计系统功能图 YES N O N Y N Y 2、流程图: Y Y N Y N N Y 数据存储的思路 number[500][650] 表示障碍物游戏区域内为障碍物的点 score=0 表示游戏得分 struct Food{ int x; //食物的横坐标 int y; //食物的纵坐标 int yes; //判断是否要出现食物的变量 }food; //食物的结构体 struct Snake{ int x[200]; int y[200]; int node; //蛇的节数 int direction; //蛇移动方向 int life; // 蛇的生命,0活着,1死亡 }snake; //蛇的结构体 struct za { //障碍物 int x[1];

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档