Реферат: Анімація в 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. |