Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 15.03.2011, 13:32   #1
mamoh
Новичок
Джуниор
 
Регистрация: 15.03.2011
Сообщений: 1
По умолчанию Создать в игре "Тир" на делфи вторую рожизу через canvas

Помогите пожалйста в игре "Тир" в делфи, создать еще одну рожицу через 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.

Последний раз редактировалось Stilet; 15.03.2011 в 14:55.
mamoh вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с реализацией логики в игре "парные картинки" Zaher Помощь студентам 4 22.12.2009 21:53
при вводе на листе "магазин"- код товара появлялось "описание" товара из "склада" с "продажной ценой" aleksei78 Microsoft Office Excel 13 25.08.2009 12:04
Расстановка кораблей в игре "Морской бой" [MI_nor] Общие вопросы C/C++ 1 23.05.2009 00:23
как в Делфи создать кнопочку "ОК". подробности внутри темы.... Кристина2008 Общие вопросы Delphi 2 09.12.2008 22:49
Игра:"Тир" Fire.id Общие вопросы .NET 0 22.06.2008 14:14