Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi A - F > Fondamenti di architettura e programmazione
Pages: 1 [2] 3 4 
Progetto
Clicca QUI per vedere il messaggio nel forum
Supernick
Beh, quindi che siano creati o meno (lo vedremo poi questo) deve comunque fare in modo che se il file che riceve Board si chiama "Fuffi", allora i 4 giocatori dovranno essere "Fuffi1" , "Fuffi2" ecc....

Ok grazie mille, m'avete tolto un bel dubbio

Pupino
Si.. i file vanno creati a mano, come quello della configurazione!

Supernick
Sisi a mano, non dal programma...il programma andrà poi a vedere il nome del file...

puff
ma le classi emptypiece e cosi via le devo creare in piece o implementarle e crearle a parte?
la domanda apparirà stupida ma non lo so

Jaky
Originally posted by puff
ma le classi emptypiece e cosi via le devo creare in piece o implementarle e crearle a parte?


:buuu:

puff
se invece di fare il simpatico e il figo potresti darmi una risposta sensata sarebbe meglio anche se sei gran maestro

sHADOw001
Ti crei la classe astratta Piece con descrivi una casella generica, da cui poi estendi EmptyPiece, GoosePiece e via dicendo..

puff
grazie..

Jaky
Originally posted by puff
se invece di fare il simpatico e il figo potresti darmi una risposta sensata sarebbe meglio anche se sei gran maestro


si ok, però è come se avessi chiesto se la terra è rotonda o piatta...almeno una lettura al libro prima di iniziare un progetto di questo calibro ci vuole. :roll:

Jaky
Originally posted by sHADOw001
Ti crei la classe astratta Piece con descrivi una casella generica, da cui poi estendi EmptyPiece, GoosePiece e via dicendo..


occhio..non è detto che sia astratta :), altrimenti per i Piece con un valore intero come fai, crei un'altra sottoclasse?
c'è un Nota bene nel testo in cui dice di non creare sottoclassi inutili ;)

ciao ciao

Supernick
occhio..non è detto che sia astratta


Giusta puntualizzazione, le caselle Piece sono quelle quelle caselle che non hanno un comportamento particolare in termini di spostamento, ma semplicemente ti permetteno di guadagnare i punti che rappresentanto.....
Se la fai astratta non la puoi istanziare....e allora diventa inutile

Jaky
idee in merito al metodo getOffset di Piece? voglio dire, l'unica casella su cui è sensato invocare questo metodo è BackPiece che farà indietreggiare di 3 caselle a seconda del senso si marcia...ma per tutte le altre Piece sto metodo non serve a una cippa!, o meglio, gli si fa ritornare uno 0, ma a questo punto non lo vedo molto utile, tanto valeva averlo solo in BackPiece e non farlo ereditare a tutti...no? voi come la vedete?

Supernick
Beh ricordati che anche le caselle "Oche" determinano uno spostamento del giocatore, comunque si, credo che negli altri casi ritornerà semplicemente zero.

il_gege
Signori, ho guardato, ma non ho trovato nulla nel topic..

Qualcuno riuscirebbe a dirmi come ha gestito le caselle con il valore numerico??

Biggest_Niko
ma per chi non lo discuto adesso, quando puo rifarla la discussione? aprile o giugno?

Jaky
Originally posted by il_gege
Signori, ho guardato, ma non ho trovato nulla nel topic..

Qualcuno riuscirebbe a dirmi come ha gestito le caselle con il valore numerico??


mah..ne abbiamo appena parlato...leggi 3-4 post precedenti, si parla appunto della situazione della classe Piece ;)

Supernick
Ok posterò le mie forse ultime domande (ho anche altri esami da dare, se vediamo che non riusciamo ad andare da nessuna parte siamo costretti a riprovare in un appello in un periodo più tranquillo)
Quindi se potete vi prego di rispondermi.

1: – "public void setPiece(Player p, Piece n):
sostituisce il pezzo del campo di gioco alla posizione corrente del giocatore con quello passato come parametro;"
Quello che non ho capito qui è se quando visualizziamo il campo da gioco, noi dobbiamo vedere il giocatore rappresentato da un carattere SOPRA una data casella, e se si da quale carattere.

Quindi nell'output dobbiamo avere solo la stringa che dice "Il giocatore 1 è alla posizione x,y", oppure dobbiamo proprio vedere il giocatore muoversi sopra (quindi sostituirsi, e intendo graficamente) alle caselle?
In caso contrario che funzione ha questo metodo??

2: che sintassi ha la stringa di configurazione del lancio dei dadi? (Ovvero quella contenuta nel file del giocatore???)

HELP!!!

Pavo88
1: ne abbiamo già parlato. questo metodo fa esattamente quello che c'è scritto nel testo del progetto, sostituisce la casella su cui è il giocatore con una passata come parametro. niente visualizzazioni grafiche o quant altro. non credo siano richieste. il metodo è pressochè inutile ai fini del gioco, lo testa lui a suo piacimento. e non credo debba restituire niente visto ke è un metodo void!

