|
program navalwar; { AndRyu, le navi sono da uno con possibilit… di barare }
uses crt;
const max=8;
type dimens=1..max;
cell=array[dimens,dimens] of char;
var colp,occ:cell;
di:integer;
label 1;
procedure diff;
begin
repeat
clrscr;
write('Quale limite di spari vuoi mettere? (16/40) ');
readln(di);
until (di>15) and (di<41)
end;
procedure tab(c:cell);
var i,j:integer;
procedure orizz; {Sottoprocedura, trattini orizzontali}
var i:integer;
begin
for i:=1 to 2*max+1 do
write(' Ä');
writeln;
end; {Procedura Tabella}
begin
clrscr;
textcolor(green);
writeln(' BATTAGLIA NAVALE');
textcolor(yellow);
writeln;
write(' ');
for i:=1 to max do
write(' ',i,' ');
writeln;
textcolor(white);
orizz;
for i:=1 to max do
begin
textcolor(blue);
write(i);
textcolor(white);
write(' |');
for j:=1 to max do
begin
case c[i,j] of
'*','Û':textcolor(red);
'o':textcolor(3);
end;
write(c[i,j]);
textcolor(white);
write(' | ');
end;
writeln;
end;
orizz
end;
procedure baro;
var ris:char;
begin
repeat
clrscr;
write('Sei un baro? (s/n) ');
readln(ris);
until (ris='s') or (ris='n');
writeln;
if ris='s' then
begin
tab(occ);
readln
end
end;
procedure navi(var c:cell); {Procedura Navi, assegna le posizioni}
var i,j,t:integer;
begin
randomize;
t:=0;
repeat
i:=random(max)+1;
j:=random(max)+1;
if c[i,j]<>'Û' then
begin
c[i,j]:='Û';
t:=t+1
end
until t=2*max;
end;
procedure chiedi; {Procedura Chiedi, quale settore bombardare?}
var i,j,c,t:integer;
sogg:string;
label 2;
procedure colrig(var n:integer; var sogg:string); {Sottoprocedura Richiesta Colonna/Riga}
begin
repeat
write(sogg);
readln(n)
until (n>0) and (n<=max)
end;
function vinto:boolean; {Sottoprocedura di controllo Vittoria}
label 1;
var i,j,c:integer;
begin
c:=0;
vinto:=false;
for i:=1 to max do
for j:=1 to max do
if (occ[i,j]='Û') and (colp[i,j]='*') then
begin
c:=c+1;
if c=max*2 then
begin
vinto:=true;
goto 1;
end
end;
1:end;
procedure colpito(a,b:integer); {Sottoprocedura di controllo Colpito}
begin
if occ[a,b]='Û' then
begin
colp[a,b]:='*';
write('Hai colpito una nave!');
end
else
begin
colp[a,b]:='o';
write('Hai fatto un buco nell''acqua!');
end;
readln;
end;
begin {Procedura Chiedi!}
t:=0;
repeat
2:tab(colp);
writeln;
writeln('In quali cordinate vuoi sparare? (tentativi rimasti=',di-t,') ');
sogg:='Colonna: ';
colrig(j,sogg);
sogg:='Riga: ';
colrig(i,sogg);
writeln;
if (colp[i,j]='o') or (colp[i,j]='*') then
begin
writeln('Hai gi… colpito questa cella!');
readln;
goto 2;
end
else
colpito(i,j);
t:=t+1;
until vinto or (t=di);
writeln;
if vinto then
writeln('Hai vinto!! Hai effettuato ',t,' spari.')
else
writeln('Hai perso!! Hai effettuato ben ',t,' spari.');
writeln;
write('Premi invio per vedere la soluzione.');
readln;
tab(occ);
readln
end;
{ ---->>> Main <<<---- }
begin
diff;
navi(occ);
baro;
chiedi
end.
|
|