我创建了一个回合制的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);
答案 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)
,您可以重复使用该功能来移动任何方向。