2: la sintassi della configurazione dei dadi è m n1n2n3n4..nm dove m è in numero complessivo dei lanci del file e n1, n2 ecc sn i risultati del lancio del dado. m ti serve x costruire l'array toss[]!

spero di essere stato esaustivo.

invece ho io una domanda x voi, ma nella classe GameOfTheGoose che finalità ha il metodo GameOfTheGoose(string fn)??? che informazioni prende dal file??? E la variabile int move deve avere al suo interno il numero complessivo di lanci di tutti i giocatori??

certo che lo descirvevo meglio io il progetto ad occhi chiusi, invece di far venire tutti sti dubbi! Bah...

Jaky
invece ho io una domanda x voi, ma nella classe GameOfTheGoose che finalità ha il metodo GameOfTheGoose(string fn)???che informazioni prende dal file???


non è un metodo ma un costruttore :), a cui viene passato il nome del file da cui prendere il campo di gioco...ma non ti sto dicendo nulla di + di quanto già scritto sul testo del progetto

E la variabile int move deve avere al suo interno il numero complessivo di lanci di tutti i giocatori??


bè, il numero di lanci dei giocatori è uguale per tutti :D, basta che da uno dei 4 file recuperi il numero dei lanci

Supernick
1: ne abbiamo già parlato. questo metodo fa esattamente quello che c'è scritto nel testo del progetto, sostituisce la casella su cui è il giocatore con una passata come parametro. niente visualizzazioni grafiche o quant altro. non credo siano richieste. il metodo è pressochè inutile ai fini del gioco, lo testa lui a suo piacimento. e non credo debba restituire niente visto ke è un metodo void!

2: la sintassi della configurazione dei dadi è m n1n2n3n4..nm dove m è in numero complessivo dei lanci del file e n1, n2 ecc sn i risultati del lancio del dado. m ti serve x costruire l'array toss[]!


Grazie mille precisissimo, però ora mi sorgono altre 2 domande (dove la seconda temo sia molto stupida, ma purtroppo è il momento in cui inizio a delirare)

1 - Come ha detto jaky il num di lanci del giocatore è uguale per tutti ok...ma una volta che i lanci....ehm...finiscono? cioè cosa si intende con numero complessivo di lanci?

2 - Ma scusate.....io non ho capito....ma la stringa di configurazione....cambia???, il metodo write va a SALVARE la configurazione attuale...ma nella STRINGA DI CONFIGURAZIONE, che cos'è che cambia???

matt
Originally posted by Jaky
bè, il numero di lanci dei giocatori è uguale per tutti :D, basta che da uno dei 4 file recuperi il numero dei lanci


sicuro? a me non pare cosi sicuro

e cmq anche se fossero tutti uguali non significa che non si possono sommare


Originally posted by Supernick
2 - Ma scusate.....io non ho capito....ma la stringa di configurazione....cambia???, il metodo write va a SALVARE la configurazione attuale...ma nella STRINGA DI CONFIGURAZIONE, che cos'è che cambia???


Quoto e mi aggiungo ... a che serve? :\

Jaky
]sicuro? a me non pare cosi sicuro


ma come no scusa...a me pare ovvio, perchè un giocatore dovrebbe avere 4 tiri e un altro 5?

e cmq anche se fossero tutti uguali non significa che non si possono sommare


non l'ho mai detto..però a che scopo dovresti sommarli:?

Jaky
Ma scusate.....io non ho capito....ma la stringa di configurazione....cambia???, il metodo write va a SALVARE la configurazione attuale...ma nella STRINGA DI CONFIGURAZIONE, che cos'è che cambia???



dunque..ho visto che l'anno già chiesto in passato...e la risposta è SI!
questo perchè, il professore quando testerà il programma, avrà a disposizione il metodo setPiece(player,piece) grazie al quale, al posto della posizione del player passato, metterà un piece a piacimento!

Dopo una cosa del genere, non vi sembra che il campo di gioco sia cambiato? :)

.ma nella STRINGA DI CONFIGURAZIONE, che cos'è che cambia???


cambia che tu ogni volta che viene eseguito un setPiece, potresti per esempio dirgli: guarda che il campo è stato modificato, esegui il metodo write che così mi aggiorni la stringa della configurazione del campo, e poi rileggi il campo da capo.

A quel punto riscattano i controlli iniziali no...perchè il campo è stato modificato, quindi il prof potrebbe aver messso un Empy al posto di un Back..spezzando così il campo.....

Supernick
Perfetto ora è tutto chiaro, quindi praticamente tutto ciò mi serve per effettuare UNA MODIFICA al gioco, quindi non parliamo di partita, ma di modifica (che noi o il professore possiamo effettuare chiamando il metodo setPiece come giustamente dici), una sorta di game editor insomma :D.

