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
Lo scopo di questa discussione e' quello di capire come fare questo programma in modo diverso (e ancor meglio, migliore).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;
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

Rispondi quotando


