javascript - 检查类名是否等于某个名称的 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);
}
}
所以我基本上想要的是,如果已经分配的随机图块具有“不可用”类,则选择另一个随机字段,并将玩家放置在那里。由于某种我不知道的原因,这当然不起作用。并且该功能设置为在负载时运行。
解决方案
您应该使用循环来继续检查选定的图块是否可用。但是,当大多数图块不可用时,这将变得很慢,因为它必须重复很多次。
您可以简单地使用只返回可用图块的选择器,而不是从数组中选择一个随机图块并检查它是否可用。
给你所有的瓷砖一个类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));
推荐阅读
- swiftui - XCode 13 编译旧 SwiftUI 并出现 Command CompileSwiftSources 错误失败,退出代码为非零
- ethereum - 使用 ganache 开发的 Dapp 代码也可以在生产环境中使用
- r - 如果多列相同,则进行估算
- dynamic-programming - 爬楼梯问题你必须采取的最后一步怎么样
- ssl-certificate - 如何修复 NET::ERR_CERT_DATE_INVALID
- java - 春季启动实体
- ruby-on-rails - 使用 GKE Autopilot 无法让 Rails 应用程序在端点上可见
- android - 如何使用 gradle Kotlin DSL 在 Android 中的模块之间映射风格?
- python - 每天午夜 12 点轮换 python 日志?
- python - web_Scrapping 项目中的错误('NoneType' 对象没有属性'text')