АкушерствоАнатомияАнестезиологияВакцинопрофилактикаВалеологияВетеринарияГигиенаЗаболеванияИммунологияКардиологияНеврологияНефрологияОнкологияОториноларингологияОфтальмологияПаразитологияПедиатрияПервая помощьПсихиатрияПульмонологияРеанимацияРевматологияСтоматологияТерапияТоксикологияТравматологияУрологияФармакологияФармацевтикаФизиотерапияФтизиатрияХирургияЭндокринологияЭпидемиология

Листинг 10.9. Кораблик

Прочитайте:
  1. Листинг 10.1. Стили заполнения областей
  2. Листинг 10.10. Летящий самолет
  3. Листинг 10.2. Оси координат и оцифрованная сетка
  4. Листинг 10.4. Вычерчивание замкнутого контура (звезды) в точке нажатия кнопки мыши
  5. Листинг 10.6. Слайд-проектор
  6. Листинг 10.7. Использование битовых образов
  7. Листинг 10.8. Движущаяся окружность
  8. Листинг 11.1. Использование компонента Animate
  9. Листинг 11.2. Программа Звуки Microsoft Windows

unit ship_;

Interface

Uses

Windows, Messages, SysUtils, Classes,

Graphics, Controls, Forms, Dialogs,

StdCtrls, ExtCtrls;

Type

TForm1 = class(TForm)

Timer1: TTimer;

procedure Timer1Timer(Sender: TObject);

procedure FormActivate(Sender: TObject);

Private

{ Private declarations } public

{ Public declarations } end;

Var

Form1: TForm1;

x,y: integer; // координаты корабля (базовой точки)

Implementation

{$R *.DFM}

// вычерчивает кораблик

procedure Titanik(x,y: integer; // координаты базовой точки

color: TColor); // цвет корабля

const dx = 5; dy = 5;

Var

buf: TColor;

Begin

with form1.canvas do begin

buf:=pen.Color; // сохраним текущий цвет

pen.Color:=color;

// установим нужный цвет

// рисуем...

// корпус MoveTo(x,y);

LineTo(x,y-2*dy);

LineTo (x+10*dx, y-2*dy);

LineTo (x+ll*dx, y-3*dy);

LineTo (x+17*dx,y-3*dy);

LineTo (x+14*dx, y);

LineTo (x,y);

// надстройка

MoveTo(x+3*dx,y-2*dy);

LineTo (x+4*dx, y-3*dy);

LineTo (x+4*dx, y-4*dy);

LineTo (x+13*dx,y-4*dy);

LineTo (x+13*dx, y-3*dy);

MoveTo(x+5*dx,y-3*dy);

LineTo (x+9*dx, y-3*dy);

// капитанский мостик

Rectangle (x+8*dx, y-4*dy, x+ll*dx, y-5*dy)

// труба

Rectangle (x+7*dx, y-4*dy, x+8*dx, y-7*dy);

// иллюминаторы

Ellipse (x+ll*dx,y-2*dy,x+12*dx,y-l*dy);

Ellipse (x+13*dx, y-2*dy, x+14*dx, y-l*dy);

// мачта

MoveTo(.x+10*dx,y-5*dy); LineTo(x+10*dx,y-10*dy);

// оснастка

MoveTo(x+17*dx,y-3*dy);

LineTo(x+10*dx,y-10*dy);

LineTo(x,y-2*dy);

pen.Color:=buf; // восстановим старый цвет карандаша

end;

end;

// обработка сигнала таймера

procedure TForm1.Timer1Timer(Sender: TObject);

Begin

Titanik(x,y,form1.color); // стереть рисунок

if x < Form1.ClientWidth

then x:= x+5

else begin // новый рейс x:= 0;

у:= Random(50) + 100;

end;

Titanik(x,у,clWhite); // нарисовать в новой точке end;

procedure TForml.FormActivate(Sender: TObject);

Begin

x:=0; y:=100;

Form1.Color:=clNavy;

Timerl.Interval:= 50; // сигнал таймера каждые 50 миллисекунд

end;

End.

Отрисовку и стирание изображения кораблика выполняет процедура Titanik, которая получает в качестве параметров координаты базовой точки и цвет, которым надо вычертить изображение кораблика. Если при вызове процедуры цвет отличается от цвета фона формы, то процедура рисует кораблик, а если совпадает — то "стирает". В процедуре Titanik объявлены константы dx и dy, определяющие шаг (в пикселах), используемый при вычислении координат точек изображения. Меняя значения этих констант, можно проводить масштабирование изображения.



Дата добавления: 2015-09-18 | Просмотры: 467 | Нарушение авторских прав



1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 | 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 |



При использовании материала ссылка на сайт medlec.org обязательна! (0.003 сек.)