Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Snake - Come procedere (1)

Snake

Sommario | Admin | Forum | Bugs | Todo | Files

Avatar
Zizzius (Honoris User)
Guru


Messaggi: 675
Iscritto: 28/02/2005

Segnala al moderatore
Postato alle 10:06
Martedì, 28/06/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! :k:

Ultima modifica effettuata da Zizzius il 28/06/2005 alle 10:08
PM Quote
Avatar
pak0 (Ex-Member)
Expert


Messaggi: 410
Iscritto: 13/02/2005

Segnala al moderatore
Postato alle 20:05
Martedì, 28/06/2005
Il codice mi sembra buono!

PM Quote
Avatar
radio (Ex-Member)
Expert


Messaggi: 327
Iscritto: 03/03/2005

Segnala al moderatore
Postato alle 22:27
Martedì, 28/06/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 :D

Ultima modifica effettuata da radio il 28/06/2005 alle 23:29
PM Quote
Avatar
radio (Ex-Member)
Expert


Messaggi: 327
Iscritto: 03/03/2005

Segnala al moderatore
Postato alle 17:56
Venerdì, 15/07/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?

PM Quote
Avatar
Zizzius (Honoris User)
Guru


Messaggi: 675
Iscritto: 28/02/2005

Segnala al moderatore
Postato alle 22:00
Martedì, 19/07/2005
Io s?. In effetti non ? molto comodo.

PM Quote
Avatar
frank (Ex-Member)
Pro


Messaggi: 190
Iscritto: 28/08/2005

Segnala al moderatore
Postato alle 20:22
Mercoledì, 31/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???

PM Quote
Avatar
Zizzius (Honoris User)
Guru


Messaggi: 675
Iscritto: 28/02/2005

Segnala al moderatore
Postato alle 22:07
Mercoledì, 31/08/2005
Qui sei :ot:: la prossima volta chiedimelo per messaggio privato, o piuttosto apri un altro Topic, cosa che ora faccio io (la risposta la trovi qui: http://www.pierotofy.it/pages/extras/forum/95_p37/3273/).

PM Quote
Avatar
Zizzius (Honoris User)
Guru


Messaggi: 675
Iscritto: 28/02/2005

Segnala al moderatore
Postato alle 16:56
Sabato, 03/09/2005
:ot:

Testo quotato

Postato originariamente da radio:

voi per scrivere il sorgente usate il programma in DOS accompagnato a TurboPascal?



Ti consiglio dev-Pascal, GUI per Windows (free download direttamente dal sito, http://www.pierotofy.it/data/compilers/devpas19.zip)

PM Quote