2014年2月7日星期五

[Mugeda HTML5技术教程之14]案例分析:制作网页游戏 - mugedatech

本邮件内容由第三方提供,如果您不想继续收到该邮件,可 点此退订
[Mugeda HTML5技术教程之14]案例分析:制作网页游戏 - mugedatech  阅读原文»

本文档要分析的案例是一个爱消除的网页小游戏,从中可以体会一些Mugeda API的用法和使用Mugeda动画制作网页游戏的方法。

(一)游戏规则:

1、开始游戏时,手机出现在最上面一行的任意一格;

2、开始游戏时,彩色石头随机从上往下落,填满所有的方框,相同的三个石头不能相邻的排在一列或者一行;

3、手机从上移动到最下面一行的任意一格,就算胜利,或游戏时间结束,消除的石头数量超过30个也算胜利。

(二)、游戏玩法

只要三个相同的石头相邻的排在一列或者一行,他们就会消失,同时上面的石头往下落,落到消失的石头位置上。

游戏动画演示:

https://en.mugeda.com/client/preview_css3.html?id=5d873601





设计思路:

游戏开始首先生成一个8*8 = 64的石头阵列,会从上到下一次落下。阵列的石头会存放到一个数组中。每个石头都有相应的类型。


对石头对象添加inputstart 、inputend事件监听。实现点击输入和拖动输入。当有有效输入时,交换对应的两个相邻的石头。等待检测时发现是否会形成消掉石头的条件,如果没有则再交换回来。


游戏开始后,会在每帧都调用一次runcheck()函数来检测是否有生成消掉石头的条件。检测的方式是:先按行遍历一遍数组,看有没有连续超过三个相邻石头的类型是相同的。然后再按列遍历一遍数组,看有没有连续超过三个相邻石头的类型是相同的。如果有,则将相同的石头消除,并生成新的石头,并从上到下依次落下。



关键点:

1.生成新的石头对象:

Game.createStone = function (type,index,posY)

{

var j = Math.floor(index / hang);

var i = num - hang * j;

var instance = mugeda.createInstanceOfSymbol('stone' + type);

scene.appendChild(instance, null);

instance.left = (kuan * i);

instance.top = posY;

instance.addEventListener("inputstart", onStart);//监听inputstart事件

instance.addEventListener("inputend", onClick);//监听inputend事件

instance.scene.setSegment("static", 0,0,false);//静态segment

instance.scene.setSegment("run", 1,10,true);//消失特效的动态segment

instance.scene.playSegment("static");

return instance;

};

函数参数:

type Number 要生成的石头对象的类型,一共有7种不同的石头。

index Number 要生成的石头在数组中的下标。

posY Number 生成石头的Y轴坐标,因为要实现新生成的石头依次落下。


生成的石头添加到数组中

var instance = Game.createStone(type,(j* hang + i),posY);

stoneArray.push({obj:instance, type:type,v:v0});


2.消除石头


从舞台场景中移除石头对象

scene.removeChild(stoneArray[xiaoArray[x].num].obj);

stoneArray[xiaoArray[x].num].obj = null;

stoneArray[xiaoArray[x].num].type = 0;


3.生成新的石头对象

var type = Math.floor(Math.random() * 100) % 6;

var instance = game.createStone(type,(i - x * hang),posY);

stoneArray.type = type;

stoneArray.obj = instance;


总结,通过设计一个简单的小游戏可以更深刻的理解Mugeda API的用法。具体用到的API接口请参考[Mugeda HTML5技术教程之11]Mugeda API简介。有关游戏的逻辑则因人而异,这里不做具体讨论,建议是做的过程先易后难,先做最简单的游戏充分熟悉了Mugeda API的用法后再制作稍微复杂的游戏。下一节我们将要做案例分析:制作移动课件。


本文链接:http://www.cnblogs.com/mugeda/p/3540259.html,转载请注明。

从一道数学题弹程序员的思维:数学题,求证:(a+b%c)%c=(a+b)%c - 神奇辉  阅读原文»

在学校论坛看到这道题目,全忘了的感觉。

如果你是高中的,那我觉得你完全没问题。但是,在这个博客园的圈子,觉得全部人都是程(ban)序(zhuan)员(gong)相关的人员,解决这个问题有点难度,毕竟,想法已经偏了。

有句话说得好,如果你拿着一个锤子,那你看什么都像一个钉子。

因此程序员必要的时候必须转换下思路啊。程序员思维是:已知条件,求值;而不是已知 条件 和 值,求证:这求值过程不存在bug。

如果有人叫你这么证明你的程序的求值过程正确,你会不会抡起你的键(zhuan)盘(tou)就拍过去了。

我们能做到的只是,带入a=*,b=**,c=***,验证等式成立。数学题让数学家证明去吧。

下面回到高中的想法,谈谈这道题目吧:

求证:(a+b%c)%c=(a+b)%c
解:

  假设等式左右边的值为 v,

  则 存在整数x和y,使得下面等式成立。

  a
+b%c = v + xc;(左边)

  a
+b = v + yc;(右边)

  这两式子同时成立,则可以化简为:

  存在整数 z 使得 z
*c = b - b%c 成立。

  则证明 b
- b%c 为 c 的倍数。

  显然 b
- b%c 为 c 的倍数。

  感觉我自己也跑歪了,如果(b - b%c 为 c 的倍数)不是显然的话,我们还做什么程序员。

其实 (a+b%c)%c=(a+b)%c 也是显然的。


本文链接:http://www.cnblogs.com/shenqi0920/p/3540258.html,转载请注明。

阅读更多内容

没有评论:

发表评论