小蜜蜂java小游戏_小游戏-打小蜜蜂

打小蜜蜂游戏

采用单体模式,单体就是把一批相关的属性和方法组织在一起的对象。

特点:

可以以用来划分命名空间,清除全局变量带来的危险。

可以把代码组织的更为一体,便于阅读和维护。

需要注意的点:

1、由于采用单体模式,每个方法的对象都是私有的,别的方法想调用的时候需要将其变为此对象里的全局对象

this.oUl = oUl;

2、this在碰到事件的时候this就不在指向该对象,需要更改this指向

var This=this;

游戏中几个点的解决办法

1、小蜜蜂的布局

不能采用float方式,因为当小蜜蜂移动或者消失的时候,剩下的布局方式会乱掉,所以采用绝对定位的布局,但是一开始不知该如何设置每个小蜜蜂的定位,可以先采用float方式,然后设置一个数组存下当前的left和top值,然后在设置成定位的方式。

var arr=[];

for (var i = 0; i < this.aLi.length; i++) {

arr.push([this.aLi[i].offsetLeft, this.aLi[i].offsetTop]);

}

for (var i = 0; i < this.aLi.length; i++) {

$(this.aLi[i]).css({

'position': 'absolute',

'left': arr[i][0],

'top': arr[i][1],

});

}

2、单兵作战时x和y的速度

可以根据offsetleft和offsettop算出a和b,勾股定理算出c,给出斜边移动速度10就可以算出小蜜蜂的速度x和y。

e0ec556a3d76

image.png

var This=this;

var nowLi=this.aLi[Math.floor(Math.random()*This.aLi.length)];//随机生成一个li

setInterval(function(){

var a=This.oA.offset().left-$(nowLi).offset().left;

var b=This.oA.offset().top-$(nowLi).offset().top;

var c=Math.sqrt(a*a+b*b);

var iSX=$(nowLi).data('speed') *a/c;

var iSY=$(nowLi).data('speed') *b/c;

//console.log(gk.eMap[rand].speed);

$(nowLi).css({

'left':$(nowLi).offset().left+iSX+'px',

'top':$(nowLi).offset().top+iSY+'px',

});

},30);

3、 碰撞检测:

子弹打小蜜蜂时主要是做碰撞检测,碰撞检测的思路是两个物体的前后左右都检测,比较L1,R1,T1,B1,L2,R2,T2,B2,

e0ec556a3d76

image.png

pz: function(obj1, obj2) { //碰撞检测

var L1 = obj1.offset().left;

var R1 = obj1.offset().left + obj1.width();

var T1 = obj1.offset().top;

var B1 = obj1.offset().top + obj1.height();

var L2 = obj2.offset().left;

var R2 = obj2.offset().left + obj2.width();

var T2 = obj2.offset().top;

var B2 = obj2.offset().top + obj2.height();

if (R1 < L2 || L1 > R2 || B1 < T2 || T1 > B2) { //未碰着

return false;

} else {

return true;

}

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值