домашняя библиотека
Поиск в библиотеке
Навигация по предметам
Последние добавленные новости
Реклама

Объектно-Ориентированное программированиеИгра Домино - курсовой проект по объектно-ориентированному программированию

if Netu then

begin

Draw_count_comp;

exit

end

else

begin

draw_on_table(computer.hand[D]);

Computer.MoveArr(d);

Draw_count_comp;

Draw_count_basar;

if Computer.CountD = 0 then

if MessageDlg('Компьютер выиграл. Хотите продолжить игру?',mtConfirmation,[mbYes, mbNo], 0) = mrYes then

begin

Inc(Schet.B);

tekuschaya := 1;

ontable_init(OnTable);

Basar_init(bazar);

Player.Init(Bazar);

Computer.init(Bazar);

draw_nachalo;

exit;

end

else

begin

End_game;

exit;

end;

end;

end

end

else

begin

if Bazar.CountDInHeap <> 0 then

begin

Player.TakeFromHeap(Bazar);

draw_igrok;

Draw_count_basar;

end;

end;

end;

procedure TDomino.Move_strelka_r;

begin

if Go_game then

begin

Strelka(tekuschaya, true);

if tekuschaya = Player.CountD then tekuschaya := 0 else tekuschaya := tekuschaya + 1;

strelka(tekuschaya, false);

end;

end;

procedure TDomino.Move_strelka_l;

begin

if Go_game then

begin

Strelka(Tekuschaya, true);

if Tekuschaya = 0 then Tekuschaya := Player.CountD else Tekuschaya := Tekuschaya - 1;

Strelka(Tekuschaya, false);

end;

end;

procedure TDomino.End_game;

begin

Go_game := false;

with Canvas do

begin

Brush.Color := clBlack;

FillRect(Rect(0,0,Self.Width,Self.Height));

Font.Color := clWhite;

Font.Height := 50;

font.Style := [fsBold,fsItalic];

TextOut(150,50,'Игра закончена.');

Font.Height := 30;

TextOut(10,200,'Для начала игры воспользуйтесь процедурой');

Font.Color := clYellow;

TextOut(220,250,'Begin_game');

font.color := clLime;

Font.Height := 5;

TextOut(15,380,'Made by EMZ Made by EMZ Made by EMZ Made by EMZ Made by EMZ Made by EMZ');

end;

end;

procedure TDomino.Draw_igrok;

var i: shortint;

begin

with Canvas do

begin

Brush.Color := clTeal;

FillRect(Rect(0,y-1,Self.Width,Self.Height));

for i := 0 to self.Player.CountD - 1 do

Self.Draw_Domino(X + i*(tolsh+dx),y,tolsh,Self.Player.hand[i+1].A,Self.Player.hand[i+1].B,false);

end;

end;

procedure TDomino.Draw_count_basar;

begin

with Canvas do

begin

Brush.Color := clgreen;

FillRect(Rect(0,250,50,300));

Brush.Color := clPurple;

FrameRect(Rect(0,250,50,300));

FrameRect(Rect(2,252,48,298));

Brush.Color := clgreen;

font.Height := 10;

Font.Color := clred;

font.Style := [fsBold];

TextOut(5,260,'БАЗАР');

if Self.Bazar.CountDInHeap >= 10 then

TextOut(15, 277,inttostr(Self.Bazar.CountDInHeap))

else

TextOut(20, 277,inttostr(Self.Bazar.CountDInHeap));

end;

end;

procedure TDomino.Strelka(i: byte; steret: boolean);{рисует - стирает стрелку над i-ой доминошкой}

begin

if steret then

with Canvas do

begin

brush.Color := clTeal;

if i <> 0 then

FillRect(rect(x + (i-1)*(tolsh+dx) + tolsh div 2 - 3, y - 10,

x + (i-1)*(tolsh+dx) + tolsh div 2 - 3 + 7, y - 1))

else

FillRect(rect(25 - 3, 247 - 8, 25 - 3 + 7, 248));

exit;

end;

with Canvas do

begin

brush.Color := clred;

pen.Color := clred;

if i <> 0 then

begin

