Zizzius (Honoris User)
Guru
Messaggi: 675
Iscritto: 28/02/2005
|
Bene. Come ho gi? detto, il programma utilizzer? i caratteri ASCII estesi (ISO 8859-1).
Per facilitare la programmazione, vi consiglio di tenere sempre sotto mano la tabella dei caratteri ASCII: ho caricato un semplice programma che li visualizza.
Come proceder? il programma nel disegno di Snake?
Ecco la mia idea:
1) al centro dello schermo si scrive una decina di chr(223), ovvero caratteri corrispondenti al carattere ASCII 223.
2) il movimento di Snake consiste in un ciclo ritardato dalla procedura delay in cui il programma deve:
- cancellare il carattere in coda;
- far slittare i dati (necessari) del corpo di Snake (che sono memorizzati in due vettori);
- scrivere un nuovo carattere in testa.
Ipotizzando in un primo momento che Snake si muova verso destra, il listato del programma (un abbozzo) potrebbe essere il seguente:
PROGRAM snake;
USES crt;
CONST
partenzaX=22; (*coordinate di partenza*)
partenzaY=13;
lunghezzaIniziale=12;
lunghezzaMax=255;
attesa=100;
VAR
i:integer;
(*dati di Snake*)
x,y:ARRAY[1..lunghezzaMax]OF byte;
(*?*)
movimento:char;
lunghezzaCorrente:byte;
PROCEDURE cancellaCoda(lunghezza:byte);
BEGIN
gotoXY(x[lunghezza],y[lunghezza]);
write(' ');
END;
PROCEDURE scalaValori(VAR x:ARRAY OF byte;
VAR y:ARRAY OF byte;
lunghezza:byte);
VAR
i:integer;
BEGIN
FOR i:=lunghezza DOWNTO 1 DO
BEGIN
x[i ]:=x[i-1];
y[i ]:=y[i-1];
END;
END;
PROCEDURE disegnaTesta(VAR x:ARRAY OF byte;
VAR y:ARRAY OF byte;
movimento:char);
BEGIN
(*determina testa*)
x[1]:=x[2]+1;
(*disegna testa*)
gotoXY(x[1],y[1]);
write(chr(223));
END;
BEGIN (*main*)
(*disegno di Snake*)
gotoXY(partenzaX,partenzaY);
FOR i:=lunghezzaIniziale DOWNTO 1 DO
BEGIN
x[i ]:=whereX;
y[i ]:=whereY;
write(char(223));
END;
lunghezzaCorrente:=lunghezzaIniziale;
REPEAT
cancellaCoda(lunghezzaCorrente);
scalaValori(x,y,lunghezzaCorrente);
disegnaTesta(x,y,movimento);
delay(attesa);
UNTIL keyPressed;
movimento:=readKey; (*servir? in futuro*)
readKey;
END.
Studiatevi bene questo codice! E? necessaria una buona padronanza per gli sviluppi successivi.
Inutile dire che sono graditi commenti e proposte!
Ultima modifica effettuata da Zizzius il 28/06/2005 alle 10:08 |
|
pak0 (Ex-Member)
Expert
Messaggi: 410
Iscritto: 13/02/2005
|
Il codice mi sembra buono!
|
|
radio (Ex-Member)
Expert
Messaggi: 327
Iscritto: 03/03/2005
|
s?, sono d'accordo, ben fatto, cos? mi sono divertito a rovianrlo un po' rimpiendolo di bug (non sengalateli tutti, 2 a testa bastano ) ? che ci stavo un po' giocando e cos? prima di andare a dormire vi posto (alpha) quelo ceh ho fatto, non ? bello n? coretto ma in qualche modo, va...(anche se ogni tanto si blocca inspiegabilemnte, eppoi se il serpente va sula griglia si vede la griglia ma non il serpente
Ultima modifica effettuata da radio il 28/06/2005 alle 23:29 |
|
radio (Ex-Member)
Expert
Messaggi: 327
Iscritto: 03/03/2005
|
ieri ho re-installato windows XP. ( e chissene frega)
oggi ho scaricato TurboPascal. ( e chissene frega)
Ora riesco a far funzionare il programma e prometto che svilupper? qyesto progetto sempre in win, ma devo farvi una domanda: voi per scrivere il sorgente usate il programma in DOS accompagnato a TurboPascal?
|
|
Zizzius (Honoris User)
Guru
Messaggi: 675
Iscritto: 28/02/2005
|
Io s?. In effetti non ? molto comodo.
|
|
frank (Ex-Member)
Pro
Messaggi: 190
Iscritto: 28/08/2005
|
Domanda: forse non ? intelligente ma scusate, ? la prima volta che partcipo ad un progetto.
Come faccio ad uploadare una alpha modificata da me???
|
|
Zizzius (Honoris User)
Guru
Messaggi: 675
Iscritto: 28/02/2005
|
|
|
Zizzius (Honoris User)
Guru
Messaggi: 675
Iscritto: 28/02/2005
|
Postato originariamente da radio:
voi per scrivere il sorgente usate il programma in DOS accompagnato a TurboPascal? |
|
|