[Back to SCREEN SWAG index] [Back to Main SWAG index] [Original]
{ Here's a fancy little program! Give it a try and modify it if you like! }
program hypno; { very hypnotic! }
uses crt;
const
max_hypno=100;
type
string80=string[80];
Procedure FastWrite(col,row,Attrib:Byte; Str:string80);
begin
inline
($1E/$1E/$8A/$86/row/$B3/$50/$F6/$E3/$2B/$DB/$8A/$9E/col/
$03/$C3/$03/$C0/$8B/$F8/$be/$00/$00/$8A/$BE/attrib/
$8a/$8e/str/$22/$c9/$74/$3e/$2b/$c0/$8E/$D8/$A0/$49/$04/
$1F/$2C/$07/$74/$22/$BA/$00/$B8/$8E/$DA/$BA/$DA/$03/$46/
$8a/$9A/str/$EC/$A8/$01/$75/$FB/$FA/$EC/$A8/$01/$74/$FB/
$89/$1D/$47/$47/$E2/$Ea/$2A/$C0/$74/$10/$BA/$00/$B0/
$8E/$DA/$46/$8a/$9A/str/$89/$1D/$47/$47/$E2/$F5/$1F);
end;
var
x_speed,
x_speed_count,
x_xpos,
x_color,
x_alive,
x_dir,
x_ypos:array[1..max_hypno] of integer;
x_type:array[1..max_hypno] of string[1];
color1,color2,x,i,j,k,g:integer;
procedure setup;
begin
for x:=1 to max_hypno do
begin
x_speed[x]:=1;
x_speed_count[x]:=0;
case random(3)+1 of
1:x_type[x]:='';
2:x_type[x]:='';
3:x_type[x]:='';
end;
x_xpos[x]:=random(80)+1;
x_dir[x]:=random(2)+1;
x_alive[x]:=0;
x_ypos[x]:=50;
x_color[x]:=random(15)+1;
color1:=random(255)+1;
color2:=random(255)+1;
end;
end;
var
counter:integer;
procedure move_hypnos;
var
oldx,oldy:integer;
moved:boolean;
begin
if random(32767)=1 then
begin
color1:=random(255)+1;
color2:=random(255)+1;
end;
counter:=counter+1;
if counter>max_hypno then counter:=1;
oldx:=x_xpos[counter];
oldy:=x_ypos[counter];
moved:=false;
if x_alive[counter]=0 then if random(1100)=500 then
x_alive[counter]:=1;
if x_alive[counter]=1 then
begin
x_speed_count[counter]:=x_speed_count[counter]+1;
if x_speed_count[counter]>=x_speed[counter] then
begin
case random(5)+1 of
1:begin
x_ypos[counter]:=x_ypos[counter]+1;
if x_ypos[counter]>50 then x_ypos[counter]:=1;
end;
2:begin
x_ypos[counter]:=x_ypos[counter]-1;
if x_ypos[counter]<0 then x_ypos[counter]:=50;
end;
end;
x_speed_count[counter]:=0;
case x_dir[counter] of
1:begin
x_xpos[counter]:=x_xpos[counter]-1;
if x_xpos[counter]<0 then
begin
x_speed[counter]:=random(5)+1;
x_speed_count[counter]:=0;
x_xpos[counter]:=80;
x_ypos[counter]:=random(50)+1;
x_dir[counter]:=random(2)+1;
end;
end;
2:begin
x_xpos[counter]:=x_xpos[counter]+1;
if x_xpos[counter]>80 then
begin
x_speed[counter]:=random(5)+1;
x_speed_count[counter]:=0;
x_xpos[counter]:=0;
x_ypos[counter]:=random(50)+1;
x_dir[counter]:=random(2)+1;
end;
end;
end;
end;
end;
moved:=false;
if x_xpos[counter]<>oldx then moved:=true;
if x_ypos[counter]<>oldy then moved:=true;
if moved=true then
begin
if x_dir[counter]=1 then fastwrite(oldx,oldy,color2,' ')
else fastwrite(oldx,oldy,color1,' ');
fastwrite(x_xpos[counter],x_ypos[counter],
x_color[counter],x_type[counter]);
end;
end;
begin
randomize;
setup;
counter:=0;
while not keypressed do move_hypnos;
end.
[Back to SCREEN SWAG index] [Back to Main SWAG index] [Original]