Poi ecco un ultima domanda stupidissima...

Poniamo ad esempio la seguente configurazione per i giocatori

file1: 5 16432
file2: 5 64255
file3: 5 66312
file4: 5 11211 (poveretto :E)

vuol dire quindi che file1 tira 1, file2 tira 6...ecc.....alla fine file3 tira 2 e file4 tira1, una volta finiti???che succede????si riparte da capo o finisce la partita??

Ah inoltre per quando riguarda il metodo Object clone(), essendo che tutte le classi estendono object, dovrebbe essere lecito

public Object clone(){
return super.clone();
}

O secondo voi dovremmo ridefinire interamente il metodo (non credo)

giron
nel costruttore di un piece come può essere GoosePiece, come individuate il pezzo? cioè nel senso, public GoosePiece(int row, int column) dove row e column sono la riga e la colonna dell'array board?

giron
Ah inoltre per quando riguarda il metodo Object clone(), essendo che tutte le classi estendono object, dovrebbe essere lecito public Object clone(){ return super.clone(); }


Però dovrebbe ritornare una copia di board, perciò un oggetto di tipo board giusto? non un Object

tetsuo
ciao! volevo chiedervi se qualcuno saprebbe chiarirmi un piccolo dubbio..... ma nella classe Board qualcuno di voi ha utilizzato le relazioni caratteristiche? sono state fatte dal prof. (nel senso che le vuole nel progetto), essendo uno dei recidivi dell'esame di programmazione e quindi non avendo seguito il corso, mi chiedevo ciò!!!
grazie per un eventuale risposta
:?

tetsuo
sorry ..... errata corrige
mi riferisco sempre alla classe Board, all'utilizzo delle espressioni regolari (per codificare decodificare una stringa) avendo affrontato il problema in altro modo mi chiedevo se il prof richiedesse specificatamente l'utilizzo di queste!

:?un altro dubbio: mosse dei giocatori(come funziona la classe oca?)

:?ancora un altro: sul file da creare per il lancio del dado (come si legge?) nel senso il primo numero dovrebbe essere il numero di lanci separato poi da uno spazio con il risultato dei lanci stessi: del tipo 25 2456612345324422.

:?per finire: sulla stringa di input iniziale data come esempio pone la casella target T in mezzo e non alla fine: perchè??

grazie

Supernick
Scusate, ma anche il fatto che bisogna avere un percorso senza bivi, sarà da verificare opportunamente e lanciare le dovute eccezioni in caso contrario???

Jaky
:?un altro dubbio: mosse dei giocatori(come funziona la classe oca?)


ti memorizzi il lacio appena fatto e glielo fai rifare


mi riferisco sempre alla classe Board, all'utilizzo delle espressioni regolari (per codificare decodificare una stringa) avendo affrontato il problema in altro modo mi chiedevo se il prof richiedesse specificatamente l'utilizzo di queste!


tu puoi usare quello che vuoi, anche argomenti avanzati di programmazione mai trattati, basta che poi all'orale li sai spiegare

:?ancora un altro: sul file da creare per il lancio del dado (come si legge?) nel senso il primo numero dovrebbe essere il numero di lanci separato poi da uno spazio con il risultato dei lanci stessi: del tipo 25 2456612345324422.


hai almeno letto i post precedenti?manco fosse lontano..mi sembra nella pagina precedente..

:?per finire: sulla stringa di input iniziale data come esempio pone la casella target T in mezzo e non alla fine: perchè??


hai letto almeno il testo del progetto? :|
riporto paro paro "(che può essere ovunque nel percorso)"

non intasiamo il thread con domande già poste, a cui è già stata data una risposta, e domande in cui basta leggere il testo del progetto...nel rispetto anche di chi segue giornalmente questo thread..

ciao ciao

Jaky
Originally posted by Supernick
Scusate, ma anche il fatto che bisogna avere un percorso senza bivi, sarà da verificare opportunamente e lanciare le dovute eccezioni in caso contrario???


no..si presume il il campo sia già senza bivi :), anche xchè è posto nelle semplificazioni del gioco.
Tra le tante, la cosa improtante è verificare che il percorso sia contiguo, ovvero non spezzato ;)

Supernick
Ah ok perfetto, per i bivi mi stavo gia preoccupando :D

jack1189
scusate ma mi sapreste dire la differenza fra il metodo setFilename(String) e il costruttore di Board???

In teoria setFilename non dovrebbe occuparsi di ricevere in parametro il nome del file di testo contenente la configurazione e settare la variabile d'istanza filenaname?
se è cosi..... allora che diavolo fa il costruttore di Board ?

Supernick
Scusa il costruttore lo devi creare sempre, sennò come fai ad istanziarlo???

il metodo setFileName ti serve se nel corso del programma hai la necessità di cambiare filename, con il setter lo puoi cambiare a tuo piacimento.

jack1189
ah ok...il setter serve se per caso debba cambiare il filename......
il costruttore so che dovevo per forza definirlo,ma ero indeciso su cosa dovesse fare.....ora ho capito....si deve occupare di settare la variabile filename giusto?

Supernick
e una volta settata va aleggere la configurazione del campo da gioco

Jaky
e visto che ci siamo, magari lo costruisce anche :D
costruttore--->costruisce °L°

jack1189
ok ragazzi sono d'accordo con voi....
Ma se è il costruttore a costruire anche l'array di Piece(cioè il campo da gioco), il metodo setBoard(String x).... ha una funziona del tutto analoga di quella di setFilename(String) ???

Lily
Ho una domandina anch'io...

Ma se nelle caselle E, cioè le caselle vuote, non ci devo andare, cioè devo evitarle e ricostruire il percorso corretto...a cosa mi serve allora la classe EmptyPiece?

Grazie in anticipo!

Jaky
Originally posted by jack1189
ok ragazzi sono d'accordo con voi....
Ma se è il costruttore a costruire anche l'array di Piece(cioè il campo da gioco), il metodo setBoard(String x).... ha una funziona del tutto analoga di quella di setFilename(String) ???


ok, è il costruttore a costruirlo, ma dovrai pur usare dei metodi al suo interno no? si chiama programmazione ad oggetti apposta per questo :-D, spezzetti i compiti che dovrebbe fare il costruttore con altri metodi, che rendi privati ;)

Jaky
Originally posted by Lily
Ho una domandina anch'io...

Ma se nelle caselle E, cioè le caselle vuote, non ci devo andare, cioè devo evitarle e ricostruire il percorso corretto...a cosa mi serve allora la classe EmptyPiece?

Grazie in anticipo!


bè..l'array dev'essere cmq riempito, piuttosto che lasciare delle posizioni vuote, è utile avere delle caselle Empty.
E poi quando ti muovi, avere l'Empty ti permette di vedere se in quella posizione ci puoi andare o no, con un if per esempio...se casella[x][y] è un Empty, allora non ci andare ;)

Pavo88
Originally posted by jack1189
ok ragazzi sono d'accordo con voi....
Ma se è il costruttore a costruire anche l'array di Piece(cioè il campo da gioco), il metodo setBoard(String x).... ha una funziona del tutto analoga di quella di setFilename(String) ???


allora credo ke svolgano 2 compiti ben differenti!

setBoard(String x) costruisce il campo di gioco creando l'array di Piece dal file x dato come input.

mentre in SetFilename(String) tu setti il nome del file dal quale leggere il capo di gioco. così lo puoi cambiare!! ovviamente poi facendo tutti i controlli di contiguità delle caselle del percorso ed eventuali doppi traguardi o doppi start piece.

fermatemi se dico castronerie...ma io l'ho interpretato così...

towl88
scusate, però a me sorge un piccolo dubbio... ma nn poteva darci direttamente anche il nome che usa lui per il campo? almeno nn stavamo a lasciare scritto, per esempio, String filename come parametro del costruttore Board....anche perchè così mi viene il dubbio se dobbiamo consegnarlo con scritto "public Board(String filename)", o con un nome che noi diamo al campo , tipo "public Board("campo.txt"), e poi lui si divertirà a settarlo come cavolo gli pare e piace????

Supernick
Diciamo che il compito di costruire il campo è come dice jaky compito del costruttore, ovviamente nel paradigma ad oggetti non andrai a scrivere tutto il codice nel costruttore ma richiamarai gli appositi metodi, per esempio nel costruttore vai a caricare la stringa dal file con l'apposito metodo, dove quell'apposito metodo a sua volta andrà a richiamare il metodo che costruisce il campo partendo dalla configurazione non ancora codificata secondo le convenzioni descritte.
Poi ovviamente ci sono moltissimi diversi modi per lavorare, l'importante è sfruttare il paradigma ad oggetti.
Per dirla breve il costruttore potrebbe pensare "perchè devo rifare un lavoro quando lo fa gia un metodo?, quindi chiamo lui :D".

Comunque i parametri di ingresso x ogni metodo/costruttore specificati nella consegna aiutano molto a capire dove è preferibile richiamare certi metodi ;)

jack1189
ok ho capito...grazie mille per l'aiuto....

Jaky
Originally posted by towl88
scusate, però a me sorge un piccolo dubbio... ma nn poteva darci direttamente anche il nome che usa lui per il campo? almeno nn stavamo a lasciare scritto, per esempio, String filename come parametro del costruttore Board....anche perchè così mi viene il dubbio se dobbiamo consegnarlo con scritto "public Board(String filename)", o con un nome che noi diamo al campo , tipo "public Board("campo.txt"), e poi lui si divertirà a settarlo come cavolo gli pare e piace????




