|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
02.10.2013, 13:47 | #1 |
Регистрация: 10.05.2013
Сообщений: 5
|
Крестики и нолики
Эта задача скорее чисто образовательного характера, хотя я и пишу игру. Хотелось бы найти самый оптимальный и изящный алгоритм определения победителя, если победитель есть, и его местоположение. Тоесть верхний ряд по горизонтали, второй ряд по горизонтали итд.. Можно сделать это просто полным перебором, ведь у нас всего 8 выигрышных вариантов, так что перебрать не так уж и сложно:
Код:
|
02.10.2013, 14:20 | #2 |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Саша, перебором однозначно.
И победитель определяется и выигрышная линия находится. Просто задумайтесь, если (вдруг) в следующей вашей программе понадобится определить линию длиной более 3-х и на поле размером более, чем 3X3 (см. игру Gomoku, например Turbo-Gomoku), то что Вы будете делать?! Переборные алгоритмы хороши тем, что хорошо записываются в виде циклов и, следовательно, легко адаптируются под изменяющиеся условия. p.s. Конкретно для вашего случая вполне можно и 8 переменных задействовать и 8 выражений логических написать (по аналогии с тем, что Вы привели). Хотя я бы не рекомендовал этот способ, но, тем не менее, его вполне можно использовать на практике. Последний раз редактировалось Serge_Bliznykov; 02.10.2013 в 14:25. |
02.10.2013, 16:07 | #3 |
Высокая репутация
СуперМодератор
Регистрация: 27.07.2008
Сообщений: 15,648
|
Можно минимаксом, но я как-то делал крестики-нолики 3*3 простым алгоритмом, так очень простая беспроигрышная стратегия.
E-Mail: arigato.freelance@gmail.com
|
02.10.2013, 16:16 | #4 | |
Старожил
Регистрация: 09.01.2008
Сообщений: 26,229
|
Цитата:
|
|
02.10.2013, 16:42 | #5 |
Регистрация: 10.05.2013
Сообщений: 5
|
Правильно поняли.
Чтобы потом отобразить на игровом поле. Как обычно перечёркивают выигравший ряд. Теперь буду разбираться с минимаксом. Кажется, что это нечто слишком уж глобальное. Можете подсказать как это можно применить для крестиков и ноликов? Последний раз редактировалось Саша85; 02.10.2013 в 16:49. |
02.10.2013, 16:49 | #6 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
Неограниченные крести-нолики пять в ряд интереснее. Да и стратегию покруче нужно закладывать
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
02.10.2013, 17:06 | #7 |
Регистрация: 10.05.2013
Сообщений: 5
|
|
03.10.2013, 16:38 | #8 | |
Форумчанин
Регистрация: 09.07.2013
Сообщений: 249
|
Цитата:
одна функция с четырьмя режимами работы - по горизонтали, по вертикали и два - по диагонали. Победитель получится при двойном выходе за край таблицы(найдены оба конца линии образованной ноликами или крестиками и они упираются в край матрицы, а не лежат гдето по середине). Для реализации етого подкину кода magic_wand.h. К сожалению я его практически не комментировал, основное токашо описал. Код:
do not use your brain
|
|
03.10.2013, 19:12 | #9 |
Старожил
Регистрация: 21.03.2009
Сообщений: 2,193
|
Довольно банальный вариант:
Код:
Простые и красивые программы - коды программ + учебник C++
Создание игры - взгляд изнутри - сайт проекта Тема на форуме, посвященная ему же |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
крестики нолики | spydark91 | Общие вопросы Delphi | 2 | 08.07.2011 19:19 |
крестики нолики | neformalblack | Gamedev - cоздание игр: Unity, OpenGL, DirectX | 3 | 18.04.2010 19:04 |
Крестики-нолики | Linker88 | Фриланс | 10 | 20.05.2009 07:24 |
крестики-нолики | {PatRioT} | Паскаль, Turbo Pascal, PascalABC.NET | 4 | 14.05.2009 13:24 |
Крестики-нолики | mish@ | Общие вопросы Delphi | 6 | 07.05.2009 11:01 |