Четверг, 14 Ноября 2024, 10:51

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Не могу сделать завершение игры у кроссвордов
DeveloperGameДата: Воскресенье, 25 Марта 2018, 17:55 | Сообщение # 1
частый гость
Сейчас нет на сайте
Я написал бесплатную онлайн игру на html и javascript, там нужно разгадывать кроссворды. И теперь я не знаю как завершить игру так чтобы после отгадывание всех слов появлялась сообщение alert("Кроссворд разгадан!"). Ответы на вопросы находятся в массива cross1 и выглядит это вот так.
Код

cross1[lvl] = [["ответ1","false"],
                     ["ответ2","false"],
                     ["ответ3","false"],
                     ["ответ4","false"],
                     ["ответ5","false"],
                     ["ответ6","false"],
                     ["ответ7","false"]];

false - это что-то вроде флага, когда пользователь вводит слово и если оно правильно то false сменяется на true. Поэтому нужно чтобы в игре цикл проходился по всему массиву и если там все true то выводился бы alert("Кроссворд разгадан!"). Как это сделать?


Developer online game
DivESДата: Воскресенье, 25 Марта 2018, 18:20 | Сообщение # 2
заслуженный участник
Сейчас нет на сайте
Привет!
В тех языках, на которых ты пишешь, я не особо разбираюсь, но написал примерное решение на Python:
Код
lst = ["true", "true", "true"]
if "false" in lst:
    pass
else:
    print("Кроссворд разгадан!")

lst - упрощённый список на примере твоего массива, где "true" - отгаданное слово, "false" - не отгаданное.
Далее следует проверка, есть ли хотя бы одно не отгаданное слово в списке (в твоём случае в массиве), и если есть - пропускаем, то есть ничего не происходит. Иначе - выводим надпись с поздравлением :)
Не знаю, есть ли подобные конструкции в html и js, но, во всяком случае это рабочий алгоритм!


Сообщение отредактировал DivES - Воскресенье, 25 Марта 2018, 18:22
VostruginДата: Воскресенье, 25 Марта 2018, 18:32 | Сообщение # 3
постоянный участник
Сейчас нет на сайте
Код
var isAllTrue = true;
for(var i=0; i < cross1.length; i++) {
   var item = cross1[i];
   if(item.length > 1 && item[1] == "false") {
     isAllTrue = false;
   }
}

console.log("res", isAllTrue);




zmearДата: Воскресенье, 25 Марта 2018, 21:28 | Сообщение # 4
почетный гость
Сейчас нет на сайте
Если не сложно, то почему не сделать счетчик, который считает правильно разгаданные слова, а при его достижении равном количеству слов в кроссворде выводить сообщение о победе.
Проверять условие можно при каждом разгаданном слове.
Так можно и подсчет очков вести, если человек сдается на половине кроссворда, если ввести коэффиценты вроде длинны каждого слова или его сложности.



DeveloperGameДата: Среда, 28 Марта 2018, 13:28 | Сообщение # 5
частый гость
Сейчас нет на сайте
Пришлось все таки сделать, чтобы при правильном ответе прибавлялась единичка, а потом происходило сравнения с массивом примерно вот так:
Код

count == (cross1[lvl1].length-1)

Я посчитал, что этот вариант более правильный и вывод сообщения я сделал не через alert, а через тег:
Код

document.getElementById("TB").innerHTML="КРОССВОРД РАЗГАДАН!";


Developer online game
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг