Корректировка игры - Turbo Pascal

Формулировка задачи:

uses graph,crt;
label n,n1,n2,n3,n4;
procedure pole;
begin
rectangle(150,100,450,400);
line(180,100,180,400);line(210,100,210,400);line(240,100,240,400);line(270,100,270,400);
line(300,100,300,400);line(330,100,330,400);line(360,100,360,400);line(390,100,390,400);
line(420,100,420,400);line(150,130,450,130);line(150,160,450,160);line(150,190,450,190);
line(150,220,450,220);line(150,250,450,250);line(150,280,450,280);line(150,310,450,310);
line(150,340,450,340);line(150,370,450,370);
end;
const p1:array[1..10] of integer =
(165,195,225,255,285,315,345,375,405,435);
      p2:array[1..10] of integer =
(115,145,175,205,235,265,295,325,355,385);
var
p:array[1..10,1..10] of integer;
x,y,v,g,i,j:integer;
gd,gm:integer;q:char;
{<<!!>><<!!>><<!!>><<!!>><<!!>>NACHALO<<!!>><<!!>><<!!>><<!!>><<!!>>}
begin
x:=(150+180) div 2;{165}y:=(100+130) div 2;{115}
gd:=0;initgraph(gd,gm,' ');pole;circle(x,y,10);
v:=1;g:=1;p[v,g]:=1;
n:q:=readkey;
if (q<>'w') and (q<>'s') and (q<>'a') and (q<>'d')
then goto n else
{<<!!>><<!!>><<!!>><<!!>><<!!>>VVERH<<!!>><<!!>><<!!>><<!!>><<!!>>}
if q='w' then begin
if p[v+1,g]=1 then goto n else
if y=115 then goto n else begin cleardevice;
y:=y-30;setcolor(15);pole;circle(x,y,10);inc(v);p[v,g]:=1;end;goto n;end else
{<<!!>><<!!>><<!!>><<!!>><<!!>>VNIZ<<!!>><<!!>><<!!>><<!!>><<!!>>}
if q='s' then begin
if p[v-1,g]=1 then goto n else
if y=385 then goto n else begin cleardevice;
y:=y+30;setcolor(15);pole;circle(x,y,10);dec(v);p[v,g]:=1;end;goto n;end else
{<<!!>><<!!>><<!!>><<!!>><<!!>>VLEVO<<!!>><<!!>><<!!>><<!!>><<!!>>}
if q='a' then begin
if p[v,g-1]=1 then goto n else
if x=165 then goto n else begin cleardevice;
x:=x-30;setcolor(15);pole;circle(x,y,10);dec(g);p[v,g]:=1;end;goto n;end else
{<<!!>><<!!>><<!!>><<!!>><<!!>>VPRAVO<<!!>><<!!>><<!!>><<!!>><<!!>>}
if q='d' then begin
if p[v,g+1]=1 then goto n else
if x=435 then goto n else begin cleardevice;
x:=x+30;setcolor(15);pole;circle(x,y,10);inc(g);p[v,g]:=1;end;goto n;end;
readln;closegraph;end.
В данной программе нарисован квадрат разделённый на 100 квадратов. В клетке (1;1) расположен "Мяч", им можно двигать(w-вверх,s-вниз,a-влево,d-вправо). В одной и той же клетке мяч дважды располагаться не может. Просьба:сделайте так чтобы в тех клетках где мяч был рисовалась красная окружность радиуса-10(для этого помогут массивы p1 и p2.В p1 расположены координаты красного мяча по х , в р2 расположены координаты по у). По нажатии "Enter" выходило из программы.Добавлено через 21 час 37 минутПомогите люди!!!

Код к задаче: «Корректировка игры - Turbo Pascal»

textual
uses graph,crt;
label n,n1,n2,n3,n4;
const p1:array[1..10] of integer =
(165,195,225,255,285,315,345,375,405,435);
      p2:array[1..10] of integer =
(115,145,175,205,235,265,295,325,355,385);
 
var
p:array[1..10,1..10] of integer;
 
procedure pole;
var i,j:integer;
begin
rectangle(150,100,450,400);
line(180,100,180,400);line(210,100,210,400);line(240,100,240,400);line(270,100,270,400);
line(300,100,300,400);line(330,100,330,400);line(360,100,360,400);line(390,100,390,400);
line(420,100,420,400);line(150,130,450,130);line(150,160,450,160);line(150,190,450,190);
line(150,220,450,220);line(150,250,450,250);line(150,280,450,280);line(150,310,450,310);
line(150,340,450,340);line(150,370,450,370);
for i:=1 to 10 do for j:=1 to 10 do
if p[i,j]=1 then begin setcolor(red);circle(p1[j],p2[i],10);setcolor(white) end;
end;
 
var
x,y,v,g,i,j:integer;
gd,gm:integer;q:char;
{<<!!>><<!!>><<!!>><<!!>><<!!>>NACHALO<<!!>><<!!>><<!!>><<!!>><<!!>>}
begin
x:=(150+180) div 2;{165}y:=(100+130) div 2;{115}
gd:=0;initgraph(gd,gm,' ');pole;circle(x,y,10);
v:=1;g:=1;p[v,g]:=1;
n:q:=readkey;
if (q<>'w') and (q<>'s') and (q<>'a') and (q<>'d')
then goto n else
{<<!!>><<!!>><<!!>><<!!>><<!!>>VVERH<<!!>><<!!>><<!!>><<!!>><<!!>>}
if q='w' then begin
if p[v-1,g]=1 then goto n else
if y=115 then goto n else begin cleardevice;
y:=y-30;setcolor(15);pole;circle(x,y,10);dec(v);p[v,g]:=1;end;goto n;end else
{<<!!>><<!!>><<!!>><<!!>><<!!>>VNIZ<<!!>><<!!>><<!!>><<!!>><<!!>>}
if q='s' then begin
if p[v+1,g]=1 then goto n else
if y=385 then goto n else begin cleardevice;
y:=y+30;setcolor(15);pole;circle(x,y,10);inc(v);p[v,g]:=1;end;goto n;end else
{<<!!>><<!!>><<!!>><<!!>><<!!>>VLEVO<<!!>><<!!>><<!!>><<!!>><<!!>>}
if q='a' then begin
if p[v,g-1]=1 then goto n else
if x=165 then goto n else begin cleardevice;
x:=x-30;setcolor(15);pole;circle(x,y,10);dec(g);p[v,g]:=1;end;goto n;end else
{<<!!>><<!!>><<!!>><<!!>><<!!>>VPRAVO<<!!>><<!!>><<!!>><<!!>><<!!>>}
if q='d' then begin
if p[v,g+1]=1 then goto n else
if x=435 then goto n else begin cleardevice;
x:=x+30;setcolor(15);pole;circle(x,y,10);inc(g);p[v,g]:=1;end;goto n;end;
readln;closegraph;end.

13   голосов, оценка 4.077 из 5


СОХРАНИТЬ ССЫЛКУ