scusami, ma riflettiamo, tu stai facendo un PROGRAMMA, un programma che deve essere utilizzabile dal mondo esterno, da persone totalmente ignare da come hai sviluppato tale programma.....
puoi risponderti da solo facendo un piccolo sforzo mentale :)

jack1189
scusate ragazzi,nella consegna si parla spesso di configurazione e configurazione codificata e ecc... Allora:
- variabile d'istanza filename contiene il nome del file di testo dove sono presenti tutti i possibili percorsi
- configurazione corrente: si riferisce alla stringa corrispondente all'ultima riga del file di testo,in poche parole è la stringa contenente il percorso che dobbiamo usare come campo da gioco.
es: "2 2|1 2.1 S$1 G.1 T$"
- configurazione codificata: cosa intende??

Quello che ho scritto è corretto?

Grazie in anticipo....

Lily
Originally posted by Jaky
bè..l'array dev'essere cmq riempito, piuttosto che lasciare delle posizioni vuote, è utile avere delle caselle Empty.
E poi quando ti muovi, avere l'Empty ti permette di vedere se in quella posizione ci puoi andare o no, con un if per esempio...se casella[x][y] è un Empty, allora non ci andare ;)


Allora io faccio in questo modo:
- costruisco la mia matrice con tutte le caselle:
se la mia prima riga è così configurata 4 E. 1 S. 5 E$
nella mia matrice all'ultima riga apparirà EEEESEEEEE
se la seconda riga è così configurata invece 4 E.1 J.1 G.1 3.3 E$
nella mia matrice, alla penultima riga apparirà EEEEJG3EEE
e via dicendo... avrò quindi:

.........................
.........................
EEEEJG3EEE
EEEESEEEEE

a questo punto io estraggo il percorso, inserendolo in un array che conterrà SJG3.....
Cosa mi servono quindi le Empty?
Forse sto sbagliando????

xbx12
scusate ma io non ho ancora capito cosa fa il il metodo setFilename....

Supernick
Semplicemente va a settare il nome del file nella variabile di istanza filename ;)

Pavo88
Originally posted by Lily
Allora io faccio in questo modo:
- costruisco la mia matrice con tutte le caselle:
se la mia prima riga è così configurata 4 E. 1 S. 5 E$
nella mia matrice all'ultima riga apparirà EEEESEEEEE
se la seconda riga è così configurata invece 4 E.1 J.1 G.1 3.3 E$
nella mia matrice, alla penultima riga apparirà EEEEJG3EEE
e via dicendo... avrò quindi:

.........................
.........................
EEEEJG3EEE
EEEESEEEEE

a questo punto io estraggo il percorso, inserendolo in un array che conterrà SJG3.....
Cosa mi servono quindi le Empty?
Forse sto sbagliando????


Si ci avevo pensato pure io, ma forse è meglio non mettere le caselle valide in un unico array, non credo sia nei fini del programma, anche xkè quando lui lancerà setPiece ti darà le coordinate della matrice nxm, e tu dovrai poi rifare i controlli e ricaicare il tuo array...a me sembra 1 lavoro doppio. conviene fare tutto sulla matrice e basta...

xbx12
scusate ma qualcuno mi sa spiegare l'utilità di creare una matrice e non un semplice array per salvare il campo da gioco???...in ogni caso il giocatore procederà linearmente..

Pavo88
rende più difficle la realizzazione del progetto...

Supernick
Avrei un domandina inerente alla classe Board e GameOfTheGoose.
Ovvero in GOTG per fare il movimento dovrei lavorare su una matrice di Piece, solo che nella classe board non ci sono metodi che ritornano una matrice di questo tipo (Con getBoard posso al limite ritornare un stringa, ma è inpensabile lavorare su una stringa, avrei bisogno di oggetti) quindi mi sono creato un metodo public Piece[][] getPieces() che mi ritorna appunto una matrice di oggetti su cui lavorare per il move(), secondo voi può essere una buona scelta???

xbx12
Originally posted by Pavo88
rende più difficle la realizzazione del progetto...



a me sembra il contrario... bu ve bè

Jaky
Originally posted by Lily
Allora io faccio in questo modo:
- costruisco la mia matrice con tutte le caselle:
se la mia prima riga è così configurata 4 E. 1 S. 5 E$
nella mia matrice all'ultima riga apparirà EEEESEEEEE
se la seconda riga è così configurata invece 4 E.1 J.1 G.1 3.3 E$
nella mia matrice, alla penultima riga apparirà EEEEJG3EEE
e via dicendo... avrò quindi:

.........................
.........................
EEEEJG3EEE
EEEESEEEEE

a questo punto io estraggo il percorso, inserendolo in un array che conterrà SJG3.....
Cosa mi servono quindi le Empty?
Forse sto sbagliando????



ATTENZIONE, così facendo, canni tutto.

il percorso non è mica messo linermente! ovvero..se tu hai
EEEE341EEE
EE512E1EEE
EEEEEE1EEE
EEEEJG3EEE
EEEESEEEEE

il percorso da seguire è

SJG311143215!!!
se tu estrapoli e basta tutto quello che non è Empty, ti viene fuori
SJG315121341, che non è il campo!

per questo nel testo del progetto, dice "prima guardo a destra, poi in alto, poi a sinsitra, poi in basso"

e poi, se metti tuto su un array monodimensionale, come fai a recuperare gli empty del campo iniziale per scrivere la configurazione corrente del campo sul file?

xbx12
Originally posted by Jaky
ATTENZIONE, così facendo, canni tutto.

il percorso non è mica messo linermente! ovvero..se tu hai
EEEE341EEE
EE512E1EEE
EEEEEE1EEE
EEEEJG3EEE
EEEESEEEEE

il percorso da seguire è

SJG311143215!!!
se tu estrapoli e basta tutto quello che non è Empty, ti viene fuori
SJG315121341, che non è il campo!

per questo nel testo del progetto, dice "prima guardo a destra, poi in alto, poi a sinsitra, poi in basso"

e poi, se metti tuto su un array monodimensionale, come fai a recuperare gli empty del campo iniziale per scrivere la configurazione corrente del campo sul file?



e no tu anche se hai un array monodimensionale fintantochè ci sono le caselle vuote lo fai muovere di uno...(a vuoto).....non fai un array solo con le caselle consentite!!le salvi tutte

Lily
Originally posted by Jaky
ATTENZIONE, così facendo, canni tutto.

il percorso non è mica messo linermente! ovvero..se tu hai
EEEE341EEE
EE512E1EEE
EEEEEE1EEE
EEEEJG3EEE
EEEESEEEEE

il percorso da seguire è

SJG311143215!!!
se tu estrapoli e basta tutto quello che non è Empty, ti viene fuori
SJG315121341, che non è il campo!

per questo nel testo del progetto, dice "prima guardo a destra, poi in alto, poi a sinsitra, poi in basso"


No ok, lo so...era solo un esempio per non metterlo tutto, ho fatto in modo che si guardasse in tutte le direzioni e che evitasse la direzione di provenienza. Cmq la configurazione sarebbe uscita corretta, anche nel caso del tuo esempio.

Originally posted by Jaky
e poi, se metti tuto su un array monodimensionale, come fai a recuperare gli empty del campo iniziale per scrivere la configurazione corrente del campo sul file?


Questo non l'ho capito... non uso la stringa originale?

jack1189
quindi alla fine possiamo essere quasi certi che la variabile board di Board sia una matrice di Piece e non un singolo array di Piece
giusto?

Jaky
Originally posted by Lily


Questo non l'ho capito... non uso la stringa originale?


certo che no..l'abbiamo detto anche in precedenza, la configurazione del gioco, durante una partita, cambia!

se il prof invoca il metodo setPiece, cambia un Piece del campo da gioco, e tu devi riappendere la configurazione cambiata al file txt.

Jaky
Originally posted by jack1189
quindi alla fine possiamo essere quasi certi che la variabile board di Board sia una matrice di Piece e non un singolo array di Piece
giusto?


a me è sembrato ovvio fin dal primo giorno...anche in progetti come spaceinvaders e pacman si lavorava su una matrice, e i pezzi delle caselle erano identificate da due cordinate :)

qualcuno pensa di poter lavorare come in monopoli, in cui si lavorara su un'unica direzioni...qui a mio parare non è affatto così, perchè appunto il campo non è lineare...e anche a riuscire a renderlo lineare..bè, come ho appena detto nel post precedente, c'è il problema di riconvertire il tutto per appenderlo al file txt

jack1189
ok ho capito grazie jaky,questa domanda era più che altro una conferma xke il mio compagno di progetto optava per l'array......cmq evidentemente tu sei molto bravo xke a me certe cose non mi vengono come ovvie,devo rifletterci su parecchio....

Supernick
Scusate ma quando torna la stringa

"The Player «ID» is on «Position»; it has «Bonus»."

Position deve essere espressa in forma del tipo 15, 20 ecc...
Oppure deve essere in coordinate del tipo (0,0)(0,6) ecc...

grazie

Jaky
Originally posted by Supernick
Scusate ma quando torna la stringa

"The Player «ID» is on «Position»; it has «Bonus»."

Position deve essere espressa in forma del tipo 15, 20 ecc...
Oppure deve essere in coordinate del tipo (0,0)(0,6) ecc...

grazie


bè dipende da come stai lavorando! se stai lavorando su un array, ovviamente un int, altrimenti se lavori su una matrice, con 2 int :D

Invece una cosa che ho pensato solo ora...ma il value dei Piece numerici, fino a quanto può valere? non mi sembra che venga detto nulla a riguardo...potrebbe quindi esistere un piece 1_100? :?

Supernick
Beh, credo di si, io ho notato vengono dei problemi se metto però dei piece da 10^9 :D.

