Форум программистов, компьютерный форум, киберфорум
JavaScript
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.64/11: Рейтинг темы: голосов - 11, средняя оценка - 4.64
11 / 11 / 8
Регистрация: 06.01.2018
Сообщений: 134

Ошибка в проверке окончания игры в крестики нолики

20.05.2018, 11:37. Показов 2032. Ответов 10

Студворк — интернет-сервис помощи студентам
Сап, форумчане.
Написал следующую проверку на окончание игры в крестики-нолики:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
function checkGameEnd(winner) { //проверяем, не закончена ли игра
    if ((window.cells[0] == true) && (window.cells[1] == true) && (window.cells[2] == true)) ||
       ((window.cells[0] == true) && (window.cells[3] == true) && (window.cells[6] == true)) ||
       ((window.cells[0] == true) && (window.cells[4] == true) && (window.cells[8] == true)) ||
       ((window.cells[1] == true) && (window.cells[4] == true) && (window.cells[7] == true)) ||
       ((window.cells[2] == true) && (window.cells[5] == true) && (window.cells[8] == true)) ||
       ((window.cells[2] == true) && (window.cells[4] == true) && (window.cells[6] == true)) ||
       ((window.cells[3] == true) && (window.cells[4] == true) && (window.cells[5] == true)) ||
       ((window.cells[6] == true) && (window.cells[7] == true) && (window.cells[8] == true)) {
            document.getElementById('result').innerHTML = winner;
            document.getElementById('result').appendChild(createTextNode(' won!'));
       }
}
Но оно почему-то не работает. Не могли бы подсказать, в чём ошибка?
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.05.2018, 11:37
Ответы с готовыми решениями:

Написание игры "Крестики-Нолики", где ошибка?
Всем привет. Занимаюсь по книге Эла Свейгарта "Учим Python", делая крутые игры." (Invent your own computer games with python). Добрался до...

Создание игры крестики-нолики
разаботка игры крестики нолики в с++

Игры на Delphi. Крестики-нолики.
Крестики-нолики... how to? Помогите пожалуйста с алгоритмом создания всем известной игры "крестики-нолики". Тема этой игры...

10
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
20.05.2018, 13:36
EvilDog17, а консоль что-нить говорит и почему все условия в скобках? Ещё, почему обращаетесь к window.cells[], элементы в глобальной области что-ли? И html неплохо бы глянуть
0
11 / 11 / 8
Регистрация: 06.01.2018
Сообщений: 134
20.05.2018, 13:44  [ТС]
atanov,
Цитата Сообщение от atanov Посмотреть сообщение
консоль что-нить говорит
Ага, только я не понимаю, что именно. Смотрите прикреплённую картинку.
Цитата Сообщение от atanov Посмотреть сообщение
Ещё, почему обращаетесь к window.cells[], элементы в глобальной области что-ли?
Да:
JavaScript
1
2
3
4
5
window.onload = function() {
    window.cells = new Array (false, false, false, false, false, false, false, false, false); //когда страница загружается, все поля пусты
    window.compNode = document.createTextNode("\u25CB"); //компьютер ходит ноликом
    window.playerNode = document.createTextNode("\u00D7"); //игрок ходит крестиком
}
Цитата Сообщение от atanov Посмотреть сообщение
И html неплохо бы глянуть
HTML5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
<!doctype html>
 
<html>
 
    <head>
    
        <meta charset='utf-8'>
        <link rel='stylesheet' type='text/css' href='style.css'>
        <script src='script.js'></script>
        <title>Tic-Tac-Toe</title>
    </head>
    
    <body>
    
        <h1>Tic-Tac-Toe</h1>
        <br>
        <table align='center'>
            
            <tr>
                <td><button onClick='play(0)'><div id='0'></div></button></td>
                <td><button onclick='play(1);'><div id='1'></div></button></td>
                <td><button onclick='play(2)'><div id='2'></div></button></td>
            </tr>
            <tr>
                <td><button onclick='play(3)'><div id='3'></div></button></td>
                <td><button onclick='play(4)'><div id='4'></div></button></td>
                <td><button onclick='play(5)'><div id='5'></div></button></td>
            </tr>
            <tr>
                <td><button onclick='play(6)'><div id='6'></div></button></td>
                <td><button onclick='play(7)'><div id='7'></div></button></td>
                <td><button onclick='play(8)'><div id='8'></div></button></td>
            </tr>
            
        </table>
        <br>
        <div id='result'></div>
    
    </body>
 
