Silverlight小游戏系列之“打地鼠“

一、老鼠与洞

打地鼠这个游戏,玩法很简单.当地鼠钻出地洞的时候用锤子敲打它,打中就得分.

所以当考虑要写这么一个小游戏的时候,首先应该想到,要写一个"地洞".

于是我说:"要有洞". 结果就有了洞:

image

注意这个洞,这可不是一般的洞.它是一个很神奇的洞,那么它是怎么组成的呢?请看下期走进科学:老鼠与洞不得不说的故事.

哈哈,跑题了.

其实这个洞,是有两层的,为了实现老鼠从动里面钻出来的效果,必须得把这个洞分为两层.一层是上面的圆口,一层是下面的草地.如图:

image

下面的图层挡住老鼠,老鼠挡住洞口.钻出来的效果就是这么实现的:

image

既然提到老鼠了,那么就不得不详细说一下.

老鼠这么个东西,实际上就是两张图片,正常情况下是这样:

image

被打中后是这样:

image

好了,介绍完洞和老鼠,下面该说说怎样整合它们了.

首先明确一点,一个洞只能有一只老鼠.

所以,每个洞里面都包含一个老鼠对象

image

老鼠有进洞和出洞两种变化,但是老鼠这个对象也没有必要直接让游戏逻辑去调用.所以,洞也要有一个出洞的方法:

洞的出洞方法

在洞的出洞方法里调用老鼠的出洞方法,老鼠的出洞方法实际上做了一个状态切换的操作,因为老鼠在出洞之前可能已经被打过一次了

复制代码

复制代码

public void OutHole() 

    if (imgInjured.Visibility == Visibility.Collapsed) 
    { 
        imgNormal.Visibility = Visibility.Visible; 
    } 
    IsInjured = false; 
}

 

复制代码

复制代码

调用老鼠的出洞方法,就是把游戏账号出售状态置为正常.

回到洞的洞的出洞方法上,为了让游戏更具可玩性,老鼠出洞和进洞都需要一段平滑过渡的动画    sbOutHole.Begin(); 便是播放出洞动画.

老鼠不可能永远呆在洞的外面,所以在1000毫秒之后,让老鼠进洞.

当然,不是每一个老鼠都有那么幸运的,有些老鼠可能会被残忍的玩家无情的用锤子击中.这时老鼠为了配合玩家的残忍心理只能摆出一副无辜的受伤姿态啦.

老鼠的 EvInjured(被击中)事件和IsInjured(被击中)属性

老鼠的被击中事件和被击中属性

当老鼠被击中时,会触发游戏账号出售EvInjured事件,老鼠所在的洞在初始化的时候就已经注册这个事件了:

洞注册老鼠的被击中事件

洞的被击中方法:

public void Injured() 

    mouse.Injured(); 
    sbInHole.Begin(); 
}

调用老鼠的Injured方法,然后播放老鼠进洞动画.

同样的,为了让游戏逻辑清晰明了,游戏逻辑只会调用洞的被击中方法而不会去理会老鼠的被击中方法:

老鼠的被击中方法

老鼠被击中的方法很简单,通过改变两张图片的可见性来表示当前的状态,然后在500毫秒之后让被击中的图片不可视,因为500毫秒后老鼠的进洞动画已经播放完成了.

好了,至此老鼠与洞的故事到这里就结束啦.

二、游戏主逻辑

有了老鼠与洞,还得有一段逻辑代码去控制他们.

规则:

关卡:随着玩家玩的时间变更,时间越长关卡越高,而游戏速度(地鼠出洞的速度)也随之增加

地鼠出洞:在固定的间隔时间里随机地洞的地鼠出洞.

首先把洞铺到一块草地上(草地是一张图片):

image

通过转换把后排的洞变小,这样更有立体感.

image

界面写好后,可以开始写逻辑了.用迭代把界面里的洞找出来并添加到一个List:

初始化洞列表

主循环:

主循环

passedTime 用来记录玩家玩游戏的时间,因为关卡是通过这个时间来增加的.

一直到一个固定的时间后,GameOver.(游戏的玩法就是这样的,到点就结束,然后分数越高说明玩得越好).

关卡判断完成后,随机出一个洞来并让这个洞的老鼠出洞.

嗯,这就是主逻辑了,简单吧?

三、总结

还有一些细节方面的比如分数统计,关卡显示啥的就不必说太多了.

这款游戏几乎完全使用xaml编写,只用了少部分C#代码编写逻辑,由此可见QQ号的强大之处.

如能灵活的用之,便可在游戏界面上节省很多时间.

嗯,本文只是抛砖引玉,希望能够有更多的.net开发者投入到Silverlight游戏开发行列中来.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值