Witam wszystkich :)
Na zadanie mam napisac kik 20 x 20 ble ble ble ale to ma być skrukturalne czyt bez goto i brake
(dowiedzialem sie o tym po napisaniu tego co wkleilem nizej ) i nie wiem teraz jak mam przerobic zeby dzialalo bez tego gotoxy...
mogł by ktoś mnie nakierowac pomoc czy co kolwiek :)
program kikik;
uses crt;
var
Plansza:array[1..20,1..20] of char; {Plansza do rozgrywki}
kursor_x,kursor_y,d:integer; {Gdzie aktualnie znajduje sie kursor}
koniec,wyjscie,jeszczeraz:boolean; {czy konczymy juz}
wynik:char;
procedure Czysc; {precedura zapelniajaca tablice znakiem .}
var i,j:integer;
begin
for i := 1 to 20 do
for j := 1 to 20 do
Plansza[i,j]:='.';
end;
procedure Rysuj; {procedura rysujaca plansze}
var
i,j:integer;
begin
{Ustalenie koloru tla}
TextBackGround(white);
for i := 1 to 20 do
for j := 1 to 20 do
begin
if(i=kursor_x)and(j=kursor_y)then
TextBackGround(red);
{Jeżeli i,j = kursor_x,kursorY wtedy zmien tlo}
gotoxy(i,j);
textcolor(black);
write(Plansza[i,j]);
TextBackGround(white);
end;
end;
procedure kursor;
var znak:char;
begin
repeat
znak:=readkey;
{Tutaj obsluga klawisz zmiennianie zmiennych kursor_x i y}
case znak
of
'4':kursor_x:=kursor_x-1;
'6':kursor_x:=kursor_x+1;
'8':kursor_y:=kursor_y-1;
'2':kursor_y:=kursor_y+1;
end;
if(kursor_x>20)then kursor_x:=1;
if(kursor_x<1)then kursor_x:=20;
if(kursor_y>20)then kursor_y:=1;
if(kursor_y<1)then kursor_y:=20;
Rysuj;
until(koniec)or((znak=#13)and(plansza[kursor_x,kursor_y]='.'));
end;
procedure gracz1;
begin
Plansza[kursor_x,kursor_y]:='X';
Rysuj;
end;
procedure gracz2;
begin
Plansza[kursor_x,kursor_y]:='0';
Rysuj;
end;
function sprawdz:char;
var
i,j:integer;
begin
wynik:=' ';
for j:=1 to 20 do
begin
for i:=1 to 20 do
begin
if (plansza[i,j]='X') and (plansza[i,i+1]='X') and (plansza[i,j+2]='X')
and (plansza[i,j+3]='X') and(plansza[i,j+4]='X')
then wynik:='X';
if (plansza[i,j]='0') and (plansza[i,j+1]='0') and (plansza[i,j+2]='0')
and (plansza[i,j+3]='0') and(plansza[i,j+4]='0')
then wynik:='0';
end;
end;
for i:=1 to 20 do
begin
for j:=1 to 20 do
begin
if (plansza[i,j]='X') and (plansza[i+1,j]='X') and (plansza[i+2,j]='X')
and (plansza[i+3,j]='X') and(plansza[i+4,j]='X')
then wynik:='X';
if (plansza[i,j]='0') and (plansza[i+1,j]='0') and (plansza[i+2,j]='0')
and (plansza[i+3,j]='0') and(plansza[i+4,j]='0')
then wynik:='0';
end;
end;
end;
begin
Repeat
textcolor(white);
TextBackGround(black);
clrscr;
czysc;
kursor_x:=1;
kursor_y:=1;
write(#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#175);
write(' Menu ');
writeln(#174);
write(#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32);
writeln(' 8-w g˘r©');
write(#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32);
writeln(' 2-w d˘');
write(#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32);
writeln(' 4-w lewo');
write(#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32);
writeln(' 6-w prawo');
write(#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32);
writeln(' ENTER-zatwierd«');
write(#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32);
writeln(' T-Tak');
write(#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32#32);
writeln(' N-Nie');
writeln;
rysuj;
textcolor(white);
TextBackGround(black);
writeln;
repeat
kursor;
gracz1;
sprawdz;
if wynik='X' then
writeln('Wygra X!!!');
kursor;
if wynik='X' then
writeln('Wygra X!!!')
else
gracz2;
sprawdz;
if wynik='0' then
writeln('Wygra 0!!!');
until (wynik='X') or (wynik='0');
textcolor(white);
TextBackGround(black);
Writeln('Jeszcze raz? (T/N)');
until readkey='n';
end.