РефератыИнформатикаАнАнімація в Delphi 7 0

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

КУРСОВИЙ ПРОЕКТ
з дисципліни

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


Зміст


1.Вступ


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


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


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


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


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


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


8. Додатки


Вступ


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


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


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


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


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


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


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


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


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


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,kiu є допоміжними. Змінні х і у відповідають за махаючі рухи «рук» і «ніг» «чоловічка», змінна 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.

Сохранить в соц. сетях:
Обсуждение:
comments powered by Disqus

Название реферата: Анімація в Delphi 7 0

Слов:1051
Символов:11259
Размер:21.99 Кб.