Переключить регистр и неопределенное значение в JS - PullRequest
0 голосов
/ 08 января 2020


Я создаю небольшую игру на HTML / JS / CSS для упражнения, и я создал настольную игру из 100 клеток с <tr></tr и <td></td>.

* 1005. * На моей доске два игрока, и в каждом раунде я проверяю квадраты вокруг двух игроков, чтобы увидеть, есть ли на этом поле оружие или игрок.

Но чтобы проверить, есть ли игрок на квадрате, мне нужно проверить, существует ли квадрат первым. Вот почему я использую много операторов регистра переключателей:

switch (true) {
    case (squareAround != undefined): //I check if a square around is not undefined
       switch (true) { //if the square exists, let's check if there is a player on it
          case (playerOnIt === true):
             //start the fight if there is a player on it
       }
}

Это, конечно, упрощенная версия. Операторы break и default здесь отсутствуют. Проблема в том, что иногда квадрат "неопределен", и программа не go дальше, как я хочу. Но иногда квадрат определяется как «неопределенный», но программа все равно продолжается . Случай явно "ложный", но случай переключателя не работает.

Я использовал консоль, и этот пример , где она не работает: в двух первых случаях квадрат существует, а затем он показывает мне два элемента HTML.

Но в третьем случае это неверно, но случай переключателя работает в любом случае, идет дальше и дает мне элемент HTML ... который "не определен"!

Что может go не так?

Спасибо за помощь

Редактировать: вот какой-то оригинальный код, чтобы ответить на вопрос кого-то. Но я не знаю, может ли это помочь:

switch (true) {
    case ($('td')[numberCasePlayer + i + l] != undefined):
        switch (true) {
            case ($('td')[numberCasePlayer + i + l].getAttribute('playeronit') === playeronitCheck):
                fight()
                break
        }
        case ($('td')[numberCasePlayer + i + m] != undefined):
            switch (true) {
                case ($('td')[numberCasePlayer + i + m].getAttribute('playeronit') === playeronitCheck):
                    fight()
                    break
            }

            case ($('td')[numberCasePlayer + i + n] != undefined):
                switch (true) {
                    case ($('td')[numberCasePlayer + i + n].getAttribute('playeronit') === playeronitCheck):
                        fight()
                        break
                }
                case ($('td')[numberCasePlayer + i].getAttribute('weapon') === 'true'):
                    $('#' + $('td')[numberCasePlayer + i].getAttribute('weapontype')).css('display', 'none')
}
break

1 Ответ

0 голосов
/ 08 января 2020

Правильный формат для оператора switch имеет вид:

switch(someVariable) {
  case value1: doSomething; break;
  case value2: doSomething; break;
  case value3: doSomething; break;
  ...
  default: doSomething;
}

Это просто, если вы сделаете это только с помощью if операторов.

if(squareAround) {
  if(playerOnIt) {
    //start the fight if there is a player on it
  }
}
...