|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#81 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#82 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
ehm....
per comandi su unica riga non avrei problemi a renderlo anche indipendente dalle virgolette... nel senso che usarle o non usarle darebbe lo stesso risultato... per comandi su + righe mi sa che dovrei cambiare la logica che ho usato finora..... cmq finito il task 2 vedo e vi faccio sapere.....
__________________
|
|
|
|
|
|
#83 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
fek, Jocchan: come ho spiegato la mia soluzione è flessibile sul punto delle virgolette (o perlomeno dovrebbe esserlo a meno di bug
PS: anche il mio parser è case insensitive: lo StreamTokenizer ha un metodo che converte subito tutto in lower case. |
|
|
|
|
|
#84 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
è abbastanza flessibile perché permette facilmente di aggiungere comandi in futuro e di implementarli nella apposita classe che dovrebbe essere derivata da CommandImpl. a proposito, il programmetto di prova, ParserMain, crea una nuova istanza del parser e gli fa parsare il file prova.txt; ne ho messo uno che contiene un paio di comandi; se vuoi giocare un po' col parser posso implementare delle versioni fake dei comandi che mancano (attualmente ho implementato solo wait e una versione di show) che stampano qualche output su System.out. Ultima modifica di 71104 : 30-11-2005 alle 20:02. |
|
|
|
|
|
|
#85 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
ok.. ultime novità...
la mia ideuzza funzionava! Codice:
if(textCommands.contains(commandValue)&&!commandValue.equalsIgnoreCase("Show")){
parametri = commandValue + " " + parametri;
commandValue = "Character";
}
if (commandValue!=null){
commandValue = getFirstUpperCase(commandValue);
CommandInterface command = (CommandInterface)Class.forName("commands."+commandValue).newInstance();
command.setParameters(parametri);
command.setText(text);
command.execute();
}
}
Tutte le classi si trovano nel package commands ed ereditano dalla classe CommandInterface (dovrebbe essere un interfaccia.. ma x evitare di riscrivermi lo stesso codice in tutte le classi figlie per ora è una classe così facendo, per implementare la gestione di comandi nuovi è sufficiente crearsi una classe nuova nel package commands che estende l'interfaccia CommandInterface. Inoltre il riconoscimento dei comandi presenti passati e futuri ci viene praticamente gratis senza utilizzare nemmeno un if (a parte quello per capire quali comandi si riferiscono ai personaggi per farli gestire dalla classe character) ora vedo di committare il codice in un nuovo branch a domani! [EDIT]potete scaricare sorgenti e binari dal repository nella cartella extras/spike/TigerShark Per provarlo basta lanciare il file .bat e modificare il file input.txt che non deve stare + obbligatoriamente su c:\ ma che deve stare nella cartella da dove lanciate il .bat buon divertimento jocchan (anche se ora forse sarebbe meglio che anche gli altri dessero un'okkiatina al codice e mi dicano come va
__________________
Ultima modifica di ^TiGeRShArK^ : 01-12-2005 alle 01:03. |
|
|
|
|
|
#86 | |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Quote:
Codice:
Josh says fast "Ciao belli!" Mentre per l'altro caso le possibilità sarebbero le seguenti: Codice:
Josh says fast Ciao belli! end<newline> Codice:
Josh says fast Ciao belli! end<newline> Codice:
Josh says fast Ciao belli! end<newline> Codice:
Josh says fast Ciao belli! end<newline> Anche con ATNLR la sintassi sarà case-insensitive (visto stamattina
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
|
#87 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
E lasciamo solo la seguente: Codice:
Josh says fast Ciao belli! end<newline>
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#88 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
71104, dopo alcuni problemi con Spartacus sono riuscito (finalmente) a fare il checkout, ed ho scaricato il tuo spike... solo che non riesco a farlo partire (ho provato ad adattare il .bat di Tiger per far partire Parser.class ma non funzia).
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
|
|
|
|
|
#89 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
siccome quello è un progetto a parte io per farlo partire da Eclipse 3.1 faccio così: cancello il progetto corrente (scegliendo ovviamente di non cancellare i contenuti), poi File -> Import, Existing non ricordo cosa, navigo fino alla directory CommandParser contenente il mio spike e gli do' l'OK; però non basta perché bisogna anche sistemare la configurazione di Run: devi settare ParserMain come main class; dopodiché se fai Run dovrebbe andare e parsare i comandi scritti in prova.txt.
|
|
|
|
|
|
#90 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Quote:
Non c'è un qualche altro modo che non preveda Eclipse per testarlo?
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
|
|
|
|
|
|
#91 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
ho detto 3 volte "puttane" in... anzi 4 PS: se è tutto un modo per dire che preferisci la soluzione di TigerShark dillo chiaramente
|
|
|
|
|
|
|
#92 | |
|
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Quote:
Se sapessi settare il classpath, potrei far partire la tua soluzione con un bat, come ho fatto per quella di tiger
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
|
|
|
|
|
|
#93 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
non ho mai capito come cavolo si usa il comando java :| |
|
|
|
|
|
|
#94 |
|
Senior Member
Iscritto dal: Jul 2005
Città: Silent Hill
Messaggi: 1471
|
Ho testato entrambe le soluzioni e sono comunque molto, molto simili, se non identiche
Entrambe riconoscono i comandi dai parametri, e consentono allo script una sintassi praticamente identica (l'unica eccezione riguarda i dialoghi, in cui la soluzione di Tiger mi sembra migliore... ma suppongo che anche dal codice di 71104 si possa implementare una soluzione identica con un paio di modifiche). L'unico criterio di scelta per una soluzione o l'altra, quindi, è la complessità del parser: dato che i risultati sono più o meno identici, sceglieremo quello con il codice meno complesso (e qui deve valutare qualcuno più ferrato di me), e lo svilupperemo parallelamente al gioco vero e proprio.
__________________
DIAMOND CRUSH - Aut viam inveniam, aut faciam. |
|
|
|
|
|
#95 |
|
Senior Member
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
|
secondo me l'ideale sarebbe sviluppare un parser qualsiasi in TDD che si ricavi comando, parametri(come stringa unica o direttamente come array di stringhe che forse sarebbe meglio), testo da passare poi alle varie classi dei comandi che gestiscono internamente e separatamente la logica di ogni comando.
Tanto visto il ridotto numero di comandi non credo che avremo molte classi... e quando (e se) aggiungeremo comandi nuovi sarà sufficiente aggiungere la classe corrispondente senza modificare il parser generale vero e proprio.... poi la parola credo spetti a fek per decidere... è lui il coach
__________________
|
|
|
|
|
|
#96 |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Voglio attendere lo spike di Cesare per capire se e' piu' comodo scriverlo in ANTLR o a mano. Poi ovviamente si riparte daccapo in TDD storia per storia.
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
#97 |
|
Senior Member
Iscritto dal: Jan 2002
Città: Germania
Messaggi: 26110
|
Entro domani spero di finirlo.
In futuro magari dovremmo definire un'interfaccia che la classe Parser dovrà implementare, e che riporti i metodi da richiamare quando viene riconosciuta un'istruzione. In questo modo passare da un parser all'altro dovrebbe essere immediato.
__________________
Per iniziare a programmare c'è solo Python con questo o quest'altro (più avanzato) libro @LinkedIn Non parlo in alcun modo a nome dell'azienda per la quale lavoro Ho poco tempo per frequentare il forum; eventualmente, contattatemi in PVT o nel mio sito. Fanboys |
|
|
|
|
|
#98 | |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
Quote:
l'unica differenza è che mentre lui per implementare i comandi ha usato intere classi, io ho usato una interfaccia (CommandImpl) da implementare con vari metodi che corrispondono ai vari comandi. EDIT: faccio la modifica dopo pranzo |
|
|
|
|
|
|
#99 | |
|
Senior Member
Iscritto dal: Oct 2002
Città: San Jose, California
Messaggi: 11794
|
Quote:
In altre parole, non attaccatevi troppo sentimentalmente al codice che state scrivendo ora
__________________
"We in the game industry are lucky enough to be able to create our visions" @ NVIDIA |
|
|
|
|
|
|
#100 |
|
Bannato
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
|
lo so lo so, non ti preoccupare
anzi, direi che a questo parser ci ha dedicato più fatiche TigerShark che io ^^ poi non so, magari è solo una sensazione... |
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 12:43.



