MoveTo(x + (i-1)*(tolsh+dx) + tolsh div 2, y - 2);

LineTo(x + (i-1)*(tolsh+dx) + tolsh div 2 - 3, y - 10);

LineTo(x + (i-1)*(tolsh+dx) + tolsh div 2 - 3 + 6, y - 10);

LineTo(x + (i-1)*(tolsh+dx) + tolsh div 2, y - 2);

FloodFill(x + (i-1)*(tolsh+dx) + tolsh div 2, y - 4,clred,fsBorder);

end

else

begin

MoveTo(25, 247);

LineTo(25 - 3, 247 - 8);

LineTo(25 - 3 + 6, 247 - 8);

LineTo(25, 247);

FloodFill(25,245,clred,fsBorder);

end;

end;

end;

procedure TDomino.Draw_count_comp;

begin

with Canvas do

begin

brush.Color := clteal;

FillRect(rect(95,25,360,50));

Font.Color := clWhite;

font.Height := 10;

font.Style := [fsBold];

TextOut(100,30,'Количество доминошек у компьютера: ' + inttostr(Self.Computer.CountD));

end;

end;

procedure TDomino.Draw_schet;

begin

with Canvas do

begin

brush.Color := clteal;

FillRect(rect(500,0,600,70));

font.Height := 30;

Font.Color := clYellow;

font.Style := [fsBold];

TextOut(505,10,'СЧЁТ');

TextOut(515,40,inttostr(Schet.A)+' : '+inttostr(Schet.B));

end;

end;

procedure TDomino.Draw_nachalo;

begin

with Canvas do

begin

Brush.Color := clTeal;

FillRect(Rect(0,0,Self.Width,Self.Height));

end;

Draw_count_basar;

Draw_igrok;

Strelka(tekuschaya, false);

Draw_count_comp;

Draw_schet;

end;

procedure TDomino.Begin_game;

begin

Go_game := true;

Schet.A := 0;

Schet.B := 0;

Tekuschaya := 1;

ontable_init(OnTable);

Basar_init(Bazar);

Player.Init(Bazar);

Computer.Init(Bazar);

Draw_nachalo;

end;

procedure TDomino.Draw_Domino(XX, YY, tolshina, A, B: integer; horiz: Boolean);

begin

with Canvas do

begin

Brush.Color := clBlack;

if horiz then FillRect(rect(XX, YY, XX + tolshina * 2, YY + tolshina))

else FillRect(rect(XX, YY, XX + tolshina, YY + tolshina * 2));

Brush.Color := clLime;

if horiz then FrameRect(rect(XX, YY, XX + tolshina * 2, YY + tolshina))

else FrameRect(rect(XX, YY, XX + tolshina, YY + tolshina * 2));

Pen.Color := clWhite;

Pen.Style := psSolid;

Pen.Width := 1;

case A of

1: Ellipse(XX + tolshina div 2 - 1, YY + tolshina div 2 - 1,

XX + tolshina div 2 + 1, YY + tolshina div 2 + 1);

2:

begin

Ellipse(XX + tolshina div 4 - 1,YY + tolshina div 4 - 1,

XX + tolshina div 4 + 1,YY + tolshina div 4 + 1);

Ellipse(XX + (tolshina*3)div 4-1,YY + (tolshina*3)div 4-1,

XX + (tolshina*3)div 4+1,YY + (tolshina*3)div 4+1);

end;

3:

begin

Ellipse(XX + tolshina div 2 - 1, YY + tolshina div 2 - 1,

XX + tolshina div 2 + 1, YY + tolshina div 2 + 1);

Ellipse(XX + tolshina div 4 - 1,YY + tolshina div 4 - 1,

XX + tolshina div 4 + 1,YY + tolshina div 4 + 1);

Ellipse(XX + (tolshina*3)div 4-1,YY + (tolshina*3)div 4-1,

XX + (tolshina*3)div 4+1,YY + (tolshina*3)div 4+1);

end;

4:

begin

Ellipse(XX + tolshina div 4 - 1,YY + tolshina div 4 - 1,

XX + tolshina div 4 + 1,YY + tolshina div 4 + 1);

Ellipse(XX + (tolshina*3)div 4-1,YY + (tolshina*3)div 4-1,

XX + (tolshina*3)div 4+1,YY + (tolshina*3)div 4+1);

Ellipse(XX + (tolshina*3)div 4-1,YY + tolshina div 4 - 1,

XX + (tolshina*3)div 4+1,YY + tolshina div 4 + 1);

Ellipse(XX + tolshina div 4 - 1,YY + (tolshina*3)div 4-1,

XX + tolshina div 4 + 1,YY + (tolshina*3)div 4+1);

end;

5:

begin

Ellipse(XX + tolshina div 4 - 1,YY + tolshina div 4 - 1,

XX + tolshina div 4 + 1,YY + tolshina div 4 + 1);

Ellipse(XX + (tolshina*3)div 4-1,YY + (tolshina*3)div 4-1,

XX + (tolshina*3)div 4+1,YY + (tolshina*3)div 4+1);

Ellipse(XX + (tolshina*3)div 4-1,YY + tolshina div 4 - 1,

XX + (tolshina*3)div 4+1,YY + tolshina div 4 + 1);

Ellipse(XX + tolshina div 4 - 1,YY + (tolshina*3)div 4-1,

XX + tolshina div 4 + 1,YY + (tolshina*3)div 4+1);

Ellipse(XX + tolshina div 2 - 1, YY + tolshina div 2 - 1,

XX + tolshina div 2 + 1, YY + tolshina div 2 + 1);

end;

6:

begin

Ellipse(XX + tolshina div 4 - 1,YY + tolshina div 4 - 1,

XX + tolshina div 4 + 1,YY + tolshina div 4 + 1);

Ellipse(XX + (tolshina*3)div 4-1,YY + (tolshina*3)div 4-1,

XX + (tolshina*3)div 4+1,YY + (tolshina*3)div 4+1);

Ellipse(XX + (tolshina*3)div 4-1,YY + tolshina div 4 - 1,

XX + (tolshina*3)div 4+1,YY + tolshina div 4 + 1);

Ellipse(XX + tolshina div 4 - 1,YY + (tolshina*3)div 4-1,

XX + tolshina div 4 + 1,YY + (tolshina*3)div 4+1);

if horiz then

begin

Ellipse(XX + tolshina div 2 - 1,YY + tolshina div 4 - 1,

XX + tolshina div 2 + 1,YY + tolshina div 4 + 1);

Ellipse(XX + tolshina div 2 - 1,YY + (tolshina*3)div 4-1,

XX + tolshina div 2 + 1,YY + (tolshina*3)div 4+1);

end

else

begin

Ellipse(XX + tolshina div 4 - 1,YY + tolshina div 2 - 1,

XX + tolshina div 4 + 1,YY + tolshina div 2 + 1);

Ellipse(XX + (tolshina*3) div 4 - 1,YY + tolshina div 2-1,

XX + (tolshina*3) div 4 + 1,YY + tolshina div 2+1);

end;

end;

end;

Case B of

1: if horiz then

Ellipse(XX + (tolshina*3) div 2 - 1,YY + tolshina div 2 -1,

XX + (tolshina*3) div 2 + 1,YY + tolshina div 2 +1)

else

Ellipse(XX + tolshina div 2 - 1,YY + (tolshina*3) div 2 - 1,

XX + tolshina div 2 + 1,YY + (tolshina*3) div 2 + 1);

2: if horiz then

begin

Ellipse(XX + (tolshina*5) div 4 - 1,YY + tolshina div 4 -1,

XX + (tolshina*5) div 4 + 1,YY + tolshina div 4 +1);

Ellipse(XX + (tolshina*7) div 4 - 1,YY + (tolshina*3) div 4 -1,

XX + (tolshina*7) div 4 + 1,YY + (tolshina*3) div 4+1);

end

else

begin

Ellipse(XX + tolshina div 4 - 1,YY + (tolshina*5) div 4 -1,

XX + tolshina div 4 + 1,YY + (tolshina*5) div 4 + 1);

Ellipse(XX + (tolshina*3) div 4 - 1,YY + (tolshina*7) div 4 -1,

XX + (tolshina*3) div 4 + 1,YY + (tolshina*7) div 4+1);

