Главная | Обратная связь | Поможем написать вашу работу!
МегаЛекции

Я хочу рассмотреть применение спрайта на примере «Летающей тарелки».




Эта демонстрация техники перемещения единственного спрайта «Летающей тарелки» на фоне «Звездного неба». Увеличенное изображение «тарелки» нарисовано на миллиметровой бумаге в прямоугольной области размером 43*24 мм и представляет собой эллипс с полуосями 20 и 8 мм, внутри которого проходит эллиптический поясок (дуга эллипса со смещенном центром). Из «корпуса» тарелки под небольшими углами расходятся отрезки прямых – стойки локаторов, на концах которых размещены две круговые «антенны» - кружочки небольшого радиуса (2 мм). Контуры тарелки рисуются белым цветом, а внутренность корпуса заливается красным цветом.

 

Для создания образа спрайта в оперативной памяти поступаю следующим образом. Сначала воспроизвожу спрайт в любом месте экрана и запоминаю содержимое соответствующего участка видеопамяти в массиве соответствующего размера (процедура get image). Затем повторно вывожу спрайт на то же место экрана в режиме XOR для стирания статичного изображения.

Для имитации звездного неба построил 1000 случайных точек на экране, окрашенных в случайные цвета.

 

Организовал бесконечный цикл, в котором изображение тарелки на небольшое время (порядка 0,6 сек) появляется в некоторой точке с координатами (х, у), а затем стирается. После этого точка (х, у) смещается на случайные перемещения (d х, d у), и цикл повторяется до нажатия какой-нибудь клавиши пользователем. Для того чтобы перемещения из текущей точки в следующую выглядели случайными можно менять знаки приращений d х и d у, когда они оказываются четными или нечетными. Кроме того, необходимо организовать проверку очередной точки на принадлежность экрану и запретить ее выход из допустимого интервала.

В программном отображении «Летающая тарелка» вы можете посмотреть в «приложение 1».

Еще одним неплохим примером моделирования движения может быть программа электронных часов. Программа отображает текущее время (часы, минуты, секунды). Программа проста и элегантна. Каждый желающий может быстро понять алгоритм записи. А саму программу можно посмотреть в «ПРИЛОЖЕНИЕ 2»

Заключение:

Тенденции развития программных технологий

 

Вы прочитали курсовую работу и ознакомились с принципами действия программы в целом. Кроме того, вы поняли разницу между структурным и объектным подходами к программированию. Что касается структурных языков, о них сказано и написано почти все, но немногие знакомы с объектами. Поэтому я посвящаю заключение этой теме.

В последние несколько лет начал создаваться новый подход к программированию, названный объектным. Объекты стали вводиться и в язык Pascal, который позже был назван Object Pascal. Сам объект построен по принципу, объясняющемуся в главе «Объекты». Их преимущество заключается в принципе наследования, когда один созданный объект способен породить родственный ему объект-потомок. Многие объекты могут использовать друг друга при построении программы. Ввиду большого количества полей и методов, были созданы свойства, использующие методы. В частности, в Delphi свойства выносятся в Инспектор объектов, что делает работу с ними похожей на детскую игру. Теперь, чтобы написать программу, не надо возиться с кучей переменных и операторов. Программист может даже и не видеть текста самой программы, конструируя сразу ее внешний вид на форме. Таким образом, если на создание программы ранее уходили недели, то сейчас она создается за несколько часов.

В связи с переходом на объектные концепции, новые программы возникают на основе уже имеющихся объектов. Некоторые языки программирования написаны на основе объектов. Расширяется и пространство применения объектов, если они возникли в среде MS - DOS, то теперь, используя объекты, можно с легкостью создать текстовый редактор типа WORD или СУБД типа ACCESS. И, естественно, в такой среде можно создать мощный и удобный редактор тестов.

Но я только приступаю к изучению Delphi и не могу написать подобную программу в той среде.

 

Список использованных источников:

 

1. Динамические структуры данных языка Паскаль, М., издательство МАИ, 1988.

 

2. Абрамов С.А., Зима Е.В. Начала программирования на языке Паскаль. - М.: Наука, 1987.

 

3. Грогоно П. Программирование на языке Паскаль. - М.: Мир, 1982.

 

 

4. Учебник по Turbo Pascal 7.0 1998г.

 

5. Абрамов А.Г., Трифонов Н.П., Трифонова Г.Н. Введение в язык Паскаль. М., Наука, 1988.

 

6. Епанешников А., Епанешников В. Программирование в среде Turbo Pascal 7.0. М., Диалог-Мифи, 1993.

7. А. Кетков, Ю. Кетков Практика программирования Бейсик Си Паскаль БХВ-Петербург, 2001.

 

Единственный способ изучать

новый язык программирования – писать на нём программы.

                                              Брайэн Керниган

 

Приложение 1

 

{Программа “Летающая тарелка”}

program nlo;

uses Crt, Graph;

var

x, y, i, dx, dy, gd, gm: integer;

Tarelka: array [1..600] of byte;

begin

x:=320;

y:=240;

gd:=0;

