Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Kursach_011.docx
Скачиваний:
1
Добавлен:
18.09.2019
Размер:
427.03 Кб
Скачать

3.Програмна частина

3.1 Розробка інтерфейсу

Інтерфейс користувача промальовується слідуючим чином: спочатку в вікні програми з’являється кнопка «Розпочати». По команді початку динамічно розміщуються об’єкти. Для розрахунку положення об’єктів використовувались наступні формули:

- по вертикалі:y=i*Height

- по горизонталі, якщо і<5то х=0, інакше х=200.

Де Height – висота одного об’єкту.

Потім динамічно промальовується об’єкт їжа. По закінченню їжі програма завершує свою роботу.

Рисунок 3.1 - Інтерфейс працюючої програми

3.2 Лістинг коду:

*.h

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

#ifndef Unit1H

#define Unit1H

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

#include <Classes.hpp>

#include <Controls.hpp>

#include <StdCtrls.hpp>

#include <Forms.hpp>

#include <ComCtrls.hpp>

#include <ExtCtrls.hpp>

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

class TForm1 : public TForm

{

__published: // IDE-managed Components

TButton *Button1;

TTimer *Timer1;

TLabel *Label1;

TLabel *Label2;

TLabel *Label3;

TLabel *Label4;

void __fastcall Button1Click(TObject *Sender);

void __fastcall Timer1Timer(TObject *Sender);

private: // User declarations

public: // User declarations

__fastcall TForm1(TComponent* Owner);

};

class Donkey //клас опису осла

{TPoint cp; //змінна координат

int eattacts; //змінна тактів їжі

public:

void eat();//функція поїдання

int check(){return eattacts;} //функція перевірки голоду

void set_cp(int a,int b){cp=Point(a,b);} //встановлення координат

TPoint ret_cp(){return cp;} //повернення координат

Graphics::TBitmap *dnky; //одне з зображень

Graphics::TBitmap *dnky2; //інше зображення

};

class Hey//клас опису сіна

{TPoint cp; //координати

public:

void draw();//функція промальовки

void set_cp(int a,int b){cp=Point(a,b);} //встановлення координат

TPoint ret_cp(){return cp;} //повернення координат

Graphics::TBitmap *hey; //зображення сіна

};

class field//клас опису поля

{Donkey D[10] ; //змінна об’єктів-ослів

Hey H[5]; //сіно

public:

void init();//функція ініціалізації

void tact();//функція одного такту

};

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

extern PACKAGE TForm1 *Form1;

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

#endif

*.cpp

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

#include <vcl.h>

#pragma hdrstop

#include "Unit1.h"

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int k=0;

int c=100;

field *F;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{F=new field;

}

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

void Donkey::eat()

{ eattacts=4;}

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

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

void Hey::draw()

{Form1->Canvas->Draw(cp.x,cp.y,hey);

}

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

void field::init()

{for(int i=0;i<10;++i)

{ D[i].dnky=new Graphics::TBitmap();

D[i].dnky2=new Graphics::TBitmap();

D[i].dnky2->LoadFromFile("4.bmp");

int a,b;

if(i<5)

{a=0;

b=100*i;

D[i].dnky->LoadFromFile("1.bmp");}

else

{a=246;

b=(i-5)*100;

D[i].dnky->LoadFromFile("3.bmp");}

D[i].set_cp(a,b);

Form1->Canvas->Draw(D[i].ret_cp().x,D[i].ret_cp().y,F->D[i].dnky);

D[i].eat();

}

for(int i=0;i<5;++i)

{ H[i].hey=new Graphics::TBitmap();

H[i].hey->LoadFromFile("2.bmp");

}

}

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

void field::tact()

{Form1->Canvas->Pen->Color=clWhite;

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

Form1->Canvas->Brush->Style=bsSolid;

Form1->Canvas->Rectangle(115,0,245,500);

switch(k)

{case 1:{H[0].set_cp(115,50);H[0].draw();

H[1].set_cp(115,150);H[1].draw();

H[2].set_cp(115,250);H[2].draw();c-=3;} break;

case 3:{H[0].set_cp(115,350);H[0].draw();

H[1].set_cp(115,450);H[1].draw(); Form1->Label2->Caption="2.5";c-=2;} break;

case 2: {H[0].set_cp(195,50);H[0].draw();

H[1].set_cp(195,150);H[1].draw();

H[2].set_cp(195,250);H[2].draw();c-=3;} break;

case 0: {H[0].set_cp(195,350);H[0].draw();

H[1].set_cp(195,450);H[1].draw();Form1->Label2->Caption="3";c-=2;}break;

}

Form1->Label4->Caption=IntToStr(c);

if(!c)

{Form1->Timer1->Enabled=false;

ShowMessage("Еда закончилась!");

}

k++;

if(k==4)

k=0;

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)

{ Button1->Visible=false;

Timer1->Enabled=true;

Label2->Visible=true;

Label4->Visible=true;

F->init();

}

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

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

F->tact();

}

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

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

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

#pragma package(smart_init)

#pragma resource "*.dfm"

TForm1 *Form1;

int k=0;

int c=100;

field *F;

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

__fastcall TForm1::TForm1(TComponent* Owner)

: TForm(Owner)

{F=new field; //створення нового екземпляру поля

}

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

void Donkey::eat()//кормління осла

{ eattacts=4;}

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

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

void Hey::draw()//промальовка сіна

{Form1->Canvas->Draw(cp.x,cp.y,hey);

}

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

void field::init()//ініціалізація

{for(int i=0;i<10;++i)

{ D[i].dnky=new Graphics::TBitmap();

D[i].dnky2=new Graphics::TBitmap();

D[i].dnky2->LoadFromFile("4.bmp");

int a,b;

if(i<5)

{a=0;

b=100*i;

D[i].dnky->LoadFromFile("1.bmp");}

else

{a=246;

b=(i-5)*100;

D[i].dnky->LoadFromFile("3.bmp");}

D[i].set_cp(a,b);

Form1->Canvas->Draw(D[i].ret_cp().x,D[i].ret_cp().y,F->D[i].dnky);

D[i].eat();

}

for(int i=0;i<5;++i)

{ H[i].hey=new Graphics::TBitmap();

H[i].hey->LoadFromFile("2.bmp");

}

}

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

void field::tact()// дії за один такт

{Form1->Canvas->Pen->Color=clWhite;

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

Form1->Canvas->Brush->Style=bsSolid;

Form1->Canvas->Rectangle(115,0,245,500);

switch(k)

{case 1:{H[0].set_cp(115,50);H[0].draw();

H[1].set_cp(115,150);H[1].draw();

H[2].set_cp(115,250);H[2].draw();c-=3;} break;

case 3:{H[0].set_cp(115,350);H[0].draw();

H[1].set_cp(115,450);H[1].draw(); Form1->Label2->Caption="2.5";c-=2;} break;

case 2: {H[0].set_cp(195,50);H[0].draw();

H[1].set_cp(195,150);H[1].draw();

H[2].set_cp(195,250);H[2].draw();c-=3;} break;

case 0: {H[0].set_cp(195,350);H[0].draw();

H[1].set_cp(195,450);H[1].draw();Form1->Label2->Caption="3";c-=2;}break;

}

Form1->Label4->Caption=IntToStr(c);

if(!c)

{Form1->Timer1->Enabled=false;

ShowMessage("Еда закончилась!");

}

k++;

if(k==4)

k=0;

}

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

void __fastcall TForm1::Button1Click(TObject *Sender)

// функція при натиснені на кнопку

{ Button1->Visible=false;

Timer1->Enabled=true;

Label2->Visible=true;

Label4->Visible=true;

F->init();

}

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

void __fastcall TForm1::Timer1Timer(TObject *Sender)

{

F->tact();// таут по таймеру

}

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

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]