PDA

Visualizza la versione completa : E' vero che chi comincia prima a scopa ha un vantaggio?


Pella86
15-04-2012, 13:38
Ciao a tutti,
finalmente sono riuscito a programmare il gioco di scopa in python.

Il gioco funziona da terminale, non ho avuto di tempo di farci la grafica.

Il gioco è a 4 giocatori, 2 squadre.

Ho fatto la simulazione con 4 giocatori CPU che lanciano le carte a random.

Ho contato i punti totali (scopa/e, primera, settebello, ori e carte) o partite vinte o perse.
Ho fatto giocare il computer 100 volte e ho sommato i risultati poi li ho espressi in %ale.
Ho ripetuto la simulazione 100 volte, cosi ho 100 risultati che se oscillavano attorno al 50% sapevo che non ci sarebbe stato nessuno vantaggio se si iniziava primi.

ora se si guardano solo le partite vinte o perse: il 53.19% viene vinto dal primo
se si sommano i punti il primo ha il 58.89% in piu dei punti rispetto al secondo.
vedi grafico... bias sul primo: partite vinte o perse, bias sul primo punti: somma dei punti

http://i.minus.com/jbeRYZBcRpBNQE.png grafico (http://i.minus.com/jbeRYZBcRpBNQE.png)

Dunque si c'è un vantaggio, e se si sommano i punti si ha un vantaggio più alto!

Ciò che mi ha bloccato per tanto tempo è il fatto che si possono prendere più carte lanciando una singola. Ma con un alberello sono riuscito a risolverlo yeeh!

codice [Python]:
GiocoScopa.py (http://pastebin.com/FCzY0KHY)
sum_problem_card.py (http://pastebin.com/k7zM8L54)

:unz:

ps. naturalmente se i giocatori sanno giocare le percentuali cambiano... ma di base il primo parte avvantaggiato anche se gioca a caso :98:

kuarl
15-04-2012, 13:53
puoi farci una pubblicazione scientifica. E' possibile che te lo prendono su un qualche journal importante :mem:



:D

Pella86
15-04-2012, 13:58
Originariamente inviato da kuarl
puoi farci una pubblicazione scientifica. E' possibile che te lo prendono su un qualche journal importante :mem:
:D

miravo a science :malol:

cmq se al posto di:


a = Analysis()
a.run_stats()
a.print_stats()

si scommentano queste righe:


# players = [Human("Me"), IA("g2"), IA("g3"), IA("g4")]
# m = Match(players)
# m.turn()

si può giocare contro il pc... (noioso perchè l'IA non sa giocare)

Ranma2
15-04-2012, 14:11
Originariamente inviato da Pella86
miravo a science :malol:

cmq se al posto di:


a = Analysis()
a.run_stats()
a.print_stats()

si scommentano queste righe:


# players = [Human("Me"), IA("g2"), IA("g3"), IA("g4")]
# m = Match(players)
# m.turn()

si può giocare contro il pc... (noioso perchè l'IA non sa giocare)

difficile definirla IA allora :D

Pella86
15-04-2012, 14:23
Originariamente inviato da Ranma2
difficile definirla IA allora :D

non pretendiamo troppo, avevo già difficoltà a programmare le regole di base :zizi:

Ranma2
15-04-2012, 14:26
Qualche anno fa avevo programmato il gioco di Uno! in mIRC script, la IA era stata programmata sul mio gioco, non era impossibile batterla, ma era bella tosta.

Quando giocava contro di me le partite erano infinite :D

Davide
15-04-2012, 14:30
Originariamente inviato da kuarl
puoi farci una pubblicazione scientifica. E' possibile che te lo prendono su un qualche journal importante :mem:


difficile, se prima non corregge come ha scritto "avvantaggiato" :facepalm: :dottò:

Pella86
15-04-2012, 14:36
Originariamente inviato da Davide
difficile, se prima non corregge come ha scritto "avvantaggiato" :facepalm: :dottò:

meh... da quando studio in un paese con lingua straniera il livello del mio italiano (non che fosse aulico) è sceso ai minimi storici... :dhò:

Mauz®
15-04-2012, 17:04
Che io sappia, a scopa il vantaggio ce l'ha chi è di mazzo, ovvero chi dà le carte e quindi gioca per ultimo e può permettersi di guardare il gioco dell'avversario e aspettare che gli arrivino le carte pregiate. ;)

Poi bisogna vedere se consideri la scopa normale o quella d'assi. In quel caso un ulteriore vantaggio è dato a chi si ritrova in mano l'asso bello e quindi può puntare alla nappola, a differenza degli avversari. E in ogni caso anche gli "assi brutti" sono pur sempre una comodità, perchè ti permettono di spazzare il tavolo per portare via carte buone (ori, sei, sette ecc) o pericolose (due brutto, tre brutto e altre carte a seconda di come sta andando la partita) e/o sbrogliare situazioni contorte in cui non hai carte "sicure" da scartare e/o di spazzare il tavolo per mettere in difficoltà l'avversario (che dovrà essere abile nel non mettere in tavola una carta "scopabile" dal tuo compare). :D

Insomma... Nel suo piccolo è una scienza! Al bar sotto casa vedo sempre certi "campioni"... :D

mamo139
15-04-2012, 17:16
stai dando per scontato che una partita giocata casualmente presenti le stesse caratteristiche di una partita giocata con strategia.

Hai solo dimostrato che giocando casualmente è meglio essere primi. Ma possiamo davvero essere sicuri che tale regola continui a valere anche quando il gioco non è casuale?

Non essendoci un AI che prova a vincere coerentemente con le regole del gioco (a volte ad esempio puo convenire non prendere anche se si può, o fare una presa piuttosto che un'altra.

per quel che poi puo contare io ho sempre avuto la sensazione che sia piu vantaggioso essere ultimi (ad esempio si puo proteggere meglio la primiera, i denari, il 7 e il re bello).

Loading