Class TDoska:publicTCells




{

private:

TDoska();

voiddraw();

};

//---------------------------------------------------------------------------

 

Также мне нужно создать объекты, которыми я буду ходить. Их я создаю в базовом классе “TFishka”. Полями этого класса являются: массив размером 12:12 для хранения положений фишек, массив размером 12:12 для хранения цветов фишек на доске, целые параметры: x, y, size, count_1, count_2 – координаты фишки, размер, счет первого и второго игрока соответственно.

Методы класса: конструктор для создания поля зеленого цвета с неустановленными фишками; функция voiddraw для рисования одной фишки с установленными координатами; функция init, в которую передаются координаты фишки походившего игрока, ее цвет и номер игрока. Эта функция закрашивает соседние фишки, если они еще не установлены. Функция Game_over, для проверки на окончание игры. Игра оканчивается, когда все фишки установлены. Потом сравнивается счет игроков и выводится сообщение о победителе.Voiddrawgreed-метод рисует доску с фишками.

Class TFishka

{

private:

intmas[12][12];

TColorcolor[12][12];

intx,y,size;

int count_1,count_2;

TFishka();

void draw_greed();

void draw();

void init(int _x, int _y, TColor _c, int __gamer);

void Game_over();

 

};

//---------------------------------------------------------------------------

Unit1.cpp

Вunit1.cppописываемсамиметоды. Когдав unit1.h-прототипы.

 

Событие FormPaint –обработчик прорисовки формы.

void __fastcall TForm1::FormPaint(TObject *Sender)

{

doska.draw();

}

Обрабатываем кнопку Перейти первого игрока

 

Ход первого игрока. Здесь происходит запись ходов, координаты куда сходил первый игрок, выводитcя вlabel9; прорисовываем фишку f.draw(); выводим очки в edit5 первого игрока; включаем интерфейс первого игрока(кнопка и два edit куда вводим координаты), выключаем интерфейс второго игрока(кнопка и два edit куда вводим координаты), чтоб не было ошибок в работе игры. Проверяемусловиеконцаигрыf.Game_over();

 

void __fastcall TForm1::Button1Click(TObject *Sender)

{

Label9->Caption=Label9->Caption+"Игрок1: X="+Edit1->Text+ "Y="+Edit2->Text+"\t";

 

f.init(StrToInt(Edit1->Text),StrToInt(Edit2->Text),clBlue,1);

f.draw();

//f.count_1++;

Edit5->Text=IntToStr(f.count_1);

Button1->Enabled=false;

Edit1->Enabled=false;Edit1->Text="";

Edit2->Enabled=false;Edit2->Text="";

 

if (Button2->Enabled==false)

{ Button2->Enabled=true;

Edit3->Enabled=true;

Edit4->Enabled=true;

}

else

{

Button2->Enabled=false;

}

f.Game_over();

}

//----------------------------------------------------------------------------------

Ход второго игрока. Здесь происходит запись ходов, координаты куда сходил второй игрок, выводитcя вlabel9; прорисовываем фишку f.draw(); выводим очки в edit6 первого игрока; включаем интерфейс второго игрока(кнопка и два edit куда вводим координаты), выключаем интерфейс первого игрока(кнопка и два edit куда вводим координаты), чтоб не было ошибок в работе игры. Проверяемусловиеконцаигрыf.Game_over();

 

void __fastcall TForm1::Button2Click(TObject *Sender)

{

Label9->Caption=Label9->Caption+"Ирок2: X="+Edit3->Text+" Y="+Edit4->Text+"\n";

f.init(StrToInt(Edit3->Text),StrToInt(Edit4->Text),clRed,2);

f.draw();

//f.count_2++;

Edit6->Text=IntToStr(f.count_2);

Button2->Enabled=false;

Edit3->Enabled=false;Edit3->Text="";

Edit4->Enabled=false;Edit4->Text="";

 

if (Button1->Enabled==false)

{

Button1->Enabled=true;

Edit1->Enabled=true;

Edit2->Enabled=true;

 

}else{Button1->Enabled=false;} f.Game_over();

}

 

//---------------------------------------------------------------------------

Компонент Timer, позволяет вводить необходимые задержки между выполнением тех или иных действий, Формирует в приложении повторяющиеся события.

В нашем случае Timer1Timer обработчик для прорисовки доски.

f.draw_greed()-прорисовываем поле.

Рис. 3 СкриншоткомпонентаTimer

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

f.draw_greed();

}

//---------------------------------------------------------------------------

FormCreate-обработчиксозданияформы. Здесь выводим счет игроков и выключаем интерфейс второго игрока, чтоб смог ходить первый.

 

void __fastcall TForm1::FormCreate(TObject *Sender)

{

Edit5->Text=IntToStr(f.count_1);

Edit6->Text=IntToStr(f.count_2);

Edit3->Enabled=false;

Edit4->Enabled=false;

}

//---------------------------------------------------------------------------

TDoska()-конструктор-устанавливает значение размера клетки. Init(30) размер клетки будет 30.

TDoska::TDoska()

{

init(30);

};

//---------------------------------------------------------------------------

draw()-рисует доску белого цвета. Задаем цикл в цикле, рисуем квадрат и задаем ему цвет.

Void TDoska::draw()

{

 

for (inti=0;i<12;i++)

for (int j=0;j<12;j++)

{

Form1->Canvas->Brush->Color=clLime;

Form1->Canvas->Rectangle(i*size,j*size,(i+1)*size,(j+1)*size);

}

};

//---------------------------------------------------------------------------

draw_greed()-рисует доску с фишками.



Поделиться:




Поиск по сайту

©2015-2024 poisk-ru.ru
Все права принадлежать их авторам. Данный сайт не претендует на авторства, а предоставляет бесплатное использование.
Дата создания страницы: 2018-03-19 Нарушение авторских прав и Нарушение персональных данных


Поиск по сайту: