Смекни!
smekni.com

Программа Клон (стр. 3 из 3)

2.4 Сообщения программы.

В процессе работы программы возможна активизация окон-сообщений:

1. Данное диалоговое окно активизируется, когда синие фишки произвели «перекрашивание» всех красных фишек, все операции необходимые для этого описаны

2. Данное диалоговое окно активизируется, когда красные фишки произвели «перекрашивание» всех синих фишек, все операции необходимые для этого описаны

3. Данное диалоговое окно активизируется, когда все поле заполнено, и некуда ходить, то выводится счет красных и синих фишек

4. Окно активизируется при нажатии на кнопку [?] – о программе

3. Список использованной литературы.

1. Архангельский А. Я. Delphi 5: “Справочное пособие”;

2. Фаронов В. В. “Delphi 5: учебный курс” М: Издательство ”Нолидж”, 1999;

3. В.В. Фаронов «Delphi 6»;

4. Н. Культин «Программирование в Turbo Pascal 7.0 и Delphi »;

5. Н. Культин «Delphi. Программирование на Object Pascal» - издательство ”БВХ-Петербург”, 2001.

Заключение.

Во время создания игры “Клон” мы познали дополнительные возможности Delphi. Несмотря на наши сомнения, программа получилась оригинальной, с хорошим пользовательским интерфейсом. Конечно, она может дорабатываться и улучшаться. Эта игра в будущем может быть очень популярна. Мы подумываем над сетевыми возможностями этой игры, в которую смогут играть в обеденный перерыв бухгалтеры разных фирм.

Таким образом, программирование с использованием среды Delphi, позволило нам составить игру “Клон” довольно просто и быстро. Игра получилась достаточно компактной, не требовательная к ресурсам машины, очень проста в обращении и развивающая умственные способности человека.

Среда программирования Delphi – это сложный механизм, обеспечивающий высокоэффективную работу программиста.

Приложение.

4.1 Схема алгоритма.

4.2 Текст программы.

unit Unit1;

interface

uses

Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,

Grids, ExtCtrls, Buttons, Menus, StdCtrls;

type

TForm1 = class(TForm)

Image1: TImage;

image3: TImage;

Image2: TImage;

Button1: TButton;

Image4: TImage;

Image5: TImage;

Button2: TButton;

Button3: TButton;

procedure formmouseup(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

procedure Button1Click(Sender: TObject);

procedure FormCreate(Sender: TObject);

procedure Button2Click(Sender: TObject);

procedure Button3Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form1: TForm1;

a: array [0..9,0..9] of byte;

b: array [0..9,0..9] of trect;

vi,vj,v2i,v2j:byte;

red,blue:integer;

hod:boolean;

implementation

uses Unit2, Unit3, Unit4, Unit5;

{$R *.DFM}

procedure TForm1.formmouseup(Sender: TObject; Button: TMouseButton;

Shift: TShiftState; X, Y: Integer);

var

i,j:byte;

ai,aj,a2i,a2j:integer;

kol,m,n:integer;

begin

blue:=0;

red:=0;

kol:=0;

i:=x div (image1.height);

j:=y div (image1.height);

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

//При нажатии активная синяя фишка (левой клавишей)

if hod=true then

BEGIN

if (a[i,j]=1) then

begin

if button=mbLeft then

begin

image2.Canvas.StretchDraw(b[i,j],image4.picture.bitmap);

Vi:=i;

Vj:=j;

end

else

begin

image2.Canvas.StretchDraw(b[i,j],image1.picture.bitmap);

end;

end;

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

//Возвращение рисунка для синих фишек

if (a[i,j]=0) then

if button=mbLeft then

begin

if (abs(i-vi)<3) and (abs(j-vj)<3) then

begin

if (abs(i-vi)=2) or (abs(j-vj)=2) then

begin

a[vi,vj]:=0;

image2.Canvas.StretchDraw(b[vi,vj],image5.picture.bitmap);

image2.Canvas.StretchDraw(b[i,j],image1.picture.bitmap);

a[i,j]:=1; vi:=255;vj:=255;

end

else

begin

image2.Canvas.StretchDraw(b[i,j],image1.picture.bitmap);

if (vi<>255)and (vj<>255) then

begin

image2.Canvas.StretchDraw(b[vi,vj],image1.picture.bitmap);

vi:=255; vj:=255;

end;

a[i,j]:=1;

end;

for ai:=i-1 to i+1 do //проверка близлежащих фишек КРАСНЫХ

for aj:=j-1 to j+1 do

if (ai>=0) and (aj>=0)and (ai<=9) and(aj<=9) then

if a[ai,aj]=2 then

begin

a[ai,aj]:=1;

image2.Canvas.StretchDraw(b[ai,aj],image1.picture.bitmap);

beep;

for m:=i-9 to i+9 do //проверка всего поля

for n:=j-9 to j+9 do

if (m>=0)and(n>=0)and(m<=9)and(n<=9) then

begin

if (a[m,n]=1)or(a[m,n]=0)then

kol:=kol+1;

end;

if kol=100 then

form4.show;

m:=0;n:=0;kol:=0;

end;hod:=false;//теперь красные

end;

end;

END;

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

//При нажатии активна красная (правая клавиша)

if hod=false then

BEGIN

if a[i,j]=2 then

begin

if button=mbright then

begin

image2.Canvas.StretchDraw(b[i,j],image4.picture.bitmap);

V2i:=i;

v2j:=j;

end

else

begin

image2.Canvas.StretchDraw(b[v2i,v2j],image3.picture.bitmap);

end;

end;

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

//Возвращение рисунка для красных фишек

if (a[i,j]=0) then

if button=mbright then

begin

if (abs(i-v2i)<3) and (abs(j-v2j)<3) then

begin

if(abs(i-v2i)=2) or (abs(j-v2j)=2) then

begin

a[v2i,v2j]:=0;

image2.Canvas.StretchDraw(b[v2i,v2j],image5.picture.bitmap);

image2.Canvas.StretchDraw(b[i,j],image3.picture.bitmap);

a[i,j]:=2; v2i:=255; v2j:=255;

end

else

begin

image2.Canvas.StretchDraw(b[i,j],image3.picture.bitmap);

if (v2i<>255)and(v2j<>255) then

begin

image2.Canvas.StretchDraw(b[v2i,v2j],image3.picture.bitmap);

v2i:=255; v2j:=255;

end;

end;

a[i,j]:=2;

for a2i:=i-1 to i+1 do //проверка близлежащих фишек СИНИХ

for a2j:=j-1 to j+1 do

if (a2i>=0)and(a2j>=0)and(a2i<=9)and(a2j<=9) then

if a[a2i,a2j]=1 then

begin

a[a2i,a2j]:=2;

image2.Canvas.StretchDraw(b[a2i,a2j],image3.picture.bitmap);

beep;

end;

for m:=i-9 to i+9 do //проверка всего поля

for n:=j-9 to j+9 do

if (m>=0)and(n>=0)and(m<=9)and(n<=9) then

begin

if (a[m,n]=2)or(a[m,n]=0)then

kol:=kol+1;

end;

if kol=100 then

form3.show;

hod:=true;//теперь синие

end;

end;

END;

m:=0;n:=0;kol:=0;

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

//Прверка поля на наличие свободного места

for m:=i-9 to i+9 do //проверка всего поля

for n:=j-9 to j+9 do

if (m>=0)and(n>=0)and(m<=9)and(n<=9) then

begin

if (a[m,n]=1) then blue:=blue+1; //счет синих

if (a[m,n]=2) then red:=red+1; //счет красных

kol:=red+blue;

end;

if kol=100 then

form5.show;

m:=0;n:=0;kol:=0;

end;

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

procedure TForm1.Button1Click(Sender: TObject);

var i,j:byte;

begin

for i:=0 to 9 do

for j:=0 to 9 do

begin

image2.Canvas.StretchDraw(b[i,j],image5.picture.bitmap);

a[i,j]:=0;

end;

begin

image2.Canvas.StretchDraw(b[0,0],image1.picture.bitmap);

a[0,0]:=1;

image2.Canvas.StretchDraw(b[0,9],image3.picture.bitmap);

a[0,9]:=2;

image2.Canvas.StretchDraw(b[9,9],image1.picture.bitmap);

a[9,9]:=1;

image2.Canvas.StretchDraw(b[9,0],image3.picture.bitmap);

a[9,0]:=2;

end;

end;

procedure TForm1.FormCreate(Sender: TObject);

VAR I,J:BYTE;

begin

hod:=true;

for i:=0 to 9 do

for j:=0 to 9 do

begin

b[i,j].Left:=i*(image1.Width);

b[i,j].top:=j*(image1.Height);

b[i,j].Bottom:=b[i,j].Top+image1.Height;

b[i,j].Right:=b[i,j].Left+image1.Width

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

begin

form2.show;

end;

procedure TForm1.Button3Click(Sender: TObject);

begin

close;

end;

end.

unit Unit2;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, ComCtrls;

type

TForm2 = class(TForm)

Label1: TLabel;

Label2: TLabel;

Label3: TLabel;

Label4: TLabel;

Button1: TButton;

Label5: TLabel;

procedure Button1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form2: TForm2;

implementation

{$R *.dfm}

procedure TForm2.Button1Click(Sender: TObject);

begin

close;

end;

end.

unit Unit3;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons;

type

TForm3 = class(TForm)

Label1: TLabel;

BitBtn1: TBitBtn;

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form3: TForm3;

implementation

{$R *.dfm}

procedure TForm3.BitBtn1Click(Sender: TObject);

begin

close;

end;

end.

unit Unit4;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Buttons;

type

TForm4 = class(TForm)

BitBtn1: TBitBtn;

Label1: TLabel;

procedure BitBtn1Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form4: TForm4;

implementation

{$R *.dfm}

procedure TForm4.BitBtn1Click(Sender: TObject);

begin

close;

end;

end.

unit Unit5;

interface

uses

Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

Dialogs, StdCtrls, Grids;

type

TForm5 = class(TForm)

Label1: TLabel;

Button1: TButton;

Edit2: TEdit;

Label2: TLabel;

Label3: TLabel;

Edit1: TEdit;

Button2: TButton;

procedure Button1Click(Sender: TObject);

procedure Button2Click(Sender: TObject);

private

{ Private declarations }

public

{ Public declarations }

end;

var

Form5: TForm5;

implementation

uses unit1;

{$R *.dfm}

procedure TForm5.Button1Click(Sender: TObject);

begin

edit1.text:=inttostr(blue);

edit2.text:=inttostr(red);

end;

procedure TForm5.Button2Click(Sender: TObject);

begin

close;

end;

end.