Анімація в Delphi 7 0

КУРСОВИЙ ПРОЕКТ 

з дисципліни

Основи програмування та алгоритмічних мов На тему „Анімація в Delphi 7 ”






























Зміст

1.Вступ

2.Характеристика предметної області

3.Узагальнена схема алгоритму функціонування проекту 

4. Проектування форм 

5. Довідкова система 

6. Проектування програмного забезпечення 

7. Література 

8. Додатки 





















































































Вступ

   В сучасному світі чільне місце посідають комп’ютерні технології. Внаслідок швидкого розвитку цієї галузі комп’ютери тепер є доступними практично всім. А якщо людина має справу з комп’ютером, то рано чи пізно в неї виникне бажання програмувати. Але декілька років назад більшість мов програмування, таких, як Turbo Pascal, або Borland C++ for Windows були досить складними для створення в них програм, якими було б зручно користуватись. 

   Бурхливий розвиток обчислювалної техніки, необхідність в ефективних засобах розробки програмного забезпечення призвели до появи систем програмування, орієнтованих на так звану „швидку розробку”, серед яких можна виділити Borland Delphi і Microsoft Visual Basic. В основі систем швидкої розробки покладена технологія візуального проектування і подійного програмування, суть якої заключається в тому, що область розробки бере на себе більшу частину рутинної роботи, залишаючи програмісту роботу по конструюванню діалогових вікон і функцій обробки подій. Продуктивність програміста при використанні систем швидкої розробки приложеній (RAD - систем) фантастична.

   Delphi – це середовище швидкої розробки, в якій в якості мови програмування використовується мова Delphi. Мова Delphi – строго типізована об’єктно орієнтована мова, в основі якої лежить добре знайомий програмістам Object Pascal.









































                                                   









Характеристика предметної області

Мультиплікація

   Під мультиплікацією зазвичай мається на увазі малюнок, який рухається і змінюється. В найпростішому випадку малюнок може або тільки  рухатися або тільки змінюватися

   Малюнок може бути сформований з графічних примітивів (ліній, завкруглень, дуг, багатокутників і т, д.). Забезпечити переміщення малюнка досить просто: треба спочатку вивести малюнок на екран, потім через якийсь час стерти його і знову вивести цей малюнок, але вже на деякій відстані від його первісного положення. Підбором часу між виведенням і видаленням малюнка, а також відстані між старим і новим положенням малюнка (кроку переміщення), можна домогтися того, що в спостерігача буде складатися враження, що малюнок рівномірно рухається по екрані.

Метод базової крапки

   При програмуванні складних зображень, що складаються з безлічі елементів, використовується метод, що називається методом базової крапки Суть цього методу полягає в наступному:

  1. Вибирається деяка крапка зображення, що приймається за базову.

  2. Координати інших крапок відраховуються від базової крапки.

  3. Якщо координати крапок зображення відраховувати від базової у відносних одиницях, а не в пікселях, то забезпечується можливість масштабування зображення.                                    

   На мал. 1 наведене зображення кораблика. Базовою крапкою є  крапка з координатами (Хо, Уо). Координати інших крапок відраховуються  саме від цієї крапки.                                               

Мал. 1. Визначення координат зображення щодо базової крапки











Узагальнена схема алгоритму функціонування проекту

   Малювання і стирання зображення кораблика виконує  процедура Titanic, яка одержує як  параметри координати базової крапки і колір, яким треба намалювати зображення. Якщо при виклику процедури Titanic колір відрізняється від кольору тла форми, то процедура малює зображення, а якщо збігається - те "стирає". У процедурі оголошені константи dx і dу, що визначають крок (у пікселях), який використовується при обчисленні координат крапок зображення. Змінюючи значення цих констант, можна проводити масштабування зображення.



Проектування форм

   Програма складається з одної форми на якій розміщені компоненти Timer1, SpeedButton1, SpeedButton2. У властивостях компонент SpeedButton1 і SpeedButton2 виставлені потрібні значення : 

   SpeedButton1  

     Caption:CLOSE 

      Flat:True 

      Font.Color:clNone 

      Font.Size:20

      Hint:Закриває форму

      ShowHint:True 

SpeedButton2  

     Caption:STOP

      Flat:True 

      Font.Color:clNone 

      Font.Size:20

      Hint:Зупиняє рух зображення

      ShowHint:True 

  У властивостях форми виставлено: 

     Caption:Animate

     Constraints.MaxHeigth:380

     Constraints.MaxWidth:536 

     Constraints.MinHeigth:380

     Constraints.MinWidth:536 

Останні чотири властивості забезпечують неможливість зміни розмірів форми. 

  Для того, щоб при запуску програми форма з’являлася в центрі екрану в її властивості Position виставлено значення poDesktopCenter.





