首页 > 解决方案 > 检查类名是否等于某个名称的 if 语句

问题描述

所以我正在用 js 和 jquery 制作游戏,我有 2 个玩家需要随机生成。游戏地图由瓷砖组成,一些瓷砖被阻止(玩家无法点击它们),它们有一个“不可用”类,我需要让它在玩家生成时不会生成在那些被阻挡的瓷砖上。问题是,你能不能做一个 if 语句来检查瓦片是否有某个类,如果有,那么不要在那里生成玩家。我现在拥有的是:

// This asigns 2 random tiles for player one and player two
let randomSpawn = tiles[Math.floor(Math.random() * tiles.length)];
let randomSpawnTwo = tiles[Math.floor(Math.random() * tiles.length)];
/* This is an if statement that chekcs if the class name coresponds to unavaliable*/

function checkIfempty(){

    if(randomSpawn.className === "unavaliable"){
        randomSpawn = tiles[Math.floor(Math.random() * tiles.length)]
        console.log('heyo it does')
    }else if(randomSpawn.classname !== "unavaliable"){
        randomSpawn.appendChild(playerOne);
    }

    if(randomSpawnTwo.className === "unavaliable"){
        randomSpawnTwo = tiles[Math.floor(Math.random() * tiles.length)];
    }else if(randomSpawnTwo.className !== "unavaliable"){
        randomSpawnTwo.appendChild(playerTwo);
    }
}

所以我基本上想要的是,如果已经分配的随机图块具有“不可用”类,则选择另一个随机字段,并将玩家放置在那里。由于某种我不知道的原因,这当然不起作用。并且该功能设置为在负载时运行。

标签: javascriptjquery

解决方案


您应该使用循环来继续检查选定的图块是否可用。但是,当大多数图块不可用时,这将变得很慢,因为它必须重复很多次。

您可以简单地使用只返回可用图块的选择器,而不是从数组中选择一个随机图块并检查它是否可用。

给你所有的瓷砖一个类tile,然后使用:

var availableTiles = $(".tile:not(.unavailable)");
var randomSpawn = availableTiles.eq(Math.floor(Math.random() * availableTiles.length));
availableTiles = availableTiles.not(randomSpawn); // remove the one we just selected
randomSpawn2 = availableTiles.eq(Math.floor(Math.random() * availableTiles.length));

推荐阅读