PDA

View Full Version : aiuto esame java!


leomeya
07-09-2005, 20:16
ragazzi devo fare un'applicazione in java non javascript ad esempio dama o forza 4 con intelligenza artificiale del pc quindi ovviamente modalita' "1 player vs pc".
se ne trovano in giro pero' non trovo i file sorgente voi ne avete uno gia' fatto? la dama sarebbe il top! :sofico:

vi ringrazio in anticipo conoscendo la vostra gentilezza saprete sicuramente aiutarmi! ;)

pinok
07-09-2005, 23:35
Non ti puoi buttare su un classico tic-tac-toe che credo abbia meno regole da implementare, così puoi impegnartici direttamente senza cercarlo in giro ;) ??

71104
07-09-2005, 23:39
una dama con intelligenza artificale per un esame?!? :eek:
e meno male che è in Java... ma a che anno stai? ve l'hanno spiegato al corso come fare?
io una mezza idea ce l'avrei, se il grosso del tuo problema sta nel realizzare l'AI: il programma deve analizzare tutte le possibili mosse del giocatore (solo fino a un certo punto, altrimenti la previsione diventa troppo lunga) e cercare quella che gli procurerà la situazione migliore, cioè la situazione in cui avrà più mosse dell'avversario; di conseguenza quello che devi fare è:
1) memorizzare tutte le possibili mosse che puoi fare
2) per ciascuna delle possibili mosse, avviare una simulazione della continuazione partita, eseguendo la mossa corrente come prima mossa della simulazione (ovviamente)

parte la simulazione e a ciascuno "stadio" la simulazione deve essere continuata per ogni possibile mossa dell'avversario, dopodiché la stessa cosa, ma di nuovo con le possibili mosse del computer; un algoritmo insomma abbastanza facilmente implementabile in maniera ricorsiva.

3) ciascuna simulazione deve arrivare solo fino a un certo livello massimo di "profondità di analisi", giunti al quale devi memorizzare la situazione corrente (cioè quante pedine hai tu e quante ne ha il giocatore) associandola all'intero path necessario per arrivarci (la serie di mosse simulate)
4) alla fine di tutte le simulazioni avrai un array che ti sei costruito man mano dove hai memorizzato delle associazioni path-punteggio
5) calcola qual è il punteggio migliore in base al numero di pedine che hai di più dell'avversario; magari le dame falle valere il doppio delle pedine semplici
6) scegli la mossa che ha punteggio maggiore ed eseguila; se ce ne sono più d'una scegline una a caso.

EDIT: a proposito, naturalmente il livello della profondità dell'analisi dipende dalla difficoltà di gioco scelta dall'utente; sarai tu a tarare il gioco in maniera tale da fare associazioni ragionevoli tra livello di difficoltà e corrispondente profondità di analisi.

71104
07-09-2005, 23:39
Non ti puoi buttare su un classico tic-tac-toe che credo abbia meno regole da implementare, così puoi impegnartici direttamente senza cercarlo in giro ;) ?? il tic tac toe non ha affatto meno regole rispetto al Forza 4 ;)

pinok
08-09-2005, 01:14
il tic tac toe non ha affatto meno regole rispetto al Forza 4 ;)
Quello che intendevo è che, se lo scopo è programmare in Java, e trattandosi di una matrice 3x3, il tic tac toe potrebbe essere implementato anche senza addentrarsi nei problemi dell'AI, semplicemente schematizzando le varie mosse (che si dovrebbero poter ridurre sfruttando la simmetria della matrice).
Joshua docet ;)


Con forza 4, questo tipo di approccio diventa più complicato e pesante.

Se l'obiettivo è invece prendere dimestichezza con l'implementazione di algoritmi AI, credo che Java e la dama introducano livelli di complicazione che allontanano un po' dal target.

leomeya
08-09-2005, 09:17
è un semplicissimo laboratorio da 4 crediti senza voto....solo un approvato!
è per questo che non mi voglio sbattere piu' di tanto e se avevate qualche cosa di gia' fatto era meglio!
lo scopo non è fare l'intelligenza artificiale bensi' vedere se uno sa fare un programma in java, pero' il prof vuole la modalita' uno contro il computer per qualsiasi gioco, quindi ci vuole un minimo di intelligenza artificiale..........ma giusto un minimo va bene anche se è deficienza artificiale! :D