Comunque si non credo sia da controllare.

Scusate poi, ma quando dice che tutte le eccezioni devono essere gestite nel main, intende che quindi ogni classe deve sollevare le eccezioni, ma ignorarle per poterle catturare poi nel main giusto??

jack1189
Scusate ma avendo la matrice, poi riconvertendola in array con le opportune attenzioni, sarebbe molto più semplice , visto che in fondo il percorso fa avanti e indierto e non conta che vada su giù destra o sinistra.
Per il write la stringa da riconvertire è salvata su toString.
Poi diventerebbe un casino fare muovere il player su una matrice visto che arrivati in fondo dovrebbe tornare indietro fino all'inizio.

Supernick
Mhhh....non saprei, anche perchè come dice Jaky bisogna rimodificare tutta la struttura ecc....e poi comunque un controllo sulla matrice lo devi fare lo stesso per i percorsi spezzati.

DOMANDA IMPORTANTISSIMA

Si dice che la matrice deve essere letta dal basso verso l'alto...ma che senso?? (Vi propongo due casi)

1) se ho le righe A,B,C,D
viene fuori
D...............
C..............
B..............
A.............
e inizia a leggere da A

oppure

2) se ho le righe A,B,C,D
viene fuori
A..............
B...............
C..............
D..............
e inizio a leggere da D

Io sto lavorando con il primo caso, ma anche per fare il secondo dovrei cambiare comunque pochi indici, ma per sapere, quale dei due è corretto secondo voi???

grazie

jack1189
a mio parere il secondo modo......aspettiamo conferma da altre persone

Supernick
Ok speriamo di ottenere una risposta

OT: 100 Post :D:D:D cosa ho vinto???

jack1189
no scusa,ripensandoci credo che vadano bene tutte e due i modi......Però vediamo che aspettano gli altri

fraBg
scusate una domanda ma il metodo reload() andrà a ricreare anche la matrice o si limita a leggere la riga del nuovo file?

Supernick
il codice che andrai a mettere in reload() penserà a leggere la riga del file, poi sta a te, a seconda della tua implementazione scegliere se richiamare altri metodi in reload() o no.

Jaky
Originally posted by Supernick
Mhhh....non saprei, anche perchè come dice Jaky bisogna rimodificare tutta la struttura ecc....e poi comunque un controllo sulla matrice lo devi fare lo stesso per i percorsi spezzati.

DOMANDA IMPORTANTISSIMA

Si dice che la matrice deve essere letta dal basso verso l'alto...ma che senso?? (Vi propongo due casi)

1) se ho le righe A,B,C,D
viene fuori
D...............
C..............
B..............
A.............
e inizia a leggere da A

oppure

2) se ho le righe A,B,C,D
viene fuori
A..............
B...............
C..............
D..............
e inizio a leggere da D

Io sto lavorando con il primo caso, ma anche per fare il secondo dovrei cambiare comunque pochi indici, ma per sapere, quale dei due è corretto secondo voi???

grazie


MmMm....io sto usando la prima che hai detto...cioè inizio a costruire il campo dalla prima che leggo,cioè inizio ad assegnare i valori della matrice partendo dalla riga A

Jaky
Originally posted by jack1189
no scusa,ripensandoci credo che vadano bene tutte e due i modi......Però vediamo che aspettano gli altri


mmm...da sinistra a destra dal basso verso il l'alto...quindi è giusta la prima a mio parere :D

jack1189
credo che il modo migliore sia il primo,scambiamo le righe e poi leggiamo come dice il testo,cioè dal basso verso l'alto

Jaky
il campo è pronto..manca solo il move...solo.. @_@

ste84
ciao ragazzi, una domanda..
come avete risolto il problema che potrebbero dare le goose di un loop infinito appunto di salto di goose?

mi spiego con un esempio..

3 1 J G G 1 T

il Player è nella prima casella (3) lancia il dado, fa 4 va sulla seconda G, quindi raddoppia e quindi fa 1 T poi rimbalza 1 G e quindi di nuovo una goose!
e cosi via!
voi come avete risolto?
a proposito.. è giusto fare cosi comesto facendo e cioè che se il player non arriva perfettamente sul Traguardo rimbalza indietro?
oppure vince chi arriva al Traguardo anche se non con un numero perfetto?

altro dubbio:

3 1 J G 1 -1 B

in questo caso il player parte sempre dalla prima (3), lancia il dado e fa 3, capita sulla G quindi raddoppia e capita sulla B, torna indietro di 3(come da specifiche) e quindi di nuovo sulla G!
anche questo sarebbe un ciclo infinito..
voi come lo risolvete?

spero di essere statoabbastanza chiaro :D

Supernick
il campo è pronto..manca solo il move...solo.. @_@


Idem, anche a me manca "solo" il move.

