为了创建一个有趣的游戏,需要在游戏中加入一些挑战,让玩家知道什么是失败,知道自己得分多少。生命值,分数,时间等游戏因素都能决定玩家是赢还是输。对于纸牌记忆游戏,让人玩得轻松,而不是过于紧张。那就加一个时间因素到游戏里。
这是一个有时间限制的记忆游戏。当时间用尽后,我们还没有找到所有匹配的纸牌,游戏就会失败。
在Game Maker Studio 里,用alarm这个控件。设置个60秒时间给玩家,玩一局。当时间为0时,游戏检查玩家是胜利还是失败了。
先设置两个变量,一个存总时间,一个存当前时间。打开obj_controller,在创建事件里输入
play_time = 60;
cur_time = 60;
play_time变量表示游戏总时间,当我们重置游戏时,这个会有用。
cur_time变量,会在屏幕上显示,让玩家知道剩余时间。当时间到0时,还要检查胜利没有,胜利和失败是两个状态。
添加Alarm 0控件到obj_controller,输入下面的代码
cur_time=0;
if(all_cards_matched(deck))
{
global.game_state=states.won;
}
else
{
global.game_state=states.lost;
}
其中有一个函数all_cards_matched(deck),需要补充里面的内容。创建脚本all_cards_matched
var deck=argument0;
var deck_size=ds_list_size(deck);
for(var i=0;i<deck_size;i+=1)
{
if(deck[| i].visible==true)
{
return false;
}
}
return true;
检查桌面上如果还有纸牌,就失败,否则就胜利。
其实,我们需要在纸牌每次匹配成功后,就要执行这个脚本。让我们修改obj_card里的Alarm 0事件。
if(global.cards[0].type==global.cards[1].type)
{
global.cards[0].visible=false;
global.cards[1].visible=false;
if(all_cards_matched(obj_controller.deck))//需要指定引用对象名称为obj_controller,否则会报错
{
global.game_state=states.won;
}
}
global.cards[0].face=0;
global.cards[1].face=0;
global.cards[0]=noone;
global.cards[1]=noone;
if(global.game_state!=states.won and global.game_state!=states.lost and global.game_state!=states.playing)//排除这三种状态,剩下的才是等待状态
{
global.game_state=states.wait;
}
现在就差把时间显示出来了。这个需要HUD。
暂无关于此日志的评论。