PDA

View Full Version : [no linguaggio] problemi di implementazione


ramarromarrone
11-02-2008, 17:29
ciao a tutti
nel tempo libero lavoro a una implementazione del gioco monopoli ma ho un problema.

il problema è la gestione degli scambi/offerte.

come saprete nel monopoli prima di ogni turno ogni giocatore può fare offerte per acquistare/scambiare carte di un altro giocatore a cui è interessato

quindi ho pensato di creare un sistema di message passing in cui un giocatore A che è interessato a una certa carta di un altro giocatore B, crea un messaggio di richiesta ( che può essere offerta di denaro, scambio di carte) e lo inoltra nella mailbox del giocatore B, quando sarà il turno del giocatore B prima di iniziare analizzerà la lista di messaggi e deciderà se scambiare o meno o fare controproposte..

questo sistema è di per se abbastanza complesso e non è realistico, perchè nella realtà quando si gioca gli scambi e le proposte sono pubbliche e chiunque può parteciparvi e intromettersi, mentre così il tutto è in "segreto"... come si potrebbe fare?

amedeoviscido
11-02-2008, 17:33
Beh o invii a tutti le offerte di A e la risposta di B, oppure c'è bisogno di una terza entità C che scambia il messaggio con tutti gli altri...

ramarromarrone
11-02-2008, 17:38
Beh o invii a tutti le offerte di A e la risposta di B, oppure c'è bisogno di una terza entità C che scambia il messaggio con tutti gli altri...

eh ma diventa un casino...per di più...
facciamo finta che l'ordine di gioco sia A B C D E

B invia una richiesta a C di scambio, questo viene segnalato anche a A D E, ma il turno dopo è di C che controllando nella mailbox troverà solo il messaggio di B e gli altri non fanno in tempo ad avanzare controproposte...

^TiGeRShArK^
11-02-2008, 17:45
eh ma diventa un casino...per di più...
facciamo finta che l'ordine di gioco sia A B C D E

B invia una richiesta a C di scambio, questo viene segnalato anche a A D E, ma il turno dopo è di C che controllando nella mailbox troverà solo il messaggio di B e gli altri non fanno in tempo ad avanzare controproposte...
Le trattative devono essere effettuate al di fuori del turno.
In questo modo tutti possono partecipare contemporaneamente senza limitazioni.

MEMon
11-02-2008, 17:46
Semplice l'avanzamento di turno dovrebbe avvenire in questo modo:
1)Non c'è nessuna proprosta in coda-> avanzamento turno
2)C'è una proprosta in coda, ogni partecipante deve decidere se controproporre o "disiniteressarsi", quando la coda delle proposte è esaurita si passa al punto 1)

marra11mg
11-02-2008, 17:50
crea un nuovo thread e mandagli come parametro la "proposta" del giocatore che detiene il turno. Il thread si occuperà di smistare la richiesta agli altri giocatori, mentre il gioco procede nel thread principale

ramarromarrone
11-02-2008, 17:54
Le trattative devono essere effettuate al di fuori del turno.
In questo modo tutti possono partecipare contemporaneamente senza limitazioni.


Semplice l'avanzamento di turno dovrebbe avvenire in questo modo:
1)Non c'è nessuna proprosta in coda-> avanzamento turno
2)C'è una proprosta in coda, ogni partecipante deve decidere se controproporre o "disiniteressarsi", quando la coda delle proposte è esaurita si passa al punto 1)


cioè praticamente alla fine di ogni turno di gioco , a turno ogni giocatore invia le proprie proposte che vengono rese pubbliche, fatto questo si analizzano una per una...fatto questo si inizia il nuovo turno...

un pò macchinoso..anche perchè ci potrebbero essere parecchie proposte e finche il giocatore è controllato dal cumputer ci si mette poco ma se si gioca tra umani sto metodo non è molto comodo...

ramarromarrone
11-02-2008, 17:56
crea un nuovo thread e mandagli come parametro la "proposta" del giocatore che detiene il turno. Il thread si occuperà di smistare la richiesta agli altri giocatori, mentre il gioco procede nel thread principale

non pensavo di utilizzare i thread
e per ascoltare il thread comunque si deve sospendere il thread principale, inoltre funizona sei giocatori sono tutti umani? o se ci sono giocatori controllati dal computer l'IA come gestisce la situazione?

MEMon
11-02-2008, 18:04
cioè praticamente alla fine di ogni turno di gioco , a turno ogni giocatore invia le proprie proposte che vengono rese pubbliche, fatto questo si analizzano una per una...fatto questo si inizia il nuovo turno...

un pò macchinoso..anche perchè ci potrebbero essere parecchie proposte e finche il giocatore è controllato dal cumputer ci si mette poco ma se si gioca tra umani sto metodo non è molto comodo...

Capisco, ma nella realtà com'è che funziona(non sono molto pratico)?
Non si aspetta che finiscono tutte le trattative? O decide il diretto interessato se fermarle o procedere a giocare?

Quello che voglio dire è che basta che segui il modello reale, se il modello reale prevede interazione allora così sia.

ramarromarrone
11-02-2008, 18:08
Capisco, ma nella realtà com'è che funziona(non sono molto pratico)?
Non si aspetta che finiscono tutte le trattative? O decide il diretto interessato se fermarle o procedere a giocare?

Quello che voglio dire è che basta che segui il modello reale, se il modello reale prevede interazione allora così sia.

eh il modello reale funziona che se A fa una proposta a B, e io sono interessato alla carta che A chiede a B, oppure non voglio che A ottenga quella carta, mi intrometto e faccio una controproposta...il problema dell'implementazione è che ci possono essere una marea di controproste che il computer potrebbe far fatica a gestire...le code delle mailbox rischiano di diventare lunghissime anche perchè si potrebbe venire a creare una specie di asta ...

MEMon
11-02-2008, 18:10
Io fossi in te non mi preoccuperei minimamente di questo, i computer attuali sono sovradimensionati per quanto riguarda la capacità elaborativa.
Vai tranquillo che di sicuro non metti in difficoltà nulla che sia al di sopra di una 8086 :D

ramarromarrone
11-02-2008, 18:30
Io fossi in te non mi preoccuperei minimamente di questo, i computer attuali sono sovradimensionati per quanto riguarda la capacità elaborativa.
Vai tranquillo che di sicuro non metti in difficoltà nulla che sia al di sopra di una 8086 :D

il problema mio è gestire la situazione in maniera efficiente e simile alla realtà lo so anch'io che non ci sono problemi di calcolo :)