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.