Poky, 0.5 senza GUI

« Older   Newer »
  Share  
I.Ren
CAT_IMG Posted on 20/6/2010, 23:07     +1   -1




21/6/10 - fixato bug trovato da Mhack.

___

Stasera sono andato a giocare a poker Texas Hold Hem con miei amici e la mia mente geniale (mica tanto) ha pensato bene di fare un programma per calcolare le probabilità di uscita di una carta o di un'altra per vincere di più. Per il momento è senza GUI, provvederò a farla, ma l'algoritmo di base è questo:

SPOILER (click to view)
;;; VARIABILI DELLE CARTE ;;;
Dim $assi[4] = [1,1,1,1] ;cuori, picche, fiori, quadri
Dim $numeri[10] = [1,1,1,1,1,1,1,1,1,1] ;cuori, picche, fiori, quadri
Dim $q[4] = [1,1,1,1] ;cuori, picche, fiori, quadri
Dim $j[4] = [1,1,1,1] ;cuori, picche, fiori, quadri
Dim $k[4] = [1,1,1,1] ;cuori, picche, fiori, quadri
;;; VARIABILI DEL GIOCATORE ;;; (CAMBIARE A SECONDA DELLE CARTE IN MANO e A SECONDA DELLE CARTE FUORI)

;esempio: tolgo due assi, tre numeri, e 2 j
$assi[0] = 0
$assi[1] = 0
;... tre numeri
$numeri[0] = 0
$numeri[1] = 0
$numeri[2] = 0
;... 2 j
$j[0] = 0
$j[1] = 0
;;; DICHIARO x (che servirà a calcolarmi le carte tolte) E y (che servirà a calcolarmi tutte le carte tolte) E cartetot (le carte totali nel mazzo)
Global $x
Global $cartetot = 52
Global $y
;;; DICHIARAZIONE $arr_prob (array contenente tutte le probabilità) 0 = asso | 1 = numero | 2 = q | 3 = j | 4 = k ;;;
Dim $arr_prob[5]
Dim $arr_nomi[5] = ['Asso','Numero','Q','J','K']
;;; CALCOLO DI Y ;;;
For $i = 0 To 3
If $assi[$i] = 0 Then $y = $y + 1
Next
For $i = 0 To 9
If $numeri[$i] = 0 Then $y = $y + 1
Next
For $i = 0 To 3
If $q[$i] = 0 Then $y = $y + 1
Next
For $i = 0 To 3
If $j[$i] = 0 Then $y = $y + 1
Next
For $i = 0 To 3
If $k[$i] = 0 Then $y = $y + 1
Next
;;; CALCOLO DELLA PROBABILITA' ;;;
For $i = 0 To 3
If $assi[$i] = 0 Then
$x = $x + 1
$arr_prob[0] = 4-$x&'/'&($cartetot-2)-$y&@TAB&'('&StringTrimRight(Execute((4-$x)/($cartetot-(2+$y)))*100,StringLen(Execute((4-$x)/($cartetot-(2+$y)))*100)-4)&'%)'
EndIf
Next
$x = 0
For $i = 0 To 9
If $numeri[$i] = 0 Then
$x = $x + 1
$arr_prob[1] = 9-$x&'/'&($cartetot-2)-$y&@TAB&'('&StringTrimRight(Execute((9-$x)/($cartetot-(2+$y)))*100,StringLen(Execute((9-$x)/($cartetot-(2+$y)))*100)-4)&'%)'
EndIf
Next
$x = 0
For $i = 0 To 3
If $q[$i] = 0 Then
$x = $x + 1
$arr_prob[2] = 4-$x&'/'&($cartetot-2)-$y&@TAB&'('&StringTrimRight(Execute((4-$x)/($cartetot-(2+$y)))*100,StringLen(Execute((4-$x)/($cartetot-(2+$y)))*100)-4)&'%)'
EndIf
Next
$x = 0
For $i = 0 To 3
If $j[$i] = 0 Then
$x = $x + 1
$arr_prob[3] = 4-$x&'/'&($cartetot-2)-$y&@TAB&'('&StringTrimRight(Execute((4-$x)/($cartetot-(2+$y)))*100,StringLen(Execute((4-$x)/($cartetot-(2+$y)))*100)-4)&'%)'
EndIf
Next
$x = 0
For $i = 0 To 3
If $k[$i] = 0 Then
$x = $x + 1
$arr_prob[4] = 4-$x&'/'&($cartetot-2)-$y&@TAB&'('&StringTrimRight(Execute((4-$x)/($cartetot-(2+$y)))*100,StringLen(Execute((4-$x)/($cartetot-(2+$y)))*100)-4)&'%)'
EndIf
Next
$x = 0
For $i = 0 To 4
If $arr_prob[$i] = '' Then
$arr_prob[$i] = '4/'&($cartetot-2)-$y&@TAB&'('&StringTrimRight(Execute((4-$x)/($cartetot-(2+$y)))*100,StringLen(Execute((4-$x)/($cartetot-(2+$y)))*100)-4)&'%)'
EndIf
Next
;;; OUTPUT DI OGNI PROBABILITA' ;;;
Local $a
For $i = 0 To 4
ConsoleWrite($arr_nomi[$i]&':'&@TAB&$arr_prob[$i]&@crlf)
$a &= $arr_nomi[$i]&':'&@TAB&$arr_prob[$i]&@crlf
Next
MsgBox(0,'Risultati:',$a)