Довідкова система

   В програмі є дві підказки, які вказують на те, які функції виконують дві кнопки, які знаходяться на формі.



Проектування програмного забезпечення 

   В програмі використовуються змінні x,y,z,k,s,n і u типу integer. 

   За рух зображення відповідають змінні x,y,s і n, а змінні z,k i u є допоміжними. Змінні х і у відповідають за махаючі рухи «рук» і «ніг» «чоловічка», змінна s за переміщення його вздовж, а змінна т за його „підстрибування”.   

   Процедурами програми є процедури Timer1Timer, FormActivate, SpeedButton1Click, SpeedButton2Click і Titanic. 

   Основна робота виконується процедурами  Timer1Timer,  FormActivate та процедурою Titanic. Процедура Titanic виконує малювання зображення, використовуючи графічну підсистему Delphi, Timer1Timer забезпечує рух і зміну зображення, а в процедурі FormActivate встановлюються початкові параметри. 

   Процедури SpeedButton1Click і SpeedButton2Click зв’язані з двома кнопками і призначені: SpeedButton1Click – для закриття програми, а  SpeedButton2Click для зупинки зображення задопомогою зміни властивості interval компонента Timer1.









Література

   Культин Н.Б., Основы программирования в Delphi 7. – СПб.:БХВ-Петербург, 2003. – 608 с.:ил.



Додатки 

Форми 



   Головна форма програми

Тексти модулів програми 

unit Unit1;



interface



uses

  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,

  Dialogs, ExtCtrls, Buttons, StdCtrls;



type

  TForm1 = class(TForm)

    Timer1: TTimer;

    SpeedButton1: TSpeedButton;

    SpeedButton2: TSpeedButton;

    procedure Timer1Timer(Sender: TObject);

    procedure FormActivate(Sender: TObject);

    procedure SpeedButton1Click(Sender: TObject);

    procedure SpeedButton2Click(Sender: TObject);

  private

    { Private declarations }

  public

    { Public declarations }

  end;



var

  Form1: TForm1;

  x,y,z,k,s,n,u:integer;





implementation



{$R *.dfm}



procedure titanic(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(0,161);

lineto(530,161);

ellipse(480,40,600,-80);

moveto(500,30);

if z=1 then

lineto(500-x*2,30+x*2);

moveto(480,10);

if z=1 then

lineto(480-x*2,10+x*2);

moveto(520,40);

if z=1 then

lineto(520-x*2,40+x*2);





ellipse (197+s,150-4*dy+n,202+s,150-3*dy+n);

moveto(200+s,150+n);

lineto(200+s,150-3*dy+n);



moveto(200+s,150+n);

if (z=1)  then

lineto(200+x+s,150+y+n);

if (z=0)  then

lineto(200-x+s,150+y+n);



moveto(200+s,150+n);

if (z=1)  then

lineto(200-x+s,150+y+n);

if (z=0)  then

lineto(200+x+s,150+y+n);



moveto(200+s,137+n);

if (z=1)  then

lineto(200+x+s,137+y+n);

if (z=0)  then

lineto(200-x+s,137+y+n);



moveto(200+s,137+n);

if (z=1)  then

lineto(200-x+s,137+y+n);

if (z=0)  then

lineto(200+x+s,137+y+n);



pen.Color:=buf;

end;

end;

procedure TForm1.Timer1Timer(Sender: TObject);

begin

titanic(x,y,form1.Color);



if n=-5 then

u:=1;

if n=5 then

u:=0;



if u=1 then

n:=n+1;

if u=0 then

n:=n-1;

if s<form1.ClientWidth then

s:=s+1

else

s:=0;



if x=0 then

z:=1;

if x=10 then

z:=0;



if y=0 then

k:=1;

if y=10 then

k:=0;



if z=1 then

x:=x+1;

if z=0 then

x:=x-1;



if k=1 then

y:=y+1;

if k=0 then

y:=y-1;

titanic(x,y,clWhite);

end;



procedure TForm1.FormActivate(Sender: TObject);

begin

with form1.Canvas do

begin

pen.Color:=clWhite;

moveto(0,160);

lineto(300,160);

end;

n:=0;

x:=0;

y:=10;

Form1.Color:=clNavy;

Timer1.Interval:=50;

s:=-100;

end;



procedure TForm1.SpeedButton1Click(Sender: TObject);

begin

form1.Close;

end;



procedure TForm1.SpeedButton2Click(Sender: TObject);

begin

if timer1.Interval<1000 then

timer1.Interval:=1000000000

else timer1.Interval:=10;

end;



end.