Aha hej mate pravdu s tym a1, neviem preco ma to tak napadlo
A:=a-3-- odcitaval som to preto lebo mi to najprv pracovalo tak ze som mal napr strely v poli 1 2 3 a potom ked presiahli 810 nove strely som mal v poli 2 3 4 dalsie 3 4 5 a stale sa mi to takto zvysovalo, potom som to prerobil a nevedomky som vam poslal to stare Momentalne mi to funguje tak ze ide to krasne, len niektore strely sa zaseknu v polovice cesty a ostanu tak nakreslene, nezmazu sa.
Myslim ze toto je najdolezitejsia cast a princip programu. Medzitym je iba menu a ze vsetkym lodiam priradim zivot.
Deklaracia:
A,B,c,D,f,y,x,i,w,y1,x1,x2,w1,I1,R,R1,B1,Y2,S,Z1,h: integer;
GD,GM: smallint;
K: char;
pole: array[1..8] of integer;
pola: array[1..5] of integer;
zivot: array[1..10,1..10] of integer;
strelax: array [1..200] of integer;
strelay: array [1..200] of integer;
zivots: array [1..200] of integer;
label L;
label L1;
label L2;
label L3;
label M;
label reset;
label E;
______________
menu
______________
Y1:=790;
F:=0;
Z1:=0;
w1:=100;
X1:=500;
w:=500;
h:=1;
a:=1;
a1:=1;
c:=1;
h1:=1;
__________
priradenie zivot lodiam
zivot[i1,i]=1
__________
while X<1200 do
begin
L:while not(keypressed) and (X<1200) do
begin
setcolor(15);
y:=W1;
for I1:=1 to 5 do {kreslim lode}
begin
x:=w;
for I:=1 to 8 do
begin
if zivot[i1,i]=1 then
begin
setcolor(15);
circle(X,Y,10);
pole[i]:=x;
pola[i1]:=y;
X:=x+70;
end;
if zivot[i1,i]=0 then
begin
setcolor(0);
circle(X,Y,10);
X:=x+70;
setcolor(15);
end;
end;
Y:=y+30;
end;
if Z1<3 then
begin
if C=0 then
begin
a:=h;
c:=1;
end;
I:=random(8)+1;
I1:=random(5)+1;
if zivot[i1,i]= 1 then
begin
strelax[a]:=pole[i];
strelay[a]:=pola[i1];
zivots[a]:=1;
Z1:=Z1+1;
a:=a+1;
end;
end;
for a:=1 to 3 do
begin
setcolor(0);
line(strelax[a],strelay[a],strelax[a],strelay[a]+19);
strelay[a]:=strelay[a]+19;
setcolor(15);
line(strelax[a],strelay[a],strelax[a],strelay[a]+19);
if strelay[a]>810 then
begin
if (strelax[a]>x1-13) and (strelax[a]<x1+13) then
begin
setcolor(15);
outtextxy(560,460,'BOOOOOOOOOOOOOOOOOOOOM');
goto E; {koniec hry}
end;
setcolor(0);
line(strelax[a],strelay[a],strelax[a],strelay[a]+19);
zivots[a]:=0;
if zivots[a]=0 then
begin
C:=0;
h:=a; {ulozim si do H cislo strely ktora presla nad 810}
end;
Z1:=Z1-1;
end;
end;
Y:=W1;
for I1:=1 to 5 do {mazem lode}
begin
x:=w;
for I:=1 to 8 do
begin
setcolor(0);
circle(X,Y,10);
X:=x+70;
end;
Y:=y+30;
end;
setcolor(15);
w:=w+1;
end;
setcolor(15);
V tomto cykle je este case(sipka dolava,doprava a strelba) + while X>1050( v nom sa robi to iste len ze tie lode nejdu do prava ale vracaju sa naspät pricom su posunute o jeden riadok nizsie. +cele je to este v jednom velkom cykle repeat, aby to zase islo do prava, a potom sa to vracalo, a zase do prava a naspät, a zase do prava...
Ospravedlnujem sa ze to nieje este take priehladne, zatial je to iba vo fazy vyskum a rozvoj , neskor to dam do procedur ak budem mat cas. Popripade mozem poslat uplne cely program, ulozit ho niekde na uloz.to, ak by to nestacilo.
PS: upozornujem ze mam zivot[i1,i]=zivot lodi a zivots[i1,i]= zivot striel.