L'ho quasi interamente commentato quindi credo sia facile da capire, ma se ci sono incertezze chiedete!

Per mettere le carte che sono uscite dal mazzo e che avete in mano dovete fare:

$nomecarta[numero] = 0

ad esempio, avete in mano un J e un 2. Scriverete:

$j[0] = 0
$numeri[0] = 0

e poi, dalla mano prima, sono usciti un k, un asso, un 3, un q e un j. Scriverete dunque la mano attuale (j e 2) + quelli usciti dalla mano precedente:

$j[0] = 0
$numeri[0] = 0
$k[0] = 0
$asso[0] = 0
$numeri[1] = 0
$q[0] = 0
$j[0] = 0

Se questo non vi è chiaro chiedete che cercerò di spiegarmi meglio.

Esempio di output: (avevo tolto due assi, tre numeri, e 2 j)

Asso: 2/43 (4.65%)
Numero: 6/43 (13.9%)
Q: 4/43 (9.30%)
J: 2/43 (4.65%)
K: 4/43 (9.30%)

Commentate :)

Edited by I.Ren - 21/6/2010, 13:25
 
Top
MHack
CAT_IMG Posted on 20/6/2010, 23:14     +1   -1




Wow, guarda chi si vede! Vieni più spesso,no? Beh, sul codice avrei da dire che mancano "delle carte", mancano un pò di numeri. Comunque non sono 52 le carte?
 
Top
ACIDBURN16
CAT_IMG Posted on 21/6/2010, 08:30     +1   -1




Quoto, ma perchè non rimani?
 
Top
Lahace
CAT_IMG Posted on 21/6/2010, 08:51     +1   -1




mhack le carte da poker (o da hold'em) sono asso, re, donna, fante, 10, 9, 8,7 di ogni seme
 
Top
MHack
CAT_IMG Posted on 21/6/2010, 09:00     +1   -1




Si lo so, io gioco a poker con i miei amici. Ma a prima vista mi sembrava sbagliato, perchè la probabilità si calcola con gli elementi "esistenti", quindi se togli 20 carte, la probabilità sarà di 1 asso su 30 carte. O no?
 
Top
I.Ren
CAT_IMG Posted on 21/6/2010, 09:07     +1   -1




Infatti è così.

Ho semplicemente sbagliato io lì, rimedio dopo che ora c'ho da fare. Ieri non m'ero accorto, grazie per avermelo fatto notare :)
 
Top
MHack
CAT_IMG Posted on 21/6/2010, 09:10     +1   -1




Di niente. ;)
 
Top
I.Ren
CAT_IMG Posted on 21/6/2010, 11:01     +1   -1




Sistemato. (anche l'output d'esempio.)

E' leggermente più complicato ma niente di impossibile. E poi è tutto commentato. :D

Ora inizio a farci la GUI.
 
Top
qwerty2
CAT_IMG Posted on 21/6/2010, 18:41     +1   -1




nice
 
Top
MHack
CAT_IMG Posted on 21/6/2010, 20:52     +1   -1




Good! ;)
 
Top
9 replies since 20/6/2010, 23:07   139 views
  Share