GameMaker-GM版山寨弹性贪吃蛇教程_第1页
GameMaker-GM版山寨弹性贪吃蛇教程_第2页
GameMaker-GM版山寨弹性贪吃蛇教程_第3页
GameMaker-GM版山寨弹性贪吃蛇教程_第4页
GameMaker-GM版山寨弹性贪吃蛇教程_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、这是我调整过的:draw_sprite(spr_life_bar_foregro un d,0,x,120);draw_sprite_part(spr_life_bar,0,0,96*(1-life/maxlife),114,96*(life/maxlife),0,120+96*(1-life/maxlife);我通常用:draw_sprite_ext();那个对对碰中的分数进度条和时间进度条都是这样画出来的。呵。GM 版山寨弹性贪吃蛇教程首先,创建两个精灵,并将其大小设定为:16*16。这里,我就用了两个方块,一个红色的,一个绿色的。为了使它们看起来不一样而已。其实,这里用一个精 灵也是完全

2、可以的。然后,开始创建对象。首先一个是玩家控制的对象,或者叫做:蛇头。能移动的一个东西。起个名字就叫:obj_play吧。该对象有四个事件。分别是:create alarm。、stepoutside room。咱们依次分别慢慢地道来。在create事件中加入以下代码old_x=0; /老的X坐标old_y=0; /老的Y坐标c_num=0;吃到食物的数量m_s=0; /移动状态标记在这里只需要定义这些变量就0K了。然后是step(步伐)事件,这里的主要作用是判断键盘输入,并给移动状态标记 赋值,并启动时钟事件。代码如下所示:if(keyboard_key=vk_left) /如果有左键按下一

3、一if(m_s!=3) /如果移动状态不为右m_s=1; /移动状态为左alarm0=1; /启动时钟if(keyboard_key=vk_up)一 一if(m_s!=4) _m_s=2;alarm0=1;if(keyboard_key=vk_right)if(m_s!=1)m_s=3;alarm0=1;if(keyboard_key=vk_down)if(m_s!=2)m_s=4;alarm0=1;接下来是alarm0时钟事件。其作用是将当前坐标赋值给老坐标变量,并移动到 新的位置。这里有以下代码:old_x=x; /老坐标获取值old_y=y;switch m_s /判断移动状态case

4、1: /向左x-=16;break;case 2: /向上y-=16;break;case 3: /向右x+=16;break;case 4: /向下y+=16;break;alarm0=10; /间隔时间启动时钟 最后是超出边界事件:这里没有用代码,拖入了一个display message动作,输出:you lose。拖入了一 个restartgame动作。当对象超出边界时,显示信息,并重启游戏。好!obj_play对象已经弄完了。下面是需要吃的食物的对象,起个名字叫:obj。该对象有create collision、step事件。create事件作用如下:follow=0; /定义跟随标记

5、old_x=0; /定义老坐标X old_y=0; /定义老坐标Y my_turn=0; /定义我的顺序标记 与obj_play的碰撞事件是改变吃到食物的数量, 改变我的顺序标记, 并根据“蛇 头”的移动方向及碰撞情况,改变跟随标记的值,并且创建一个新的 对象的实例。代码如下:if(follow=0) /如果没有跟随obj_play.c_num+=1; /吃到食物数增加1 my_turn=obj_play.c_num; /我的顺序获取值switch obj_play.m_s /检测obj_play移动状态case 1: /如果为向左if(obj_play.xx+16) /如果横坐标小于当前食物

6、横坐标+16follow=1; /改变跟随标记break;case 2:if(obj_play.yx-16)follow=1;break;case 4:if(obj_play.yy-16)follow=1;break;if(follow=1) /如果跟随标记为1instance_create(random(39)*16,random(29)*16,obj_f); /在随机位置创建一个新的 实例最后是step事件,也是纠结我最深的东西。就是因为它,我几乎毁了一口锅。 万恶的代码如下:if(follow=1) /如果跟随标记为1old_x=x; /把当前坐标赋值给老坐村old_y=y;if(my_

7、turn=1) /如果是第一个食物x=obj_play.old_x; /则新坐标等于“蛇头”的老坐标y=obj_play.old_y;if(my_turn1) /如果不是第一个target=instance_find(obj_f,my_turn-2); /获取它前面的一个, 即前一个被吃变成蛇 身的部分。x=target.old_x; /新坐标,等于找到那一个的老坐标。y=target.old_y;好了,至此,GM版山寨弹性贪吃蛇就全部搞完了。现在我们来说说,为什么叫 山寨,因为这东西相当不完善, 界面难看不说, 最主要的还有 “弹性”这个硬伤。 你下载了源码,玩了就会发现,当你吃的食物越多时

8、,弹性越强。这个BUG,只好等T大或者F大或者其它吧里的同好们帮着DE一下了。哈哈。当时的办法是利用VB的object数组功能,在贪吃蛇的每次移动时先让蛇头移动(令蛇头的标号为1)让后一个身体(依照离蛇头的距离编号2,3,4,5) 的XY坐标等于前一个身体变化之前的XY即可对了.应该还有一个我昵称下后A的bug,看看你那里有没有首先食物的位置最好能够出现的标准一点其次,下后A bug虽然没有出现,不过这个贪食蛇貌似不能最小半径转弯啊.可以试着把跟随部分的代码独立到另外一个object,利用with来控制所有蛇身的移动,这样可以避免因为蛇身的处理顺序不同而造成的bug标准格子移动的话,在2个obj的step事件里,最后写move_snap( 16,16即可。哈哈,我也觉得有弹性不错呢,像弹簧一样,萌原理是这样的:obj_play是在 alarm0事件中定

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论