View Full Version : Turtle Graphics come fare(Ansi C)
Vincenzu
24-08-2011, 14:20
alve , L'altro giorno mi sono imbattuto in un esercizio chiamato turtle graphics che mi chiede di creare una matrice floor 50 per 50 e poi azzerarla. In ogni momento mantenete traccia della posizione corrente della tartaruga e dello stato della penna , supponete che la tartaruga cominci sempre dalla posizione 0,0 del pavimento con la penna alzata , e sotto ci sono scritto gli insiemi dei comandi:
1 alza la penna
2 abbassa la penna
3 gira a destra
4 gira a sinistra
5,10 va in avanti di 10 spazi
6 visualizza la matrice 50 per 50
9 fine dei dati(valore sentinella)
questo programma mi ha interessato molto però , non ho la minima idea di come farlo , potreste aiutarmi? grazie in anticipo
pabloski
24-08-2011, 14:53
L'esercizio in questione riguarda il linguaggio logo http://en.wikipedia.org/wiki/Logo_%28programming_language%29
Dovresti cominciare con l'installare un interprete logo, il resto è davvero semplice da usare.
Vincenzu
24-08-2011, 15:07
Ma io programmo in C , non in php o altro
pabloski
24-08-2011, 16:02
La turtle graphics è un metodo di disegno. E' il metodo usato dal Logo.
Se vuoi farlo in C devi crearti un interprete Logo, non vedo altro modo.
L'esercizio non dice in che linguaggio va implementata la soluzione?
La turtle graphics è un metodo di disegno. E' il metodo usato dal Logo.
Se vuoi farlo in C devi crearti un interprete Logo, non vedo altro modo.
creare una matrice floor 50 per 50 e poi azzerarla. In ogni momento mantenete traccia della posizione corrente della tartaruga e dello stato della penna
Serve Logo per fare 'sta cosa? :confused:
pabloski
25-08-2011, 10:40
Serve Logo per fare 'sta cosa? :confused:
No, Logo implementa la turtle graphics, ma nessuno t'impedisce di farne una tua implementazione.
No, Logo implementa la turtle graphics, ma nessuno t'impedisce di farne una tua implementazione.
Ma lui mica deve disegnare... deve implementare un primitivissimo L-system e tenere traccia della posizione attuale della tartaruga/penna. Lo può fare pure in brainfuck senza sapere nemmeno cosa sia Logo.
@Vincenzu: qual'è il problema?
Ma lui mica deve disegnare... deve implementare un primitivissimo L-system e tenere traccia della posizione attuale della tartaruga/penna. Lo può fare pure in brainfuck senza sapere nemmeno cosa sia Logo.
@Vincenzu: qual'è il problema?
Si' infatti, si fa tranquillo... anche se come e' stato chiesto non e' chiaro l'effetto della penna... se vado da (0,0) a (0,1) con penna giu, coloro la partenza, l'arrivo o oentrambi ?
comunque, @Vincenzu:
Il punto di partenza e' pensare a due strutture dati, una che tenga lo stato dello schermo (la matrice 50x50) e uno lo stato della tartaruga (posizione, orientamento, e penna su/giu').
A questo punto pensa a cosa vogliono dire le operazioni che hai descritto sopra in termini di questi due stati.. dovresti avere un canovaccio per cominciare a scrivere le funzioni.
pabloski
25-08-2011, 13:52
Ma lui mica deve disegnare... deve implementare un primitivissimo L-system e tenere traccia della posizione attuale della tartaruga/penna. Lo può fare pure in brainfuck senza sapere nemmeno cosa sia Logo.
@Vincenzu: qual'è il problema?
ma infatti non si capisce se l'esercizio gli chieda di disegnare o di implementare il sistema di turtle graphics
ma infatti non si capisce se l'esercizio gli chieda di disegnare o di implementare il sistema di turtle graphics
Direi implementarlo, solo che l'output immagino sara' testuale (una griglia di lettere 50x50).
Naufr4g0
25-08-2011, 16:08
Ma devi costruire un parser di un linguaggio di scripting inventato da te sulla base del linguaggio logo allora?
Cioè il programma deve potere permettere di scrivere del codice che poi puoi richiamare dall'interprete dei comandi?
Se così io direi di creare un interprete che accetta i comandi del tipo : edit nome_programma, run nome_programma.
Nell'editor puoi fare inputare le linee dello script e immagazzinarle in un vector (STL) di stringhe (std::string).
Durante l'esecuzione poi dovresti interpretare i comandi scritti in un modo semplice tipo: A 10, D 90, ALZAPENNA, ...
La parte più complessa è quella di riempire la matrice 50x50 con dei caratteri tipo * nel modo corretto.
Kralizek
25-08-2011, 16:12
Ma devi costruire un parser di un linguaggio di scripting inventato da te sulla base del linguaggio logo allora?
Cioè il programma deve potere permettere di scrivere del codice che poi puoi richiamare dall'interprete dei comandi?
Se così io direi di creare un interprete che accetta i comandi del tipo : edit nome_programma, run nome_programma.
Nell'editor puoi fare inputare le linee dello script e immagazzinarle in un vector (STL) di stringhe (std::string).
Durante l'esecuzione poi dovresti interpretare i comandi scritti in un modo semplice tipo: A 10, D 90, ALZAPENNA, ...
La parte più complessa è quella di riempire la matrice 50x50 con dei caratteri tipo * nel modo corretto.
ma assolutamente no...
Naufr4g0
25-08-2011, 16:18
ma assolutamente no...
assoutamento no, cosa?
assoutamento no, cosa?
Più o meno... tutto, direi. :stordita:
Naufr4g0
25-08-2011, 17:11
Più o meno... tutto, direi. :stordita:
Vabbè in pratica non ci vuole l'editor... tutto qui.
Ma il comandi come si immettono? Da codice stesso allora.
La parte più complessa è quella di riempire la matrice 50x50 con dei caratteri tipo * nel modo corretto.
int sz = 50*50;
char* mat = (char*)malloc(sz);
memset( mat, '*', sz );
Non mi sembra arduo :stordita:
PS: std::vector e std::string sono prerogative di C++, l'esercizio va fatto in C che non li ha.
PPS: non credo serva addirittura creare un "linguaggio di scripting" basterà poter dare i comandi da riga di comando.
PPPS: mi sembra che come al solito, state sopravvalutando il problema di parecchi ordini di grandezza, questa cosa si fa con 3 righe di codice C :D
PPPPS: bella N4ufrag0 :D
Kralizek
25-08-2011, 17:37
PPS: non credo serva addirittura creare un "linguaggio di scripting" basterà poter dare i comandi da riga di comando.
PPPS: mi sembra che come al solito, state sopravvalutando il problema di parecchi ordini di grandezza, questa cosa si fa con 3 righe di codice C :D
PPPPS: bella N4ufrag0 :D
deo gratia qualcuno l'ha detto.
È da un po' che questo forum ha preso questa piega...
Anche per una traccia di "elementi di informatica" si corre quasi il rischio di leggere qualcuno che consiglia di scrivere un proprio OS per avere un codice molto ottimizzato per contare i primi 10 numeri pari...
Naufr4g0
25-08-2011, 17:42
Non mi sembra arduo :stordita:
No vabbè intendevo che era più difficile da spiegare in poche parole.
PS: std::vector e std::string sono prerogative di C++, l'esercizio va fatto in C che non li ha.
Ops... non avevo letto il piccolo particolare che era in C.
PPS: non credo serva addirittura creare un "linguaggio di scripting" basterà poter dare i comandi da riga di comando.
Data la natura didattica del lavoro, sicuramente non ce n'è di bisogno. Però mi piaceva l'idea di ricreare un mini-logo! :D
PPPS: mi sembra che come al solito, state sopravvalutando il problema di parecchi ordini di grandezza, questa cosa si fa con 3 righe di codice C :D
Si in effetti bisogna ridimensionare un po' il problema e semplificarlo al massimo.
PPPPS: bella N4ufrag0 :D
Bella Tommo! Qual buon vento? :D
wingman87
25-08-2011, 18:20
Pensare che io avevo capito che i comandi erano scritti sulla matrice su cui la tartaruga si muoveva :D
Però sarebbe stato carino...
Secondo me il problema più grave è che veramente poca gente riesce ad esprimersi in modo esaustivo e sintetico usando l'italiano, altro che linguaggi di programmazione.
pabloski
25-08-2011, 20:29
Vabbè insomma c'ha una matrice 50x50 posta a zero all'avvio del programma.
Deve creare in C un piccolo interprete per eseguire un numero ristretto di comandi e disegnare ( virtualmente ) su questa matrice 50x50.
rеpne scasb
26-08-2011, 10:38
■
Vincenzu
26-08-2011, 11:06
Ma lui mica deve disegnare... deve implementare un primitivissimo L-system e tenere traccia della posizione attuale della tartaruga/penna. Lo può fare pure in brainfuck senza sapere nemmeno cosa sia Logo.
@Vincenzu: qual'è il problema?
Il problema era che non capivo come strutturarlo per bene :)
Ma devi costruire un parser di un linguaggio di scripting inventato da te sulla base del linguaggio logo allora?
No no , dovevo solamente scrivere il programma in C.
ma infatti non si capisce se l'esercizio gli chieda di disegnare o di implementare il sistema di turtle graphics
Secondo me il problema più grave è che veramente poca gente riesce ad esprimersi in modo esaustivo e sintetico usando l'italiano, altro che linguaggi di programmazione.
Io ho solamente riportato ciò che c'era scritto nel libro ^^ , l'esercizio chiede di disegnare.
Comunque Grazie mille a tutti per l'aiuto , il problema era semplicemente che non capivo se dovevo farlo col linguaggio C o un linguaggio logo , perchè nel web parlavano tutti di linguaggio logo , ma comunque adesso sono riuscito a crearlo e funziona perfettamente , grazie ancora a tutti per l'aiuto.
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.