initgraph (gd, gm, ‘ ‘);

randomize;

{ Построение летающей тарелки }

setfillstyle (SolidFill, 4);

fillellipse (100, 50, 20, 8);

ellipse (100, 46, 190, 357, 20, 6);

line (107, 44, 110, 38);

circle (110, 38, 2);

line (93,44, 90, 38);

circle (90, 38, 2);

{Запомнили изображение тарелки и стерли его }

getimage (79, 36, 121, 59, Tarelka);

putimage (79, 36, Tarelka, XORput);

{Построение звездного неба }

for i:=0 to 1000 do

    putpixel (random(639), random(479), random(15)+1);

repeat        { Бесконечный цикл до нажатия клавиши }

putimage (x, y, Tarelka, XORput); { Вывод тарелки }

    delay (6000);               { Задержка }

                   putimage (x, y, Tarelka, XORput); { стирание тарелки }

{ Перемещение тарелки }

dx:=random (60);

if odd (dx) then dx:=-dx;

x:=x+dx;

if x>590 then x:=590;

if x<0 then x:=0;

dy:=random (40);

if odd (dy) then dy:=-dy;

y:=y+dy;

if y>450 then y:=450;

if y<0 then y:=0;

until KeyPressed;

closegraph;

end.

 

Приложение 2

program time;

uses Crt, Dos, Graph;

var

gd,gm,k:integer;

h1,m1,s1,h2,m2,s2,hs2:word;

procedure cifra(x,y,n:integer);

type

a4=array [0..4] of integer;

a6=array [1..7] of byte;

const

a=4; b=20; c=a+a+b;

d1:a4=(a,b,a,-a,-b);

d2:a4=(-a,0,a,a,0);

dx:a6=(0,0,0,0,c,0,c);

dy:a6=(0,c,2*c,0,0,c,c);

q:array[0..9]of byte=

($5F,$5,$76,$75,$2D,$79,$7B,$45,$7F,$7D);

var

xy:array [0..5] of PointType;

j,k,d:byte;

begin

setfillstyle(0,0);

bar(x-a,y-a,x+(c+a+a),y+2*(c+2*a));

d:=q[n];

for j:=1 to 7 do

begin

if ((d) and ($80 shr j))=0 then continue;

xy[0].x:=x+dx[j];

xy[0].y:=y+dy[j];

for k:=1 to 5 do

if j<4 then begin

   xy[k].x:=xy[k-1].x+d1[k-1];

   xy[k].y:=xy[k-1].y+d2[k-1]; end

else begin

   xy[k].x:=xy[k-1].x-d2[k-1];

   xy[k].y:=xy[k-1].y+d1[k-1]; end;

setfillstyle(1,14);

fillpoly(6,xy);

end;

end;

 

begin

gd:=0;

initgraph(gd,gm,'');

settextstyle(0,0,4);

setcolor(14);

outtextxy(136,44,':');

outtextxy(256,44,':');

setcolor(4);

h1:=100;

m1:=100;

s1:=100;

repeat

gettime(h2,m2,s2,hs2);

if h1<>h2 then begin

  k:=h2 div 10; cifra(50,30,k);

  k:=h2 mod 10; cifra(100,30,k);

  h1:=h2;

end;

  if m1<>m2 then begin

  k:=m2 div 10; cifra(170,30,k);

  k:=m2 mod 10; cifra(220,30,k);

  m1:=m2;

end;

if s1<>s2 then begin

  k:=s2 div 10; cifra(290,30,k);

  k:=s2 mod 10; cifra(340,30,k);

 

  s1:=s2;

end;

until KeyPressed;

closegraph;

end.

 

 

Приложение 3

 

program zvetki;

uses crt,graph;

var i,m,x1,y1,gm,cd,l,c,x0,y0,x2,y2,ii:integer;

h,x,y,a,b,z,f,r,hp,ll,p:real;

begin

cd:=detect; gm:=1;

initgraph(cd,gm,'');

randomize;

m:=5;

a:=0;

b:=2*pi;

r:=5;

x2:=320; y2:=240;

hp:=2*pi/15;

ll:=0.5;

repeat

for ii:=0 to 14 do

begin

   p:=ii*hp;

   l:=trunc(random(5)+2);

   x0:=x2+trunc (m*r*cos(p));

   y0:=y2-trunc(m*r*sin(p));

   c:=trunc(random(6)+9);

   h:=(b-a)/1000;

   for i:=1 to 1000 do

   begin

       f:=a+i*h;

       z:=ll*(sin(l*f)-cos(l*f));

       x:=z*cos(f); y:=z*sin(f);

       x1:=trunc(x0+x*m); y1:=trunc(y0-y*m);

       setcolor(c);

      putpixel(x1,y1,c)

   end;

   r:=r+0.5;

   ll:=ll+0.05;

   delay(10000);

end;

until keypressed=true;

closegraph

end.

Отзывы можете писать на [email protected]

Поделиться:





Воспользуйтесь поиском по сайту:



©2015 - 2024 megalektsii.ru Все авторские права принадлежат авторам лекционных материалов. Обратная связь с нами...