silverlight超小游戏开发包SmallGameLib(三)—— Mouse终极大特训

silverlight超小游戏开发包SmallGameLib(三)—— Mouse终极大特训,第1张

概述继续使用咱们的SmallGameLib开发! 这次我们做一个玩家通过鼠标控制一只老鼠,躲避来自四面八方的小虫的攻击。 若被小虫碰到,则Game Over。   整个游戏分为3个界面,   1。 难度选择 2。 游戏主界面 3。 GAMEOVER,给出得分和评价。       难度越大,则小虫越多。   首先导入我们的SmallGameLib的各个目录,修改Config下的GameStatus,根据

继续使用咱们的SmallGamelib开发!

这次我们做一个玩家通过鼠标控制一只老鼠,躲避来自四面八方的小虫的攻击。

若被小虫碰到,则Game Over。

 

整个游戏分为3个界面,

 

1。 难度选择

2。 游戏主界面

3。 GAMEOVER,给出得分和评价。

 

 

 

难度越大,则小虫越多。

 

首先导入我们的SmallGamelib的各个目录,修改Config下的GameStatus,根据我们的需求,修改如下:

 

    public enum GameStatus
    {
        难度选择,
        开始,
        游戏中,
        游戏结束,
    }

 

游戏过程中一共有2种物体,一种是主角(也就是老鼠),一种虫子。

那么我们需要将这两者从 BaSEObj 派生,分别完成其构造函数,帧逻辑函数。

 

然后,注意,我们这里需要在游戏中进行碰撞检测,所以我们还需要重载BaSEObj的getMyBounderRect()方法,来给其指定碰撞检测盒。

在调试过程中,可以将对象的 BoundVisiable 属性设成 true来观测碰撞盒。效果如下图

 

 

getMyBounderRect指定的是针对物体左上角点的一个矩形框。

如何检测两物体相撞呢?很简单,首先可以通过物体的 getBounderRect方法获取其包围框的绝对位置(针对于整个画布的位置)

然后通过 MathTools 的IsHit方法判断是否相撞,

 

 MathTools.IsHit( obj.getBounderRect(),mouser.getBounderRect() = true 则两者相撞

整个游戏采用一个层就够了,于是在Logic下新建Layer派生自BaseLayer。

 

下面写我们的Layer层逻辑。层逻辑实际分4步:

 

1。 向所属物体派发逻辑

2。 移除窗口外的物体

3。 随机在窗口四周生成小虫

4。 判断是否有小虫和老鼠相撞

 

 如下所示:

 

 

base类(BaseLayer)提供的 logic()即向所属物体派发逻辑, removeObjectsOutsIDe方法可以移除窗口外的物体。

使用MathTools的IsProbEventHappen可以以一定概率发生事件。返回为true则发生,false不发生。

 

最后编写我们的游戏核心,派生自 GameEngine类,需要实现状态机以及界面调度。

 

GameCore.cs

 

 

如何在屏幕四周生成点?

 

使用MathTools提供的RandomborderPoint()方法,可以随机生成一个处于边框位置的点。

 

最后,提供试玩地址:

 

http://218.240.31.225:902/testsilverlight/catchmouse/

 

看看你在变态难度能坚持多久~

总结

以上是内存溢出为你收集整理的silverlight超小游戏开发包SmallGameLib(三)—— Mouse终极大特训全部内容,希望文章能够帮你解决silverlight超小游戏开发包SmallGameLib(三)—— Mouse终极大特训所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1029185.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-23
下一篇2022-05-23

发表评论

登录后才能评论

评论列表(0条)

    保存