</html>
Миниатюры
Ошибка в проверке окончания игры в крестики нолики  
0
 Аватар для Freeze_Breeze
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
20.05.2018, 14:11
EvilDog17,
Свойство onClick у вас с большой буквы
JavaScript
1
<td><button onClick='play(0)'><div id='0'></div></button></td>
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
20.05.2018, 14:14
EvilDog17, у Вас нет функции play, указанной в обработчике и уберите скобки из if’о-в, только внешние нужны.
0
 Аватар для Freeze_Breeze
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
20.05.2018, 14:18
Вернее событие, а не свойство.
0
11 / 11 / 8
Регистрация: 06.01.2018
Сообщений: 134
20.05.2018, 14:55  [ТС]
atanov,
Цитата Сообщение от atanov Посмотреть сообщение
у Вас нет функции play, указанной в обработчике
Есть:
JavaScript
1
2
3
4
5
6
7
8
9
10
11
function play(cellNum) {
 
    //ход игрока
    if (window.cells[cellNum] == false) {
        document.getElementById(cellNum.toString()).appendChild(window.playerNode);
        window.cells[cellNum] = true; //поле зарезервировано до конца игры
    }
 
    //проверяем, не выиграл ли игрок
    checkGameEnd("Player");
}
0
 Аватар для atanov
640 / 481 / 172
Регистрация: 26.05.2016
Сообщений: 2,674
20.05.2018, 15:06
Лучший ответ Сообщение было отмечено EvilDog17 как решение

Решение

EvilDog17, вот так переделайте функцию:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
13
function checkGameEnd(winner) { //проверяем, не закончена ли игра
    if (window.cells[0] == true && window.cells[1] == true && window.cells[2] == true ||
       window.cells[0] == true && window.cells[3] == true && window.cells[6] == true ||
       window.cells[0] == true && window.cells[4] == true && window.cells[8] == true ||
       window.cells[1] == true && window.cells[4] == true && window.cells[7] == true ||
       window.cells[2] == true && window.cells[5] == true && window.cells[8] == true ||
       window.cells[2] == true && window.cells[4] == true && window.cells[6] == true ||
       window.cells[3] == true && window.cells[4] == true && window.cells[5] == true ||
       window.cells[6] == true && window.cells[7] == true && window.cells[8] == true) {
            document.getElementById('result').innerHTML = winner;
            document.getElementById('result').appendChild(createTextNode(' won!'));
       }
}
1
 Аватар для Freeze_Breeze
278 / 272 / 106
Регистрация: 12.01.2016
Сообщений: 1,666
20.05.2018, 15:11
EvilDog17, если можешь, то собери код до кучи и выложи в тему, а то он так разорван у тебя и не понятно что за чем идет, + у тебя много функций, а у каждой функции своя область видимости, проверил в себя в саблайме, то мне мешала эта строка window.onload = function() {} убери ее и не забудь убрать лишние скобки в условной инструкции if
1
11 / 11 / 8
Регистрация: 06.01.2018
Сообщений: 134
20.05.2018, 15:11  [ТС]
atanov, спасибо большое, работает. У меня из программирования на Паскале привычка везде скобки ставить
0
388 / 275 / 76
Регистрация: 19.09.2011
Сообщений: 828
22.05.2018, 18:25
5 && (1 && 9 || 2 && 8 || 3 && 7 || 4 && 6) || 1 && (2 && 3 || 4 && 7) || 9 && (8 && 7 || 6 && 3) это если пронумеровать ячейки с 1 по 9.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
22.05.2018, 18:25
Помогаю со студенческими работами здесь

Создание игры крестики нолики
Возникла проблема при создание игры крестики нолики. В форме имеется 9 Picturebox-ов(3на3) При нажатие на один из них левой кнопкой...

Разработка игры. Крестики нолики
Не понимаю в чем дело. Ругается на End if в проверке. А пока запускалась работала когда коректно а когда нет. HELP кто может. Но если...

Доработка игры крестики нолики
Здравствуйте. Имеется игра крестики-нолики на основе JS. Как можно реализовать следующее: В зависимости от того, кто победил поля...

Анализ игры крестики-нолики
Добрый день! Встретила несколько проблем, надеюсь на вашу подсказку.(проблема с условием победы и ничьи) Вводится строка и по строке...

Создание игры крестики нолики
Добрый вечер. Ребята кто может написать игру крестики нолики на Борланди С++


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru