Помогите пожалуйста улучшить программку
label k,l,p;
const v=7;
var grdriver,grmode:integer;
x1,x2,y1,y2:integer;
a,b,n:integer;
s:char;
c:string;
begin
p:
randomize;
initgraph(grdriver,grmode,s);
outtextXY(190,180,'For control use navigation button');
outtextXY(390,458,'Press ENTER for continue');
line(0,456,640,456);
readln;
x1:=0;
y1:=190;
x2:=20;
y2:=260;
n:=0;
l:
b:=random(470);
a:=631;
k:
s:=' ';
if keypressed=true then s:=readkey;
cleardevice;
dec(a);
Rectangle(x1,y1,x2,y2);
circle(a,b,5);
delay(900);
if s=#0 then begin
s:=readkey;
if s=#72 then begin y1:=y1-v; y2:=y2-v; end;
if s=#80 then begin y1:=y1+v; y2:=y2+v; end;
end;
if x2+5=a then if (b>y1)and(b<y2 ) then begin
inc(n);
goto l;
end;
if a=0 then begin outtextXY(300,220,'game over');
outtextXY(390,458,'Press ENTER for continue');
str (n,c);
outtextXY(330,240,'balls');
outtextXY(300,240,c);
line(0,456,640,456);
readln;
goto p;
end;
goto k;
readln;
end.
Код:
uses Graph, CRT;
const v = 7;
v2 = 2;
delint = 500;
function Intro: Boolean;
var s: Char;
begin
ClearDevice;
SetTextJustify(CenterText, TopText);
OutTextXY(320, 180, 'Для управления используйте стрелки');
SetTextJustify(RightText, BottomText);
OutTextXY(639, 478, 'Нажмите ENTER для продолжения или Esc для выхода');
Line(0, 456, 640, 456);
while True do
case ReadKey of
#13: begin Intro := True; Exit; end;
#27: begin Intro := False; Exit; end;
#0: s := ReadKey;
end;
end;
procedure RunLevel;
var
FallenOut: Boolean;
x1, x2, y1, y2: Integer;
a, b, n: Integer;
s: Char;
c: string;
begin
FallenOut := False;
x1 := 0;
y1 := 190;
x2 := 20;
y2 := 260;
n := 0;
ClearDevice;
while not FallenOut do begin
b := Random(470);
a := 631;
repeat
s := ' ';
SetColor(White);
Rectangle(x1, y1, x2, y2);
Circle(a, b, 5);
Delay(delint);
SetColor(Black);
Rectangle(x1, y1, x2, y2);
Circle(a, b, 5);
SetColor(White);
if KeyPressed then s := ReadKey;
if s = #27 then begin FallenOut := True; Break end else
if s = #0 then begin
s := ReadKey;
if s = #72 then begin y1 := y1 - v; y2 := y2 - v; end;
if s = #80 then begin y1 := y1 + v; y2 := y2 + v; end;
end;
a := a - v2;
until x2 + 5 >= a;
if (b > y1) and (b < y2) then
Inc(n)
else
FallenOut := True;
end;
SetTextJustify(CenterText, TopText);
OutTextXY(320, 220, 'конец игры');
SetTextJustify(RightText, BottomText);
OutTextXY(639, 479, 'Нажмите любую клавишу для продолжения');
Str(n, c);
if (n mod 100 >= 10) and (n mod 100 <= 20) then
c := c + ' мячей'
else if (n mod 10 >= 2) and (n mod 10 <= 4) then
c := c + ' мяча'
else if n mod 10 = 1 then
c := c + ' мяч'
else
c := c + ' мячей';
SetTextJustify(CenterText, TopText);
OutTextXY(320, 240, c);
Line(0, 456, 640, 456);
if ReadKey = #0 then s := ReadKey;
end;
var GrDriver, GrMode: Integer;
begin
Randomize;
GrDriver := Detect;
InitGraph(GrDriver, GrMode, 'X:\BP');
SetTextStyle(2, HorizDir, 6);
while Intro do
RunLevel;
CloseGraph;
ClrScr;
end.
const v = 7;
v2 = 2;
delint = 500;
function Intro: Boolean;
var s: Char;
begin
ClearDevice;
SetTextJustify(CenterText, TopText);
OutTextXY(320, 180, 'Для управления используйте стрелки');
SetTextJustify(RightText, BottomText);
OutTextXY(639, 478, 'Нажмите ENTER для продолжения или Esc для выхода');
Line(0, 456, 640, 456);
while True do
case ReadKey of
#13: begin Intro := True; Exit; end;
#27: begin Intro := False; Exit; end;
#0: s := ReadKey;
end;
end;
procedure RunLevel;
var
FallenOut: Boolean;
x1, x2, y1, y2: Integer;
a, b, n: Integer;
s: Char;
c: string;
begin
FallenOut := False;
x1 := 0;
y1 := 190;
x2 := 20;
y2 := 260;
n := 0;
ClearDevice;
while not FallenOut do begin
b := Random(470);
a := 631;
repeat
s := ' ';
SetColor(White);
Rectangle(x1, y1, x2, y2);
Circle(a, b, 5);
Delay(delint);
SetColor(Black);
Rectangle(x1, y1, x2, y2);
Circle(a, b, 5);
SetColor(White);
if KeyPressed then s := ReadKey;
if s = #27 then begin FallenOut := True; Break end else
if s = #0 then begin
s := ReadKey;
if s = #72 then begin y1 := y1 - v; y2 := y2 - v; end;
if s = #80 then begin y1 := y1 + v; y2 := y2 + v; end;
end;
a := a - v2;
until x2 + 5 >= a;
if (b > y1) and (b < y2) then
Inc(n)
else
FallenOut := True;
end;
SetTextJustify(CenterText, TopText);
OutTextXY(320, 220, 'конец игры');
SetTextJustify(RightText, BottomText);
OutTextXY(639, 479, 'Нажмите любую клавишу для продолжения');
Str(n, c);
if (n mod 100 >= 10) and (n mod 100 <= 20) then
c := c + ' мячей'
else if (n mod 10 >= 2) and (n mod 10 <= 4) then
c := c + ' мяча'
else if n mod 10 = 1 then
c := c + ' мяч'
else
c := c + ' мячей';
SetTextJustify(CenterText, TopText);
OutTextXY(320, 240, c);
Line(0, 456, 640, 456);
if ReadKey = #0 then s := ReadKey;
end;
var GrDriver, GrMode: Integer;
begin
Randomize;
GrDriver := Detect;
InitGraph(GrDriver, GrMode, 'X:\BP');
SetTextStyle(2, HorizDir, 6);
while Intro do
RunLevel;
CloseGraph;
ClrScr;
end.
Хорошо б было сначало расказать о том ЧТО улучшить, и ЧТО эта программа должна делать.