Не могу сделать завершение игры у кроссвордов
|
|
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
|
|
| |