Per esercitarmi con il pascal ho scritto un programmino che praticamente disegna una cornice.
Partendo da sinistra, va a destra, scende, va a destra, sale....
e ripete questo fino a che viene riempito il quadrato
Incollo la procedura
codice:
PROCEDURE sfondo;
VAR y,x,a,b,c,d,e,r,h,ic,c1,c2,at:integer;
BEGIN
randomize;
clrscr;
a:=1;
b:=60;
c:=22;
d:=1;
e:=1;
x:=0;
y:=1;
h:=0;
ic:=22;
textcolor(7);
WHILE h<>1 DO
BEGIN
if a=1 then
begin
textcolor(1);
x:=x+1;
if x=b then
begin
gotoxy(x,y);
write(#219);
a:=2;
e:=e+1;
end;
end;
if a=2 then
begin
textcolor(11);
y:=y+1;
if y=c then
begin
gotoxy(x,y);
write(#219);
a:=3;
b:=b-1;
end;
end;
if a=3 then
begin
textcolor(1);
x:=x-1;
if x=d then
begin
if (d*2+2)>ic then
h:=1;
textcolor(11);
gotoxy(x,y);
write(#219);
a:=4;
c:=c-1;
end;
end;
if (a=4) AND (h=0) then
begin
textcolor(11);
y:=y-1;
if (h<>1) AND (y=e) then
begin
gotoxy(x,y);
write(#219);
a:=1;
d:=d+1;
end;
end;
if h<>1 then
begin
gotoxy(x,y);
write(#219);
delay(5);
end;
END;
END;
Lo scopo di questa discussione e' quello di capire come fare questo programma in modo diverso (e ancor meglio, migliore).
Provo a illustrare il funzionamento:
la variabile "a" indica la direzione della "pittura".
1 indica che va a destra (ossia incremento di x)
2 indica che va in giu' (ossia incremento di y)
3 indica che va a sinistra (ossia decremento di x)
4 indica che va a destra (ossia decremento di y)
Moto:
111111111111111111
411111111111111122
4422
4422
4422
443333333333333332
333333333333333332
Se non avete capito niente di quanto sopra:
1- Eseguite il codice (scritto come procedura, da richiamare)
2- Cercate un modo migliore per farlo
Mi pare strano che per fare una cosa così apparentemente semplice, ci sia bisogno di così tanti passi, e pure sequenziali.
Ciao