Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 24.03.2012, 15:11   #1
lexflax
Пользователь
 
Регистрация: 12.04.2011
Сообщений: 74
Сообщение как написать цикл чтоб фиксировалась победа

Здраствуйте препод задал написать игру судоку(крестики нолики) поле 9 на 9 ячеек. Выйгрыш в том случае когда идет 5 подряд или крестиков или ноликов код описывает выйгрыш по вертикали по горизонталям и по двум основным диагоналям которые идут по адресам 0.0 1.1 2.2 итд и 0.8 1.8 2.7 итд
по второстепенным диагоналям не могу написать код чтоб победу фиксировал второстепенных всего получается 8 штук , начиная с адреса 1.0 и в низ до 4.0 -это 4 диагоняли, и 0.4 до 0.7 -еще 4 диагоняли, подскажите как по этим 8 диагоналям код описать
static int counterO,counterX;

Код:
void __fastcall TForm1::StringGrid1SelectCell(TObject *Sender, int ACol,
      int ARow, bool &CanSelect)
{
        if (StringGrid1->Cells[ACol][ARow]=="")
                if (RadioButton1->Checked)
                        StringGrid1->Cells[ACol][ARow]="  X ";
        if (StringGrid1->Cells[ACol][ARow]=="")
                if (RadioButton2->Checked)
                        StringGrid1->Cells[ACol][ARow]="  O ";
        counterO=0;counterX=0;
        for (int i = 0; i < StringGrid1->ColCount; i++)
        { //сканирование по столбцам
                for (int j=0; j < StringGrid1->RowCount; j++)
                {
                        if (StringGrid1->Cells[i][j]=="  X ") counterX++;
                        else counterX=0;
                        if (counterX==5) ShowMessage ("победа X");
                        if (StringGrid1->Cells[i][j]=="  O ") counterO++;
                        else counterO=0;
                        if (counterO==5) ShowMessage ("победа O") ;
                }
        }
        counterO=0;counterX=0;
        for (int j = 0; j < StringGrid1->ColCount; j++)
        { //сканирование по строкам
                for (int i=0; i < StringGrid1->RowCount; i++)
                {
                        if (StringGrid1->Cells[i][j]=="  X ") counterX++;
                        else counterX=0;
                        if (counterX==5) ShowMessage ("победа X") ;
                        if (StringGrid1->Cells[i][j]=="  O ") counterO++;
                        else counterO=0;
                        if (counterO==5) ShowMessage ("победа O") ;
                }
        }
        counterO=0;counterX=0;
        for (int i = 0; i < StringGrid1->ColCount; i++)//сканирование по диагонали 1.1 2.2 3.3 ...
        {
                if (StringGrid1->Cells[i][i]=="  X ") counterX++;
                else counterX=0;
                if (counterX==5) ShowMessage ("победа Х") ;
                if (StringGrid1->Cells[i][i]=="  O ") counterO++;
                else counterO=0;
                if (counterO==5) ShowMessage ("победа О") ;
        }
        counterO=0;counterX=0;
        for (int i = 0; i < StringGrid1->ColCount; i++)//сканирование по диагонали 1.1 2.2 3.3 ...
        {
                if (StringGrid1->Cells[i][8-i]=="  X ") counterX++;
                else counterX=0;
                if (counterX==5) ShowMessage ("победа Х") ;
                if (StringGrid1->Cells[i][8-i]=="  O ") counterO++;
                else counterO=0;
                if (counterO==5) ShowMessage ("победа О") ;
        }
}
Изображения
Тип файла: jpg фим.jpg (49.8 Кб, 109 просмотров)

Последний раз редактировалось ACE Valery; 24.03.2012 в 15:49.
lexflax вне форума Ответить с цитированием
Старый 25.03.2012, 13:15   #2
lexflax
Пользователь
 
Регистрация: 12.04.2011
Сообщений: 74
По умолчанию

нужна помощщщ
lexflax вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как написать цикл со счетчиком в Паскале? Женя1234 Помощь студентам 5 18.02.2012 07:31
Как написать цикл через while ruffer Помощь студентам 1 28.11.2011 19:51
Как можно написать сортирвку пузырька через один цикл? BandS Общие вопросы C/C++ 0 07.06.2009 20:09
Ура! Наконец-то победа России! фЁдОр Свободное общение 4 28.05.2008 18:59