end;

3: if horiz then

begin

Ellipse(XX + (tolshina*5) div 4 - 1,YY + tolshina div 4 -1,

XX + (tolshina*5) div 4 + 1,YY + tolshina div 4 +1);

Ellipse(XX + (tolshina*7) div 4 - 1,YY + (tolshina*3) div 4 -1,

XX + (tolshina*7) div 4 + 1,YY + (tolshina*3) div 4+1);

Ellipse(XX + (tolshina*3) div 2 - 1,YY + tolshina div 2 -1,

XX + (tolshina*3) div 2 + 1,YY + tolshina div 2 +1)

end

else

begin

Ellipse(XX + tolshina div 4 - 1,YY + (tolshina*5) div 4 -1,

XX + tolshina div 4 + 1,YY + (tolshina*5) div 4 + 1);

Ellipse(XX + (tolshina*3) div 4 - 1,YY + (tolshina*7) div 4 -1,

XX + (tolshina*3) div 4 + 1,YY + (tolshina*7) div 4+1);

Ellipse(XX + tolshina div 2 - 1,YY + (tolshina*3) div 2 - 1,

XX + tolshina div 2 + 1,YY + (tolshina*3) div 2 + 1);

end;

4: if horiz then

begin

Ellipse(XX + (tolshina*5) div 4 - 1,YY + tolshina div 4 -1,

XX + (tolshina*5) div 4 + 1,YY + tolshina div 4 +1);

Ellipse(XX + (tolshina*7) div 4 - 1,YY + (tolshina*3) div 4 -1,

XX + (tolshina*7) div 4 + 1,YY + (tolshina*3) div 4+1);

Ellipse(XX + (tolshina*7) div 4 - 1,YY + tolshina div 4 -1,

XX + (tolshina*7) div 4 + 1,YY + tolshina div 4 +1);

Ellipse(XX + (tolshina*5) div 4 - 1,YY + (tolshina*3) div 4 -1,

XX + (tolshina*5) div 4 + 1,YY + (tolshina*3) div 4+1);

end

else

begin

Ellipse(XX + tolshina div 4 - 1,YY + (tolshina*5) div 4 -1,

XX + tolshina div 4 + 1,YY + (tolshina*5) div 4 + 1);

Ellipse(XX + (tolshina*3) div 4 - 1,YY + (tolshina*7) div 4 -1,

XX + (tolshina*3) div 4 + 1,YY + (tolshina*7) div 4+1);

Ellipse(XX + (tolshina*3) div 4 - 1,YY + (tolshina*5) div 4 -1,

XX + (tolshina*3) div 4 + 1,YY + (tolshina*5) div 4 + 1);

Ellipse(XX + tolshina div 4 - 1,YY + (tolshina*7) div 4 -1,

XX + tolshina div 4 + 1,YY + (tolshina*7) div 4+1);

end;

5: if horiz then

begin

Ellipse(XX + (tolshina*5) div 4 - 1,YY + tolshina div 4 -1,

XX + (tolshina*5) div 4 + 1,YY + tolshina div 4 +1);

Ellipse(XX + (tolshina*7) div 4 - 1,YY + (tolshina*3) div 4 -1,

XX + (tolshina*7) div 4 + 1,YY + (tolshina*3) div 4+1);

Ellipse(XX + (tolshina*7) div 4 - 1,YY + tolshina div 4 -1,

XX + (tolshina*7) div 4 + 1,YY + tolshina div 4 +1);

Ellipse(XX + (tolshina*5) div 4 - 1,YY + (tolshina*3) div 4 -1,

XX + (tolshina*5) div 4 + 1,YY + (tolshina*3) div 4+1);

Ellipse(XX + (tolshina*3) div 2 - 1,YY + tolshina div 2 -1,

XX + (tolshina*3) div 2 + 1,YY + tolshina div 2 +1)

end

else

begin

Ellipse(XX + tolshina div 4 - 1,YY + (tolshina*5) div 4 -1,

XX + tolshina div 4 + 1,YY + (tolshina*5) div 4 + 1);

