1. JavaScript / Говнокод #27666

    0

    1. 01
    2. 02
    3. 03
    4. 04
    5. 05
    6. 06
    7. 07
    8. 08
    9. 09
    10. 10
    11. 11
    12. 12
    13. 13
    14. 14
    15. 15
    16. 16
    17. 17
    let randomNum = Math.floor(Math.random() * 10) + 1;
    let inputNum
    
    do {
      inputNum = prompt('Угадай циферку!')
      if (inputNum < randomNum) {
        alert('Недобор');
      } else if (inputNum > randomNum) {
        alert('Перебор');
      } else if (typeof inputNum === "string") {
        alert('ну не, циферку же!');
      } else if (inputNum == null || inputNum == '') {
        alert('Покасики!');
      } else if (inputNum === randomNum) { 
        alert('Угадал!!!'); break;
        }
    } while (inputNum != randomNum);

    Оно сначала совсем не работало. Потом вдруг заработало. Потом я ему дал полежать, настояться, и оно работать перестало опять О_о моя нипанимать

    Запостил: shuric, 14 Сентября 2021

    Комментарии (8) RSS

    • А как не работало? Выводило неожиданный результат или завершалось досрочно?

      К слову, в 17-й строке у нас «слабое» сравнение (!=), а в 14-й — строгое (===). Это может быть источником досрочного завершения.
      Ответить
    • > alert

      Имхо, надо было в основной prompt эти сообщения сувать. Удобнее будет.
      Ответить
      • Ага, лишний клик не надо будет делать. При вводе новой догадки сразу будет видно, в чём ошибся в прошлый раз.
        Ответить
    • >Недобор
      Умца-умца

      >Перебор
      Педобир

      >Покасики
      Покакусики

      >Угадал
      g: "изба гадальня анекдот"
      Ответить
    • чувак, у меня дурные вести для тебя

      ``prompt`` всегда возвращает string. Его нужно ``parseInt``ить.
      Ответить
      • Значит, знаки «меньше» и «больше» кастуют в число, поэтому первые две ветви работают правильно. А на третьей ветке облом, потому что inputNum всегда строка. Т. е. когда игрок угадал-таки число, ему об этом не сообщат.
        Ответить
    • Кароч! Вы все классные, то ли во всём, то ли практически во всём - правы))) Я сегодня на работе таки отрефакторил это и починил (частично сам, частично помогли). Пощу результат дабы подтвердить ваши слова. Не очень понял про Alert, но обдумаю и осознаю!

      let randomNum = Math.floor(Math.random() * 10) + 1;
      let inputNum

      do {
      inputNum = prompt('Угадай циферку!')
      if (inputNum == null || inputNum == '') {
      alert('Покасики!'); break;
      } else if (inputNum > randomNum) {
      alert('Перебор');
      } else if (!parseInt(inputNum)) {
      alert('ну не, циферку же!');
      } else if (inputNum < randomNum) {
      alert('Недобор');
      } else if (+inputNum === randomNum) {
      alert('Угадал!!!'); break;
      }
      } while (inputNum != randomNum);
      Ответить
      • > Не очень понял про Alert

        Как-то так:
        let nextMsg = "Угадай циферку!"
        
        do {
           inputNum = prompt(nextMsg)
           ...
           } else if (inputNum < randomNum) {
              nextMsg = "Недобор"
           }
           ...
        Ответить

    Добавить комментарий