Ancora briscola...
Massimo Masson
massimo@mail.studiomasson.it
Mer 21 Set 2005 01:38:18 CEST
Alberto Fornasier wrote:
[...]
> Stanotte, dato che ho dormito poco e male, mi sono fatto un'idea di come
> dovrebbe ragionare il giocatore-pc. Bisognerebbe dotarlo di una memoria
> delle carte giocate (configurabile in estensione, così si regola la
> difficoltà) e fargli prendere decisioni di conseguenza.
> Traduzione: dovrebbe essere in grado, all'ultima mano, di sapere le
> carte che ha in mano l'avversario (ci arrivo pure io che sono
> ultrascarso).
Innanzitutto ti ringrazio per la collaborazione algoritmica! :)
In effetti, allo stato attuale la funzione "empirica" gioca senza
memoria, valuta solo le carte "in mano".
Tuttavia, se scarichi il .tgz c'è un foglio di calcolo (in formato
openoffice) dove ho riportato uno schema di probabilità di vincita di
ogni carta, alla prima mano.
L'idea finale su cui stavo lavorando ("finale" nel senso che poi ho
smesso di pensarci, perchè dopo le vacanze avevo tutt'altro da fare...)
sarebbe quella di ricalcolare dinamicamente nel programma quella tabella
ad ogni mano (questo non è affatto difficile, bastano due o tre metodi
nuovi ad alcune classi che già ci sono) per poi scegliere la carta con
il criterio "empirico" attuale, mediato però dalle variazioni di
probabilità dello storico. In questo modo si aggiungerebbe la "memoria"
delle carte uscite.
Mi ero fermato sulla questione della scelta una volta calcolato il
numero di carte contro cui si perde o si vince, se vengono fuori idee
interessanti le implementiamo!!! :)
L'alternativa a questo metodo sarebbe un "classico" albero di ricerca,
per cui stabilire la profondità di analisi, come dicevi tu, anche se non
sono del tutto convinto che sia il metodo migliore in un gioco come
questo (e temo che non sia nemmeno il più "divertente" da
implementare!!! ;) )
In ogni caso, si possono facilmente implementare più algoritmi di gioco,
per poi scegliere quello che si vuole...
> Appena capisco bene come si incastrano i vari pezzi comincio a
> "lavorarci".
Ottimo! Grazie!!! :)
> Bel gioco, veramente! Lo presentiamo al Linux Day?
Non ci avevo pensato, ma non ho nulla in contrario, anzi se siete tutti
d'accordo si può fare...
In effetti a giugno avevo proposto un talk sullo sviluppo
platform-independent, e questo ne sarebbe certamente un esempio...
> Si potrebbe trasformarlo in una raccolta di giochi, come PySol è per i
> solitari (magari prendendo a prestito un po' di sorgente).
Se guardi la paginetta internet che ho fatto (o se guardi i sorgenti)
vedi che in smBrisCola c'è smCarte, che è un componente del modellino ad
oggetti su cui Briscola è costruito.
L'idea era proprio quella di sviluppare un componente per i giochi di
carte (generico) su cui poi costruire diversi card-games. La briscola è
in effetti solo il primo.
Approfitto per una descrizione:
Al primo livello il "framework" definisce alcune classi base: carte,
giocatore, mazzo, tavolo. Da mazzo derivano mazzo_italiano e
mazzo_francese (eventualmente con jolly).
Al secondo livello Briscola eredita ed estende tali classi, aggiungendo
caratteristiche e metodi che simulano proprio la briscola. In più si
definisce una classe che consente di giocare a terminale (caratteri).
Al terzo livello l'interfaccia grafica comunica con gli oggetti
Briscola, per implementare il gioco. La gui è costruita con wxGlade.
Tutto questo per confermare che la strada di trasformare in una raccolta
di giochi è una via delineata dall'inizio... anche se a voler essere
onesti si dovrebbe far evolvere anche la gui in un sistema a doppio
livello, per riutilizzare il più possibile. Ma questo dipende molto
anche dal gioco specifico.
Adesso, comunque, buonanotte a tutti!
Max.py
Maggiori informazioni sulla lista
blug