Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Игра Гомоку на Си

Ответить
Настройки темы
C/C++ - Игра Гомоку на Си

Новый участник


Сообщения: 9
Благодарности: 1

Профиль | Отправить PM | Цитировать


Изменения
Автор: Drongo
Дата: 20-11-2011
Описание: Пожалуйста, используйте тег [code] - символ - # на панели инструментов
Доброго времени суток.
Программу написал, есть проверка кто победил при комбинации в 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

 

Аватара для ferget

Разный


Сообщения: 1294
Благодарности: 359

Профиль | Отправить PM | Цитировать


вроде так

Код: Выделить весь код
for(i = 0; i < 10; i++)
      {
            if(desk[i][i] == SearchChar)
                counter++;
            else counter = 0;

            if(counter == 4){
                printf("Player %c WINS!\n\a", SearchChar);
                return 1;
        }
Это сообщение посчитали полезным следующие участники:

Отправлено: 10:31, 20-11-2011 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Новый участник


Сообщения: 9
Благодарности: 1

Профиль | Отправить PM | Цитировать


Он проверяет только 1 диагональ, то есть 1*1 2*2 3*3 4*4 и тд... Этот вариант я попробовал с самого начала, однако мне необходимо чтобы проверялась вся площадь доски, не с начала координат, а к примеру с 4*8 5*9 6*10 и тд в таком духе.

Отправлено: 13:59, 20-11-2011 | #3


Новый участник


Сообщения: 9
Благодарности: 1

Профиль | Отправить PM | Цитировать


Ну в общем надо чтобы вся доска проверялась по диагонали, вот это я никак не додумаюсь как сделать, пробовал, но мусор выходит

Отправлено: 14:21, 20-11-2011 | #4



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » C/C++ - Игра Гомоку на Си

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Пойдет ли игра? 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




 
Переход