吃豆子游戏 - 让墙壁阻挡他的运动

时间:2015-12-06 14:15:04

标签: javascript jquery css arrays

我和Jquery做了一场pacman游戏。 Pacman的运动由箭头键指示,它触发一个setInterval(),使他反复移动他的宽度距离,给人一种他完全笔直移动的错觉。按下一个新键可以清除间隔,然后开始移动到其他地方。

function Player(){

  this.left = $('#pacMan').css('left');
/**/  
   this.top = $('#pacMan').css('top'); 
/**/  
  this.rightMove = function(){

if (){
  this.left = parseInt(this.left) + 20;  
 $('#pacMan').animate({'left': this.left}, 100);   
}


};

//包含移动方法的对象。空if语句是我稍后会遇到的问题。

var timer;
$('body').keydown(function () {
 var key = event.which;
  window.clearInterval(timer);
  timer = window.setInterval(function() {
    switch (key) {
    case 37:

      pacMan.leftMove();

      break;

// keydown函数。我知道,这种脱节都是如此。

所以上面的工作正常。我的问题是这样的:如果我换上墙会发生什么?我怎么能让他停下来?我可以用一个块来做,但不是很多。让我解释一下。

所以我把整个东西放在一个格子上,这个格子是pacman的宽度。我将div子项附加到其中一个网格中,选择它旁边的网格框并将其放入数组中。我最初的if声明是,如果Pacman的位置与相邻网格的位置共享,他的一个动作就被禁用了。所以如果他刚刚离开了那个区块,他就不能移动是的,给出了阻止他阻止他移动的错觉。 e.g

If(Pacman.position().left !== gridBox120.position.left(){
pacMan.moveRight()
}
else{
clearInterval()
}

//只要pacman不在街区附近,他就可以向右移动。

这很有效。但如果我想在舞台上有多个街区怎么办?我怎么能在if语句中获得所有这些东西块?或者这是最好的方式吗?

我的计划是将邻近的divs ID放在一个数组中,如果Pacman的位置分享阵列中任何ID项的位置,他就无法向右移动

我不知道该怎么做。某种迭代?或者阵列不是最好的想法吗?

如果没有正确解释,我会回复评论。

Image link. yellow is pacman. purple are the neighbor divs that are sent to arrays

1 个答案:

答案 0 :(得分:0)

我已经为砖破碎机做了类似的事情。 我已经测试了用于存储块的obj和数组。数组比obj快得多。 我的方法是:将所有网格存储在数组中 并在每次移动后验证左-1,左+ 1,上-1和上+ 1

ActionController