Uses Graph,crt;
var
gD,gM: Integer;
p: pointer;
a,x,y,size,I,x1,y1: integer;
begin
gD := Detect;
InitGraph(gD,gM,'');
randomize;
setbkcolor(yellow);
setfillstyle(1,4);
setcolor(4);
circle(20,20,10);
floodfill(20,20,4);
size:=imagesize(10,10,30,30);
getmem(p,size);
getimage(10,10,30,30,p^);
putimage(10,10,p^,xorput);
for a:=0 to 50 do
begin
x1:=random(getmaxx);
x:=random(getmaxx);
for i:=1 to 50 do
begin
y:=10*i;
putimage(x,y,p^,xorput);
delay(50);
putimage(x,y,p^,xorput);
y1:=11*i;
putimage(x1,y1,p^,xorput);
delay(50);
putimage(x1,y1,p^,xorput);
end;
end;
putimage(x,y,p,xorput);
putimage(x1,y1,p^,xorput);
OuttextXY(10,10,'Press Enter to exit');
ReadLn;
CloseGraph;
end.
М | 1234, используй теги! Lapp |
Uses Graph,crt;
const
Speed = 10;
MaxTiming = 50;
type
Ball = record
X, Y, Timing : integer;
{Timing - задержка падения шарика, чтоб не одновременно }
end;
var
gD,gM: Integer;
p: pointer;
Balls : array [1..5] of Ball;
a, size, i : integer;
begin
gD := Detect;
InitGraph(gD,gM,'');
randomize;
setbkcolor(yellow);
setfillstyle(1,4);
setcolor(4);
circle(20,20,10);
floodfill(20,20,4);
size:=imagesize(10,10,30,30);
getmem(p,size);
getimage(10,10,30,30,p^);
putimage(10,10,p^,xorput);
for i := 1 to 5 do
begin
{начальные параметры}
Balls[i].Timing := Random(MaxTiming);
Balls[i].X := Random(GetMaxX);
Balls[i].Y := 0;
end;
while not KeyPressed do {До нажатия клавиши. Если нужно заданное число падений}
begin {проверяй значение счётчика здесь, а увеличивай его... (читай ниже)}
for i := 1 to 5 do
if Balls[i].Y > GetMaxY then
begin
{...здесь}
{Этот блок вызывается, если шарик ушёл ниже экрана}
Balls[i].Timing := Random(MaxTiming);
Balls[i].X := Random(GetMaxX);
Balls[i].Y := 0;
end
else
if Balls[i].Timing = 0 then
begin
Inc(Balls[i].Y, Speed);
PutImage(Balls[i].X, Balls[i].Y, p^, xorput);
delay(200);
PutImage(Balls[i].X, Balls[i].Y, p^, xorput);
end
else
Dec(Balls[i].Timing); {Пока таймер не обнулится мячик не рисуется}
end;
OuttextXY(10,10,'Press Enter to exit');
ReadLn;
CloseGraph;
end.
Uses Graph,crt;
const
Left =#75;
Right = #77;
Esc = #27;
var
gd : Integer;
gm : Integer;
ErrCode : Integer;
P : pointer;
S, x, y, size :integer;
Ch: char;
x1, y1: integer;
begin
gdr := Detect ;
InitGraph(gd, gm,'');
setfillstyle(1,4);
setcolor(4);
line(40,50,170,50);
line(110,50,110,60);
line(110,70,110,73);
setfillstyle(1,1);
setcolor(1);
fillellipse(110,65,20,5);
floodfill(110,65,1);
line(130,73,90,73);
size:=imagesize(30,50,180,50);
getmem(p,size);
getimage(30,56,180,90,p^);
putimage(30,50,p^, xorput);
x:=225; y:=450; x1:=x;
putimage(x,y,p^, xorput);
repeat
ch:=readkey;
if ch=#0 then ch:=readkey;
case ch of
left : x1:=x-10;
right: x1:=x+10;
end;
if (x1 < 0) or (x1 > GetmaxX-150) then x1:=x;
putimage(x,y,p^,xorput);
putimage(x1 ,y1,p^,xorput);
x:=x1;
until ch=Esc;
CloseGraph;
end.
putimage(x,y,p^,xorput);будет рисовать не там, где надо, от того и глюки
putimage(x1 ,y1,p^,xorput);
Uses Graph,crt;
const
Left =#75;
Right = #77;
strelba= #72;
Esc = #27;
var
grDriver : Integer;
grMode : Integer;
ErrCode : Integer;
P : pointer;
S, x, y, size,i,j :integer;
Ch : char;
x1 : integer;
begin
grDriver := Detect ;
InitGraph(grDriver, grMode,'');
setfillstyle(1,4);
setcolor(4);
line(110,50,110,60);
line(110,70,110,73);
setfillstyle(1,1);
setcolor(1);
fillellipse(110,65,20,5);
floodfill(110,65,1);
line(130,73,90,73);
size:=imagesize(30,50,180,50);
getmem(p,size);
getimage(30,56,180,90,p^);
putimage(30,50,p^, xorput);
x:=225; y:=450; x1:=x;
putimage(x,y,p^, xorput);
repeat
ch:=readkey;
if ch=#0 then ch:=readkey;
case ch of
left : x1:=x-10;
right: x1:=x+10;
end;
if ch=strelba then
begin
for i:=1 to 30 do
putpixel(x1+80,15*i,white);
putpixel(x1+80,15*i,black);
end;
if (x1 < 0) or (x1 > GetmaxX-150) then x1:=x;
putimage(x,y,p^,xorput);
putimage(x1,y, p^,xorput);
x:=x1;
until ch=Esc;
CloseGraph;
end.
for i:=1 to 30 do
putpixel(x1+80,15*i,white);
putpixel(x1+80,15*i,black);
for i:=1 to 450 do begin
if i<440 then putpixel(x1+80,440-i,white); delay (1);
putpixel(x1+80,440-i+10,black);
end;
getimage(30,56,180,90,p^);
putimage(30,50,p^, xorput);
getimage(30,56,180,90,p^);
cleardevice;
if Balls[i].Timing = 0 then
begin
Inc(Balls[i].Y, Speed);
PutImage(Balls[i].X, Balls[i].Y, p^, xorput);
delay(200);
PutImage(Balls[i].X, Balls[i].Y, p^, xorput);
end
if Balls[i].Timing = 0 then
begin
if Balls[i].Y>0 then PutImage(Balls[i].X, Balls[i].Y, p^, xorput);
Inc(Balls[i].Y, Speed);
PutImage(Balls[i].X, Balls[i].Y, p^, xorput);
delay(200);
end