Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Object Pascal: кроссплатформенные технологии > *Звёздное небо на Free Pascal*


Автор: GLX 7.4.2016, 16:29
Код

program ZVEZDNOE_NEBO;
uses graph,crt;                        
var
vga,vgahi:integer;       
n: word;                      
x,y: integer;
a : array [1..800] of real;
b : array [1..800] of integer;
samMask : array [0..3, 0..2] of integer;
t: real;
samx:integer;
samy: real;
i,j:integer;


Label
label1,label2;
BEGIN
samMask[0,0]:=1;
samMask[0,1]:=1;
samMask[0,2]:=0;
samMask[1,0]:=0;
samMask[1,1]:=1;
samMask[1,2]:=0;
samMask[2,0]:=1;
samMask[2,1]:=1;
samMask[2,2]:=1;
samMask[3,0]:=0;
samMask[3,1]:=1;
samMask[3,2]:=0;

t:=0.0;

InitGraph(vga, vgahi ,'c:\prg\bp\bgi');       
For n:=1 to 800 do
   begin
   a[n]:=Random(1280);    
   b[n]:=Random(1024);                          
   end;

samx:=200;
samy:=round(500 + 100* sin(Pi*t/200));
t:=0.0;
For i:=0 to 3 do
    begin
    For j:=0 to 2 do
    begin
    if samMask[i,j]=1 then Putpixel(samx+i,round(samy+j),15);
    end;
end;

label1:
t:=t;
For i:=0 to 3 do
begin
        For j:=0 to 2 do
        begin
        if samMask[i,j]=1 then Putpixel(samx+i,round(samy+j),0);
        end;
end;

t:=t+1.0;
samy:=round(500 + 100 * sin(Pi * t/200));
For i:=0 to 3 do
begin
        For j:=0 to 2 do
        begin
        if samMask[i,j]=1 then Putpixel(samx+i,round(samy+j),15);
        end;
end;




For n:=1 to 800 do
   begin
   x:=round(a[n]);
   Putpixel(x,b[n],0);
   IF n<=100 then a[n]:=a[n]-1;
   IF (n>100) and (n<=200) then a[n]:=a[n]-0.8;
   IF (n>200) and (n<=300) then a[n]:=a[n]-0.6;
   IF (n>300) and (n<=400) then a[n]:=a[n]-0.4;
   IF (n>400) and (n<=500) then a[n]:=a[n]-0.2;
   IF (n>500) then a[n]:=a[n]-0;

   x:=round(a[n]);
   Putpixel(x,b[n],15);
   IF a[n]<=0 then
     begin
     x:=round(a[n]);
     Putpixel(x,b[n],0);
     a[n]:=1280;
     b[n]:=Random(1024);
     end;
   end;
If KeyPressed=true then goto label2;
GOTO label1;
label2:
Closegraph;
end.


P.S:

Идея вот в чём: как сделать маску спрайта на ассемблере ? Помогите, пожалуйста !

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)