@ste84: non credo sia un nostro problema occuparci dei loop che si possono generare in una partita, comunque si la questione che se va sul T ma ha tirato un numero più alto sisi rimbalza indietro

ste84
grazie per la rapida risposta,anche se non sono molto convinto che non sia un nostro problema :D

Pupino
Originally posted by Jaky
il campo è pronto..manca solo il move...solo.. @_@


Anche a me!!!! :D :D :D

:asd:

Supernick
grazie per la rapida risposta,anche se non sono molto convinto che non sia un nostro problema


Beh, ma alla fine è una normalissima cosa che potrebbe verificarsi, perchè comunque il tizio che va in loop continua ad accumulare punti, nel frattempo (sempre che non vadano in loop tutti e 4, e li è proprio sf1ga) appena arrivano su T termina la partita e chi ha accumulato di più vince.

Curiosità, voi come e dove avete gestito il controllo dei percorsi spezzati?

Io ho usato un marcatore che va a marcare gli elementi su il primo percorso disponibile, e praticamente alla fine di ciò devono rimanere solo elementi marcati o elementi vuoti, altrimenti ecccccccezione:D

Pupino
Nella classe Player si legge tra gli attributi:

?? position: variabile di istanza che conserva la posizione corrente del giocatore all' interno del campo di gioco; il tipo non è specificato perché la scelta è lasciata a voi.

- si parla di variabilE.


Voi come avete fatto??

Supernick
io ho messo una matrice, che però vado a settare tramite un setPosition(int x, int y)

AnTHrAx
anche a me manca "solo" il move :|

e non so bene come gestire le cose...
nn so se dichiarare position come una matrice :|

Pavo88
se mettete position come una string poi con il tokenizer vi salvate la posizione corrente, o anke con il charat, se la mettete sempre uguale, ma è meglio il tokenizer. secondo me.

Jaky
si lavora su una matrice..perchè array o tokinizer o altre robe? bastano due int scusate, che identificano la posizione nella matrice :|

towl88
Originally posted by Jaky
si lavora su una matrice..perchè array o tokinizer o altre robe? bastano due int scusate, che identificano la posizione nella matrice :|

ma scusa se fai il tokenizer non è + tranquillo rispetto a quello di creare un array con solo due posizioni????

Pavo88
ma poi, mi spieghi come fai a mettere in una sola variabile 2 int se non usi una string?

towl88
esatto

Jaky
scusate ma...mica è detto che la posizione sia cofidicata in un'unica variabile! nessuno ti vieta di usarne 2

Supernick
Anche perchè non vedrei strategie migliori.....e poi non ho capito scusate....perchè usare StringTokenizer ecc...????

ma poi, mi spieghi come fai a mettere in una sola variabile 2 int se non usi una string?


Scusate...

basterebbe semplicemente

protected int position[];
..
.
.
.
.
void setPosition(int x, int y)
position[0]=x;
position[1]=y;

così non dovete fare tokenizer e chissà che altro, vi fate due metodi getX e getY che vi tornano rispettivamente position[0] e position[1] no???

towl88
va beh alla fine fanno la stessa cosa....era perchè così almeno nn c'erano problemi col position del toString di player...cioè almeno gli mettevi subito la stringa lì dentro e amen...però vanno bene entrambi i modi...

Supernick
Mah secondo me qui ci stiamo facendo paranoie per niente sul fatto se abbiamo/non abbiamo sbagliato a scegliere il tipo di varibile per position.....alla fine c'è scritto, la scelta è libera

towl88
infatti....^_^... l'importante è che qualsiasi cosa si scelga funzioni giusto?

Pavo88
si in effetti l'array non sarebbe scomodissimo...ci penso
grazie

jack1189
ma raga non riesco a capire bene cosa deve dare il metodo getBoard(),in pratica deve ritornare una stringa che rappresenta il campo da gioco?non basta chiamare il ToString()????

Supernick
da quello che ho capito (ma non ne sono sicuro aspettiamo altri pareri)
toString() lo usi per la ritornare la stringa non codificata, quindi del tipo 1 E.2 S.1 -1 ecc..... il getBoard invece potrebbe ritornare la stringa E S S -1, anche se comunque non lo sto utilizzando per GameOfTheGoose, in quanto ho bisogno di lavorare su istanze di Piece e non su stringhe

jack1189
toString in parole povere estrapola l'ultima riga dal file contenuto in filename.....poi questa stringa si da in pasto a setBoard che pensa a creare la matrice.....

xbx12
si ma il toString deve controllare che l'ultima stringa nn sia stata cambiata....

kimin@
Originally posted by Pupino
Nella classe Player si legge tra gli attributi:

?? position: variabile di istanza che conserva la posizione corrente del giocatore all' interno del campo di gioco; il tipo non è specificato perché la scelta è lasciata a voi.

- si parla di variabilE.


Voi come avete fatto??


altra domandina...
ma secondo voi il player deve avere anche la dimensione della board come attributi??

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate