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

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

20.05.2018, 11:37. Показов 2074. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Программный контроль заполнения реквизита табличной части документа
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: реализовать контроль заполнения реквизита "ПричинаСписания". . .
wmic не является внутренней или внешней командой
Maks 02.04.2026
Решение: DISM / Online / Add-Capability / CapabilityName:WMIC~~~~ Отсюда: https:/ / winitpro. ru/ index. php/ 2025/ 02/ 14/ komanda-wmic-ne-naydena/
Программная установка даты и запрет ее изменения
Maks 02.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: при создании документов установить период списания автоматически. . .
Вывод данных в справочнике через динамический список
Maks 01.04.2026
Реализация из решения ниже выполнена на примере нетипового справочника "Спецтехника" разработанного в конфигурации КА2. Задача: вывести данные из ТЧ нетипового документа. . .
Программное заполнения текстового поля в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru