Помогите пожалйста в игре "Тир" в делфи, создать еще одну рожицу через Canvas,чтобы она просто бегала и тяжелее было попасть мышкой на главную рожицу.
Вот код программы:
Код:
unit tir_;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, ExtCtrls;
type
TForm1 = class(TForm)
Timer: TTimer;
Label1: TLabel;
Button1: TButton;
procedure TimerTimer(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
{ *****************************
объявление процедур помещено сюда,
чтобы процедуры имели прямой доступ
к форме, на которой они рисуют
****************************** }
procedure PaintFace(x,y: integer); // рисует рожицу
procedure EraseFace(x,y: integer); // стирает рожицу
end;
var
Form1: TForm1;
fx,fy: integer; // координаты рожицы
n: integer; // количество щелчков кнопкой мыши
p: integer; // количество попаданий
implementation
// рисует рожицу
procedure TForm1.PaintFace(x,y: integer);
begin
Canvas.Pen.Color := clBlack; // цвет линий
Canvas.Brush.Color := clYellow; // цвет закраски
// рисуем рожицу
Canvas.Ellipse(x,y,x+30,Y+30); // лицо
Canvas.Ellipse(x+9,y+10,x+11,y+13); // левый глаз
Canvas.Ellipse(x+19,y+10,x+21,y+13); // правый глаз
Canvas.Arc(x+4,y+4,x+26,y+26,x,y+20,x+30,y+20); // улыбка
end;
// стирает рожицу
procedure TForm1.EraseFace(x,y: integer);
begin
// зададим цвет границы и цвет закраски,
// совпадающий с цветом формы. По умолчанию
// цвет формы - clBtnFace (см. в Object Inspector)
Canvas.Pen.Color := clBtnFace; // цвет окружности
Canvas.Brush.Color := clBtnFace; // цвет закраски
Canvas.Ellipse(x,y,x+30,y+30);
end;
{$R *.dfm}
procedure TForm1.TimerTimer(Sender: TObject);
begin
EraseFace(fx,fy);
// новое положение рожицы
fx:= Random(ClientWidth-30); // 30 - это диаметр рожицы
fy:= Random(ClientHeight-30);
PaintFace(fx,fy);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
// исходное положение рожицы
fx:=100;
fy:=100;
Randomize; // инициализация генератора
// случайных чисел
end;
// нажатие клавиши мыши
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
inc(n); // кол-во щелчков
if (x > fx) and (x < fx+30) and
(y > fy) and (y < fy+30)
then begin
// щелчок по рожице
inc(p);
end;
if n = 10 then
begin
// игра закончена
Timer.Enabled := False; // остановить таймер
ShowMessage('Выстрелов: 10. Попаданий: ' +
IntToStr(p)+'.');
EraseFace(fx,fy);
Label1.Visible := True;
Button1.Visible := True;
// теперь кнопка и сообщение снова видны
end;
end;
// щелчок на кнопке Ok
procedure TForm1.Button1Click(Sender: TObject);
begin
Label1.Visible := False; // скрыть сообщение
Button1.Visible := False; // скрыть кнопку
Timer.Enabled := True; // пуск таймера
end;
end.