Программа Клон

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;

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


Страница: