|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Игра Гомоку на Си |
|
C/C++ - Игра Гомоку на Си
|
Новый участник Сообщения: 9 |
Доброго времени суток.
Программу написал, есть проверка кто победил при комбинации в 4 "шашки" подряд, работает вертикальная и горизонтальная проверки, но вот беда, все никак не додумаюсь как доделать диагональную. И так о самой игре, в игре 2 игрока по очереди ставят на игральный стол свои "шашки" задача построить цепочку из 4х шашек первым и не дать оппоненту это сделать. (Я сделал саму игру без АИ, то есть 2 игрока играют между собой) в общем игра похожа на крестики-нолики только на площади 10*10. Использую 4 функции void DeskOut(), Input(); int Turn(), Winner(); Turn - определяет кто по очереди должен делать ход Winner - определяет победителя, идет ту самую цепочку из шашек DeskOut - печатает на экран игральный стол Input - берет от пользователя координаты куда ставить шашку Мне необходимо построить алгоритм, который бы по диагонали проверял всю доску на наличие цепочки из 4х шашек одного цвета. Я использовал буквы B - Black W - White. Все голову ломаю, никак не лезет Вот и исходник: int Winner(){ int i = 0, j = 0, k = 0, counter = 0; char SearchChar; if(turn) SearchChar = 'B'; else SearchChar = 'W'; /*Check HORIZONTAL combination*/ for(i = 0; i < 10; i++){ for(j = 0; j < 10; j++){ if(desk[i][j] == SearchChar) counter++; else counter = 0; if(counter == 4){ printf("Player %c WINS!\n\a", SearchChar); return 1; } } } /*Check VERTICAL combination*/ for(i = 0; i < 10; i++){ for(j = 0; j < 10; j++){ if(desk[j][i] == SearchChar) counter++; else counter = 0; if(counter == 4){ printf("Player %c WINS!\n\a", SearchChar); return 1; } } } |
|
Отправлено: 03:04, 20-11-2011 |
Разный Сообщения: 1294
|
Профиль | Отправить PM | Цитировать |
Отправлено: 10:31, 20-11-2011 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Он проверяет только 1 диагональ, то есть 1*1 2*2 3*3 4*4 и тд... Этот вариант я попробовал с самого начала, однако мне необходимо чтобы проверялась вся площадь доски, не с начала координат, а к примеру с 4*8 5*9 6*10 и тд в таком духе.
|
Отправлено: 13:59, 20-11-2011 | #3 |
Новый участник Сообщения: 9
|
Профиль | Отправить PM | Цитировать Ну в общем надо чтобы вся доска проверялась по диагонали, вот это я никак не додумаюсь как сделать, пробовал, но мусор выходит
|
Отправлено: 14:21, 20-11-2011 | #4 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Пойдет ли игра? | Radion | Игры | 21 | 27-10-2011 23:20 | |
C/C++ - Игра Ксоникс | Doom77 | Программирование и базы данных | 3 | 31-12-2008 12:03 | |
Не работает игра. | Dosmod | Microsoft Windows Vista | 4 | 05-05-2007 13:53 | |
незапускается игра | pirat0 | Microsoft Windows Vista | 2 | 26-02-2007 11:42 | |
игра по сети | idon | Сетевые технологии | 1 | 04-01-2006 17:42 |
|