GM版山寨弹性贪吃蛇教程.doc

  1. 1、本文档共5页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
这是我调整过的:? draw_sprite(spr_life_bar_foreground,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。这里,我就用了两个方块,一个红色的,一个绿色的。为了使它们看起来不一样而已。其实,这里用一个精灵也是完全可以的。? 然后,开始创建对象。首先一个是玩家控制的对象,或者叫做:蛇头。能移动的一个东西。起个名字就叫:obj_play吧。该对象有四个事件。分别是:create、alarm0、step、outside?room。咱们依次分别慢慢地道来。 在create事件中加入以下代码:? old_x=0; //老的X坐标? old_y=0; //老的Y坐标? c_num=0; //吃到食物的数量? m_s=0; //移动状态标记? 在这里只需要定义这些变量就OK了。? 然后是step(步伐)事件,这里的主要作用是判断键盘输入,并给移动状态标记赋值,并启动时钟事件。代码如下所示:? if(keyboard_key=vk_left) //如果有左键按下? {? if(m_s!=3) //如果移动状态不为右? {? m_s=1; //移动状态为左? alarm[0]=1; //启动时钟? }? }? if(keyboard_key=vk_up)? {? if(m_s!=4)? {? m_s=2;? alarm[0]=1;? }? }? if(keyboard_key=vk_right)? {? if(m_s!=1)? {? m_s=3;? alarm[0]=1;? }? }? if(keyboard_key=vk_down)? {? if(m_s!=2)? {? m_s=4;? alarm[0]=1;? }? }? 接下来是alarm0时钟事件。其作用是将当前坐标赋值给老坐标变量,并移动到新的位置。这里有以下代码:? old_x=x; //老坐标获取值? old_y=y;? switch?m_s //判断移动状态? {? ?case?1: //向左? ?{? ?x-=16;? ?break;? ?}? ?case?2: //向上? ?{? ?y-=16;? ?break;? ?}? ?case?3: //向右? ?{? ?x+=16;? ?break;? ?}? ?case?4: //向下? ?{? ?y+=16;? ?break;? ?}? }? alarm[0]=10; //间隔时间启动时钟? 最后是超出边界事件:? 这里没有用代码,拖入了一个display?message动作,输出:you?lose。拖入了一个restart?game动作。当对象超出边界时,显示信息,并重启游戏。? 好!obj_play对象已经弄完了。? 下面是需要吃的食物的对象,起个名字叫:obj_f。该对象有create、collision、step事件。? create事件作用如下:? follow=0; //定义跟随标记? 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) //如果横坐标小于当前食物横坐标+16? ?{? ?follow=1; //改变跟随标记? ?}? ?break;? ?}? ?case?2:? ?{? ?if(obj_play.yy+16)? ?{? ?follow=1;? ?}? ?break;? ?}? ?case?3:? ?{? ?if(obj_play.xx-16)? ?{? ?follow=1;? ?}? ?break;? ?}? ?case?4:? ?{? ?if(obj_play.yy-16)? ?{? ?follow=1;? ?}?

文档评论(0)

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

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

1亿VIP精品文档

相关文档