Показать сообщение отдельно
  #1 (permalink)  
Старый 18.11.2024, 17:07
Новичок на форуме
Отправить личное сообщение для ePaul69 Посмотреть профиль Найти все сообщения от ePaul69
 
Регистрация: 12.11.2024
Сообщений: 6

Window.local storage
Добрый день уважаемые гуру.
Помогите пожалуйста разобраться.
Пытаюсь сделать игру камень ножницы бумага:

HTML:

<body>
  <div>
    <p>Камень ножницы бумага</p>
    <button onclick="
        resultsTableEntry(rockCode)
        console.log(score);        
      " class="rock-btn">
      Камень
    </button>
    <button onclick="
        resultsTableEntry(scissorCode)
        console.log(score);
      " class="scissor-btn">
      Ножницы
    </button>
    <button onclick="
          resultsTableEntry(paperCode)
          console.log(score)
      " class="paper-btn">
      Бумага
    </button>
    <button onclick="resetScore()">Сбросить счет!</button>
    <p class="score-output"></p>
  </div>
  <script src="source/javascript/r_s_p.mjs"></script>
</body>


JS:
Простите за кучу if else, позже обязательно попробую это все улучшить

//Переменные выбора пользователя, передаваемые в функцию
//для сравнения с выбором компьютера
const rockCode = 'Камень';
const scissorCode = 'Ножницы';
const paperCode= 'Бумага';

// Объект для хранения результатов игры
const resultsTable = {
  ties: 0,
  wins: 0,
  losses: 0
};

// Пытаюсь записать результат в памяти компьютера, чтоб при
//обновлении страници не обнулялся resultTable
const score = JSON.parse(localStorage.getItem('resultsTable'));

// Рандомный выбор для компьютера 
const randomNumb = () => {
    let randomNumb = Math.random();
    if (randomNumb.toFixed(3) <= 1 / 3) {
        randomNumb = rockCode;
    } else if (randomNumb.toFixed(3) > 1 / 3 && randomNumb.toFixed(3) < 2 / 3) {
        randomNumb = scissorCode;    
    } else if (randomNumb.toFixed(3) > 2 / 3 && randomNumb.toFixed(3) < 1) {
        randomNumb = paperCode;    
    }
    return randomNumb;
};

//Сравнение выбора машины и выбора пользователя
const res = (userChoice) => { 
  const computerChoice = randomNumb();
    let message;
    if (userChoice === rockCode && computerChoice === rockCode){ 
        message = 'Ничья не взяла';      
    }else if(userChoice === rockCode && computerChoice === scissorCode){      
        message = 'Usver WIN';
    }else if(userChoice === rockCode && computerChoice === paperCode){ 
        message = 'MACHINE WIN';
  ;
    }else if(userChoice === scissorCode && computerChoice === rockCode){
        message = 'MACHINE WIN';

    }else if(userChoice === scissorCode && computerChoice === scissorCode){
        message = 'Ничья не взяла';

    }else if(userChoice === scissorCode && computerChoice === paperCode){
        message = 'Usver WIN';

    }else if(userChoice === paperCode && computerChoice === rockCode){
        message = 'Usver WIN';

    }else if(userChoice === paperCode && computerChoice === scissorCode){
        message = 'MACHINE WIN';

    }else if(userChoice === paperCode && computerChoice === paperCode){
        message = 'Ничья не взяла';

    }
    return message;
};

// Сброс очков
const resetScore = () => {
  resultsTable.wins = 0;
  resultsTable.ties = 0;
  resultsTable.losses = 0;
  alert(`
Победы: ${resultsTable.wins}
Ничьи: ${resultsTable.ties} 
Поражения: ${resultsTable.losses}`);
};

//Итоговая функция для сохранения очков в обьект resultsTable
const resultsTableEntry = (userChoice) => {
  const duelResult = res(userChoice);
  if (duelResult === 'Ничья не взяла') {
    return resultsTable.ties += 1;
  }
  if (duelResult === 'Usver WIN') {
    return resultsTable.wins += 1;
  }
  if(duelResult === 'MACHINE WIN') {
    return resultsTable.losses += 1;
  }
};

// Пытаюсь записать результат в памяти компьютера, чтоб при
//обновлении страници не обнулялся resultTable
localStorage.setItem('resultsTable', JSON.stringify(resultsTable));


В браузере все работает(кроме localStorage), но если пытаюсь скомпилировать это в vsCode выдает ошибку:

ReferenceError: localStorage is not defined



Грешу на то что код находится в подключаемом файле, и просто не видит объект Window.(но могу серьезно ошибаться)

Пытался вбить в отдельный скрипт в HTML файле local.Storage тоже ничего не вышло.

Подскажите куда копать.

Последний раз редактировалось ePaul69, 18.11.2024 в 17:15.
Ответить с цитированием