leomeya
08-09-2005, 09:24
ciao ragazzi ho trovato qusta dama pero' è un javascript, c'e' la possibilita' di farne un'applicaione java??
http://www.html.it/jscript/giochi/giochi16.htm
sarebbe perfetta e molto carina.

shinya
08-09-2005, 09:28
è un semplicissimo laboratorio da 4 crediti senza voto....solo un approvato!
è per questo che non mi voglio sbattere piu' di tanto e se avevate qualche cosa di gia' fatto era meglio!
lo scopo non è fare l'intelligenza artificiale bensi' vedere se uno sa fare un programma in java, pero' il prof vuole la modalita' uno contro il computer per qualsiasi gioco, quindi ci vuole un minimo di intelligenza artificiale..........ma giusto un minimo va bene anche se è deficienza artificiale! :D

non e' un programma cosi' banale, mi sembra esagerato per un esame di laboratorio, ma dipende anche dalle nozioni che vi da dato il prof. Laboratorio di cosa?
cmq se sai programmare in java, e non hai bisogno di IA, basta che il computer scelta una mossa a caso tra quelle valide. Questo semplifica di molto il programma.

leomeya
08-09-2005, 10:27
ciao ragazzi ho trovato qusta dama pero' è un javascript, c'e' la possibilita' di farne un'applicaione java??
http://www.html.it/jscript/giochi/giochi16.htm
sarebbe perfetta e molto carina.

questo??

71104
08-09-2005, 10:42
è un semplicissimo laboratorio da 4 crediti senza voto....solo un approvato!
è per questo che non mi voglio sbattere piu' di tanto e se avevate qualche cosa di gia' fatto era meglio!
lo scopo non è fare l'intelligenza artificiale bensi' vedere se uno sa fare un programma in java, pero' il prof vuole la modalita' uno contro il computer per qualsiasi gioco, quindi ci vuole un minimo di intelligenza artificiale..........ma giusto un minimo va bene anche se è deficienza artificiale! :D allora potresti fare lo stesso algoritmo che ti ho descritto, ma con livello di profondità fisso a 1 :D
cioè calcoli tutte le possibili mosse e tra tutte scegli quella che ti procurerà la situazione migliore; se sono tutte mosse ugualmente valide, ne fai una a random.

NA01
08-09-2005, 12:04
per la dama (così come per tutti i giochi con una scacchiera) una delle più semplici tattiche da far adottare a un pc è quello di dare un valore ai pezzi e farli variare in base alla posizione.
è chiaro che un pedone all'ultimo passaggio prima di uno scambio deve avere maggiori attenzioni anche di un cavallo, di un alfiere ecc...
la stessa cosa a dama. sempre meglio avere una dama che una pedina!!!
per il resto su un gioco semplice come la dama puoi usare come ti è stato suggerito un pò di ricerca a babbo per vedere come si evolve la situazione, ma tieni conto che è un lavoro sempre molto pesante e che cresce con il numero delle mosse in modo esponenziale (e se non fai attenzione ti partono quintali di memoria).


ciao!

pinok
08-09-2005, 16:57
è un semplicissimo laboratorio da 4 crediti senza voto....solo un approvato!
è per questo che non mi voglio sbattere piu' di tanto e se avevate qualche cosa di gia' fatto era meglio!
lo scopo non è fare l'intelligenza artificiale bensi' vedere se uno sa fare un programma in java, pero' il prof vuole la modalita' uno contro il computer per qualsiasi gioco, quindi ci vuole un minimo di intelligenza artificiale..........ma giusto un minimo va bene anche se è deficienza artificiale! :D
Confermo il tic tac toe contro il computer ;)

Tu metti un simbolo e la risposta del computer è quella che, calcolate tutte le permutazioni, è quella più vicina alla vittoria. Se nessuna la garantisce, vai a caso tra quelle con peso maggiore.

Insomma, war games;)