Ellipse(XX + (tolshina*3) div 4 - 1,YY + (tolshina*7) div 4 -1,

XX + (tolshina*3) div 4 + 1,YY + (tolshina*7) div 4+1);

Ellipse(XX + (tolshina*3) div 4 - 1,YY + (tolshina*5) div 4 -1,

XX + (tolshina*3) div 4 + 1,YY + (tolshina*5) div 4 + 1);

Ellipse(XX + tolshina div 4 - 1,YY + (tolshina*7) div 4 -1,

XX + tolshina div 4 + 1,YY + (tolshina*7) div 4+1);

Ellipse(XX + tolshina div 2 - 1,YY + (tolshina*3) div 2 - 1,

XX + tolshina div 2 + 1,YY + (tolshina*3) div 2 + 1);

end;

6: if horiz then

begin

Ellipse(XX + (tolshina*5) div 4 - 1,YY + tolshina div 4 -1,

XX + (tolshina*5) div 4 + 1,YY + tolshina div 4 +1);

Ellipse(XX + (tolshina*7) div 4 - 1,YY + (tolshina*3) div 4 -1,

XX + (tolshina*7) div 4 + 1,YY + (tolshina*3) div 4+1);

Ellipse(XX + (tolshina*7) div 4 - 1,YY + tolshina div 4 -1,

XX + (tolshina*7) div 4 + 1,YY + tolshina div 4 +1);

Ellipse(XX + (tolshina*5) div 4 - 1,YY + (tolshina*3) div 4 -1,

XX + (tolshina*5) div 4 + 1,YY + (tolshina*3) div 4+1);

Ellipse(XX + (tolshina*6) div 4 - 1,YY + tolshina div 4 -1,

XX + (tolshina*6) div 4 + 1,YY + tolshina div 4 +1);

Ellipse(XX + (tolshina*6) div 4 - 1,YY + (tolshina*3) div 4 -1,

XX + (tolshina*6) div 4 + 1,YY + (tolshina*3) div 4+1);

end

else

begin

Ellipse(XX + tolshina div 4 - 1,YY + (tolshina*5) div 4 -1,

XX + tolshina div 4 + 1,YY + (tolshina*5) div 4 + 1);

Ellipse(XX + (tolshina*3) div 4 - 1,YY + (tolshina*7) div 4 -1,

XX + (tolshina*3) div 4 + 1,YY + (tolshina*7) div 4+1);

Ellipse(XX + (tolshina*3) div 4 - 1,YY + (tolshina*5) div 4 -1,

XX + (tolshina*3) div 4 + 1,YY + (tolshina*5) div 4 + 1);

Ellipse(XX + tolshina div 4 - 1,YY + (tolshina*7) div 4 -1,

XX + tolshina div 4 + 1,YY + (tolshina*7) div 4+1);

Ellipse(XX + tolshina div 4 - 1,YY + (tolshina*6) div 4 -1,

XX + tolshina div 4 + 1,YY + (tolshina*6) div 4+1);

Ellipse(XX + (tolshina*3) div 4 - 1,YY + (tolshina*6) div 4 -1,

XX + (tolshina*3) div 4 + 1,YY + (tolshina*6) div 4+1);

end;

end;

pen.Width := 1;

pen.Color := clAqua;

if horiz then

begin

MoveTo(XX + tolshina, yy);

LineTo(XX + tolshina,YY + tolshina);

end

else

begin

MoveTo(XX, yy + tolshina);

LineTo(XX + tolshina,YY + tolshina);

end;

end;{with}

end;

constructor TDomino.Create;

begin

inherited;

Player := TPlayer.Create;

Computer := TComputer.Create;

Width := 600;

Height := 400;

with Constraints do

begin

MaxHeight := 400;

MinHeight := 400;

MaxWidth := 600;

MinWidth := 600;

end;

End_game;

end;

Destructor TDomino.Destroy;

begin

Player.Destroy;

Computer.Destroy;

inherited;

end;

end.

   
 
Внимание! У вас нет доступа для просмотра или скачивания дополнительного материала к этой новости. Авторизуйтесь!
  • Добавлен: 23-05-2010, 23:52 | Просмотров: 11003

    support: admin@sdb.su