我们还是修改obj_controller,添加一个draw事件,叫Draw GUI.代码如下
draw_set_font(fnt_score);
draw_set_color(c_white);
draw_text(30,30,"SCORE: "+string(score));
switch(global.game_state)
{
case states.paused:
draw_text(900,30,"PAUSE");
break;
case states.gameover:
draw_text(850,30,"GAME OVER");
break;
}
if(instance_exists(obj_player))
{
var xhp=30;
repeat(obj_player.hp)
{
draw_sprite(spr_life,0,xhp,750);
xhp+=30;
}
}
这样,就会显示玩家的生命数,游戏状态是暂停还是GAME OVER,以及获取的分数。分数是存在score变量里,这个变量比较特殊,是游戏里现成就可以用的,不需要定义,默认值就是0.当我们消灭一艘外星人的飞船后,自动加100分。
修改敌人Destroy事件,添加如下代码
score+=100;
游戏测试一下,按下ESC键后的效果如图
继续添加游戏的胜利条件。修改obj_controller对象,在step事件里修改代码,如下
if(!instance_exists(obj_enemy_red))
{
global.game_state=states.gameover;
}
else
{
for(var i=0;i<instance_number(obj_enemy_red);i++)
{
var enemy=instance_find(obj_enemy_red,i);
if(enemy.y>=room_height)
{
global.game_state=states.gameover;
}
}
}
show_debug_message("STATE CODE="+string(global.game_state));
这样,当我们消灭完所有的飞船,游戏就结束,或者当敌人到达屏幕的下面的边界时,游戏也自动GAME OVER。
按F5运行一下,试玩开始
暂无关于此日志的评论。