Основи програмування та алгоритмічних мовНа тему „Анімаціяв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.