Основы языка Pascal. Меню. Анимация

Содержание

Слайд 2

Движение рисунков по фону Для осуществления анимации в библиотеке WinGraph существует

Движение рисунков по фону

Для осуществления анимации в библиотеке WinGraph существует тип

AnimatType.
Для движения рисунка по фону осуществляется с помощью процедур:
bit может быть:
TransPut - копирует анимацию с прозрачным цветом, указанном в GetAnim. BkgPut - копирует фон, на котором находится анимация.

PutAnim(x1,y1,anim,bit);

GetAnim(x1,y1,x2,y2,BkgColor,anim);

Слайд 3

Вспомогательные процедуры procedure NewAnim(sh, vs: integer; filename:string; var anim: AnimatType; col:

Вспомогательные процедуры

procedure NewAnim(sh, vs: integer; filename:string; var anim: AnimatType;
col: longint);
var

p: pointer;
begin
p:=loader(filename);
cleardevice;
setfillstyle(1,col);
bar(0,0,getmaxx,getmaxy);
putimage(0,0,p^,0);
GetAnim(0,0,sh,vs,col,anim);
FreeMem(p);
cleardevice;
end;
Слайд 4

Вспомогательные процедуры procedure initpict; begin newanim(sh,vs,'ufo.bmp',anim,Black); newanim(sh2,vs2,'hero.bmp',anim2,White); p1:=loader('fon.bmp'); end; procedure neupr(var

Вспомогательные процедуры

procedure initpict;
begin
newanim(sh,vs,'ufo.bmp',anim,Black);
newanim(sh2,vs2,'hero.bmp',anim2,White);
p1:=loader('fon.bmp');
end;

procedure neupr(var x,y,hx,hy:integer; sh,vs:integer;
anim:

AnimatType);
begin
PutAnim(x, y, anim, BkgPut);
if (x<0) or (x>getmaxx - sh) then hx:=-hx;
if (y<0) or (y>getmaxy - vs) then hy:=-hy;
x := x + hx;
y := y + hy;
putanim(x, y, anim, TransPut);
UpdateGraph(UpdateNow);
delay(20);
end;
Слайд 5

Вспомогательные процедуры procedure upr(var x,y:integer; sh, vs, h:integer; anim: AnimatType); begin

Вспомогательные процедуры

procedure upr(var x,y:integer; sh, vs, h:integer; anim: AnimatType);
begin
ch:=readkey;
if

ch=#0 then
begin
PutAnim(x, y, anim, BkgPut);
ch:=readkey;
case ch of
left: if x>h then x:=x-h;
right: if x up: if y>h then y:= y-h;
down: if y< getmaxy-h-vs then y:=y+h;
end;
PutAnim(x, y, anim, TransPut);
end;
end;
Слайд 6

Меню

Меню

Слайд 7

Меню procedure Menu; begin putanim(460,200 + (np-1)*70,anim_kurs,TransPut); setcolor(White); settextstyle(1,0,5); outtextxy(550,100,'Menu'); outtextxy(540,200,'G

Меню

procedure Menu;
begin
putanim(460,200 + (np-1)*70,anim_kurs,TransPut);
setcolor(White);
settextstyle(1,0,5);
outtextxy(550,100,'Menu');
outtextxy(540,200,'G a m

e');
outtextxy(540,270,'H e l p');
outtextxy(540,340,'Q u i t');
ch:=readkey;
if ch=#0 then
begin
putanim(460,200 + (np-1)*50,anim_kurs,BkgPut);
ch:=readkey;
case ch of
up: if np>1 then np:=np-1;
down: if np<3 then np:=np+1;
end;
putanim(460,200 + (np-1)*50,anim_kurs,TransPut);
end
else if ch=enter then
case np of
1:game;
2:help;
3:halt;
end;
end;
Слайд 8

Процедура Game procedure game; begin initdata; putAnim(x,y,anim,TransPut); putAnim(x2,y2,anim2,TransPut); repeat Neupr(x,y,hx,hy,sh,vs,anim); if

Процедура Game

procedure game;
begin
initdata;
putAnim(x,y,anim,TransPut);
putAnim(x2,y2,anim2,TransPut);
repeat
Neupr(x,y,hx,hy,sh,vs,anim);
if keypressed then

upr(x2,y2,sh2,vs2,h,anim2);
if proverka(x,y,x2,y2) then hy:=-hy;
until ch=esc;
end;
Слайд 9

Процедура help procedure help; var f: text; s: string; i:integer; begin

Процедура help

procedure help;
var f: text; s: string; i:integer;
begin
cleardevice;
i:=0;
assign(f,'help.pas');

if fileexists('help.pas') then
begin
reset(f);
while not eof(f) do
begin
readln(f,s);
setcolor(White);
settextstyle(1,0,4);
outtextxy(430,100+40*i,s);
i:=i+1;
end;
close(f);
readkey;
end;
end;
Слайд 10

Главная программа begin gd:=detect; initgraph(gd,gm,' '); initdata; initpict; repeat Menu; until 1=2; closegraph; end.

Главная программа

begin
gd:=detect;
initgraph(gd,gm,' ');
initdata;
initpict;
repeat
Menu;
until 1=2;

closegraph;
end.
Слайд 11

Задание 1. Сделать «Отбивалку» с фоном. 2. Сделать игру «Защита города»

Задание

1. Сделать «Отбивалку» с фоном.
2. Сделать игру «Защита города» с фоном.


3. Добавить Меню и Помощь к «Защите города».

14