禁止一些div用类准确移动

时间:2018-01-26 23:41:07

标签: javascript jquery sprite

我创建了一个回合制的javascript游戏。为了移动玩家我使用jQuery。我在我的游戏板里面移动了一个精灵,它由100个方块组成,板子-0 ID到-99-board。我将我的精灵从id移动到id。一切都很完美,但我无法禁止某些身份证旅行。所有带有类" accessOn"的盒子。所有上课的人都很好#34; accesOff"不应该使用。我设法阻止向上运动,如果顶部位置为" accesOff"在比赛开始时上课。问题是,我的精灵永远不会再次上升。你可以帮我确保不要移动所有有" accesOff"类? 感谢

      /*********RECUP. ID POS. TOP before move******** */

     var nombreIdPos = maDivId.substr(6);
     var posActuelleNombreId = parseInt(nombreIdPos);
     var posDessusNombreId = posActuelleNombreId -= 10;
     var $posDessusId = 'board-' + posDessusNombreId;


                       //******** MOVE
   function main() {

var $nombreId = maDivId.substr(6);

var $posDiv1 = parseInt($nombreId);
var $currentPosId = maDivId; //TEST voir si besoin plus tard
var $largeur = ($('#contenu').width());
var $hauteur = ($('#contenu').height());

$(window).on('keydown', function (e) {
    var touche = e.which;

    switch (touche) {

        case 38: //TOP

            var $idDivDessus = $('#' + $posDessusId);
            if ($idDivDessus.hasClass('accesOn')) { // this if is not good
                $posX = '0%';
                $posY = '100%';
                var $newPosH = $posDiv1 -= 10;
                var $newPos = $("#board-" + $newPosH);
                $($newPos).css('background', $player1 + $posX + $posY);
                $('.joueur1').css('background', "").removeClass('joueur1');
                $($newPos).addClass('joueur1');



                } //****FIN IF 



            } //FIN if 1er

            break;



}); // FIN Event keydown

} //FIN main function
    $(document).ready(main);

1 个答案:

答案 0 :(得分:0)

您只关心要移动的图块,您不必检查您已经使用的图块的访问权限(假设您在到达当前图块之前已正确处理)。

添加对要移动到的图块的检查,如果它具有类accessOff,则只需避免移动,不需要其他操作。

示例检查//TOP

$posX = '0%';
$posY = '66%';
$newPos = $posDiv1 -= 10;
$newPos = $("#board-" + $newPos);
if(!$newPos.hasClass('accessOff')){                              //check here for accessOff
  $($newPos).css('background', $player1 + $posX + $posY);
  $('.joueur1').css('background', "").removeClass('joueur1');
  $($newPos).addClass('joueur1');
  console.log('Variable $newPosR = ' + $newPos);
} else {
  $posDiv1 -= change;
}

我建议创建一个移动播放器的功能,以摆脱一些代码重复。它将使您的生活更加轻松。

这样的事情:

function MovePlayer(x, y, change) {
  $newPos = $posDiv1 += change;
  $newPos = $("#board-" + $newPos);
  if(!$newPos.hasClass('accessOff')){   
    $($newPos).css('background', $player1 + x + y);
    $('.joueur1').css('background', "").removeClass('joueur1');
    $($newPos).addClass('joueur1');
    console.log('Variable $newPosR = ' + $newPos);
  } else {
    $posDiv1 -= change;
  }
}

您的//TOP将只是MovePlayer('0%', '66%', -10),您可以重复使用该功能来移动任何方向。