[T] Simulateur de courses (PMU)

Partagez vos scripts, et vos applications AutoIt.
Règles du forum
.
Répondre
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11773
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

[T] Simulateur de courses (PMU)

#1

Message par Tlem »

Message transféré de l'ancien forum.
Auteur : TerminAdminAtor
Date : 28/02/2007


Citation :

Salut à tous,

je vous présente un petit script de simulation de courses PMU que j'ai uniquement fait en tant qu'amateur de courses de chevaux pour voir des statistiques.

Je ne pense pas que ce script devrait être utile à quelqu'un,je le poste juste pour son contenu. Que ça soit claire:il ne vous permettra pas de gagner aux courses :!:

Je vous explique comment le programme fonctionne,il faut attribuer plusieurs valeurs à différentes variables: vous choisissez plusieurs courses,le nombre de course sera attribué à cette variable:

Code : Tout sélectionner

$courses = 8
ensuite il vous faudra,pour chaque course,le rapport pour le cheval sur lequel vous "misez",si vous jouez 1€ en gagnant (ou perdant si vous préféré),ces rapports peuvent être trouvé sur le site pmu ou dans des journaux... qu'on attribuera à la variable-tableau (ou array) $rapports.
ex.:
Global $rapports[9]
$rapports[0] = 0
$rapports[1] = 1.8
$rapports[2] = 2.5
$rapports[3] = 2.1
$rapports[4] = 2.4
$rapports[5] = 1.6
$rapports[6] = 1.9
$rapports[7] = 2.6
$rapports[8] = 2.1
ici je joue pour 8 courses,pour la première course j'ai misé sur un cheval qui a un rapport théorique de 1.8€ pour 1€ de misé,etc...$rapports[0]=0 ne nous sert pas,je n'aime juste pas utiliser des 0 dans mes boucles...

Ensuite il y a des calculs,de belles boucles,des compteurs ( des variables qui content les courses gagnées,celles perdues,l'argent gagné,perdue etc...),un fichier sera généré et puis le tout sera affiché à l'écran.

Pour faire toutes les possibilités,pour un nombre de courses donnée,j'utilise des "motifs".Ce sont de simples fichiers textes,avec à chaque ligne un motif (composé de 0 et 1,0 pour le cheval perds,1 le cheval gagne).
Ainsi le fichier motifs8.txt,contient toutes les possibilités pour 8 courses.

J'ai pas le temps d'intégrer le générateur de motifs dans le script central,mais c'est simple je pourrai le faire... je le poste avec.

Pour l'utiliser il faut changer la variavle $times,si je fais $times =10,ça me générera un fichier txt pour 10courses..vlà ^^j'espère que vous avez suivi 37% de ce que j'ai dit...(tu te demande pourquoi 37...héhé comme ça :!: )

-générateur de motif intégré,libraire de sauvegarde des motifs déjà générés en .../motifs/

Code : Tout sélectionner

#cs ----------------------------------------------------------------------------
    
    PMU SIMULATOR
#ce ----------------------------------------------------------------------------
#include <Array.au3>
#include <File.au3>
#include <GUIConstants.au3>
Global $total, $times = 100, $somme = 0, $chevo = 0, $benefMAX = 0, $benefMINI = 0, $compte, $totalG = 0, $courses = 10, $rand

$courses = InputBox("PMU-sim-config", "Combien de courses souhaitez vous simuler?")
If $courses < 1 Then Exit MsgBox(0, "erreurrrr", "Vous avez rentré un nombre nul ou négatif")
$zYiYu = $courses * 30
$_guiPREMIER = GUICreate("Configuration...", 200, $zYiYu)
GUICtrlCreateLabel("Entrez le rapport pour chaque cheval:", 10, 5)
Dim $IOJuhu[$courses]
For $i = 0 To $courses - 1
    $IOJuhu[$i] = GUICtrlCreateInput("", 20, 5 * $i + 20 + $i * (20), 60)
Next
$IJHuiefbh = GUICtrlCreateButton("OK", 91, 22, 100, 100)
GUISetState()
While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then Exit
    If $msg = $IJHuiefbh Then ExitLoop
WEnd


Global $rapports[$courses + 1]
$rapports[0] = 0
For $i = 1 To $courses
    $rapports[$i] = GUICtrlRead($IOJuhu[$i - 1])
    If $rapports[$i] < 1.1 Then Exit MsgBox(64, "erreurrrr", "Le rapport ne peut pas être plus petit que 1.1!")
Next


$file = @WorkingDir & '\PMU-sim.txt'

If FileExists($file) Then FileDelete($file)
#include <GUIConstants.au3>
$title = "Simulateur de courses PMU"
$title2 = "Progression des simulations"
$_guibarre = GUICreate($title2, 320, 50, -1, -1, -1, $WS_EX_TOPMOST)
$progress = GUICtrlCreateProgress(10, 10, 300, 30)
GUISetState()







$file2 = @WorkingDir & '\motifs\motifs' & $courses & '.txt'
While 1
    If Not FileExists($file2) Then CreaMotif($file2, $courses)
    If FileExists($file2) Then;vérification du fichier motif
        If _FileCountLines($file2) = 2 ^ $courses Then
            ExitLoop
        Else
            CreaMotif($file2, $courses)
        EndIf
    EndIf
WEnd

Global $perteTOTAL, $mise = $courses * 1.5
Dim $stats_neg[$courses + 1], $stats_pos[$courses + 1], $eachTIME_neg[$courses + 1], $eachTIME_pos[$courses + 1]
For $i = 1 To $stats_neg[0]
    $stats_neg[$i] = 'non simulé'
    $stats_pos[$i] = 'non simulé'
Next

$motif_brut = StringSplit(FileRead($file2), Chr(13))
If $motif_brut[0] = 1 Then MsgBox(0, 'pmu', $file2 & " n'existe pas !")
$times = $motif_brut[0]
For $i = 2 To $times Step 1
    $motif_brut[$i] = StringTrimLeft($motif_brut[$i], 1)
Next

Dim $_motif
For $i = 1 To $times Step 1
    $_motif = StringSplit($motif_brut[$i], '')

    $gagne = 0
    $perdu = 0
    $rGlob = 0
    $gains = 0

    For $abc = 1 To $courses Step 1
        
        $gains += $_motif[$abc] * 1.5 * $rapports[$abc]
        ranD($_motif[$abc])
    Next
    $benef = $gains - $mise
    If $gains > $mise Then;Bénéfice!
        $total += 1
        $somme += $benef
        If $benef > $benefMAX Then $benefMAX = $benef
        If $benefMINI > $benef Then $benefMINI = $benef
        
        $stats_pos[$gagne] += $benef
        $eachTIME_pos[$gagne] += 1
    Else;Perte :(
        $stats_neg[$gagne] += $benef
        $eachTIME_neg[$gagne] += 1
        $perteTOTAL += 1
    EndIf
    
    $compte += $gains
    
    FileWrite($file, '*****n°' & $i & '******' & @CRLF & 'Rapport courses gagnées/perdues: ' & $gagne & '/' & $courses & @CRLF & 'Mise : ' & $mise & '€' & @CRLF & 'Reçu : ' & $gains & '€' & @CRLF & 'Bénéfice : ' & $benef & '€' & @CRLF & @CRLF)


    If Random(0, 1, 1) Then GUICtrlSetData($progress, Round($i / $times * 100))
    
Next

$data = FileRead($file)
FileDelete($file)
FileWrite($file, @CRLF & "SIMULATEUR DE COURSES PMU" & @CRLF & @CRLF & "by TerminAdminAtor ~ http://autoit-fr.realbb.net/index.forum" & @CRLF & @CRLF & 'Nbre de simulations : ' & $times & @CRLF & @CRLF & _
        'Bénéfices/pertes total : ' & $total & '/' & $perteTOTAL & '    ' & @CRLF & 'Moyenne des bénéfices : ' & Round($somme / $times, 2) & '€' & '       ' & @CRLF & 'Moyenne de courses gagnantes par simulation : ' & $chevo / $times & @CRLF & "bénéfices max/min : " & $benefMAX & '€ /' & $benefMINI & '€' & @CRLF & _
        'Gains/mises total: ' & $compte & '€ /' & $times * $mise & '€' & @CRLF & 'Courses gagnantes/perdantes: ' & $totalG & '/' & $times * 16 & @CRLF)
FileWrite($file, @CRLF & @CRLF & 'Moyennes des simulations en fonction des courses gagnées' & @CRLF & @CRLF)



For $i = 1 To $courses Step 1
    If $stats_neg[$i] = '' Or $stats_pos[$i] = '' Then
        If $stats_neg[$i] = '' And Not $stats_pos[$i] = '' Then
            FileWrite($file, $i & ' / ' & $courses & '   =:=   moy.benef. ' & Round($stats_pos[$i] / $eachTIME_pos[$i], 2) & ' € ,  ' & $eachTIME_pos[$i] & 'x  /  -                                           ' & @CRLF)
        EndIf
        If $stats_pos[$i] = '' And Not $stats_neg[$i] = '' Then
            FileWrite($file, $i & ' / ' & $courses & '   =:=   ' & '-   /   ' & Round($stats_neg[$i] / $eachTIME_neg[$i], 2) & '€ ,  ' & $eachTIME_neg[$i] & '  x                                                 ' & @CRLF)
        EndIf
        If $stats_neg[$i] = '' And $stats_pos[$i] = '' Then
            FileWrite($file, $i & ' / ' & $courses & '   =:=   ' & '0€ / 0€                                                                           ' & @CRLF)
        EndIf
    Else
        FileWrite($file, $i & ' / ' & $courses & '   =:=   moy.bénéf. ' & Round($stats_pos[$i] / $eachTIME_pos[$i], 2) & '€ ,  ' & $eachTIME_pos[$i] & 'x  /   moy.perte ' & Round($stats_neg[$i] / $eachTIME_neg[$i], 2) & '€ ,  ' & $eachTIME_neg[$i] & 'x             ' & @CRLF)
    EndIf
Next


FileWrite($file, @CRLF & @CRLF & @CRLF & $data)



$_gui = GUICreate($title, 700, 500, -1, -1, $WS_SIZEBOX + $WS_MINIMIZEBOX + $WS_CAPTION + $WS_POPUP + $WS_SYSMENU + $WS_MAXIMIZEBOX)
GUISwitch($_gui)
$_IN = GUICtrlCreateEdit(@CRLF & @CRLF & "by TerminAdminAtor ~ http://autoit-fr.realbb.net/index.forum" & @CRLF & @CRLF, -1, -1, 700, 500, $ES_CENTER + $ES_WANTRETURN + $WS_VSCROLL)

WinSetTrans($title, "", 0)
GUISetState()
$data = FileRead($file)
$font = "Comic Sans MS"
GUICtrlSetFont(-1, 10, 400, -1, $font)
GUICtrlSetData($_IN, $data)
For $i = 0 To 255 Step 3
    WinSetTrans($title, "", $i)
    GUISwitch($_guibarre)
    WinSetTrans($title2, "", 255 - $i)
    GUISwitch($_gui)
Next
GUISwitch($_guibarre)
GUIDelete($_guibarre)
GUISwitch($_gui)



While 1
    $msg = GUIGetMsg()
    If $msg = $GUI_EVENT_CLOSE Then
        For $i = 0 To 255 Step 3
            WinSetTrans($title, "", 255 - $i)
        Next
        ExitLoop
    EndIf
WEnd
Exit


Func ranD($r)
    If $r = 0 Then $perdu += 1
    If $r = 1 Then
        $gagne += 1
        $chevo += 1
        $totalG += 1
    EndIf

    Return $r
EndFunc   ;==>ranD

Func CreaMotif($ecx, $oyu)
    WinSetTitle($title2, "", "Création des motifs")
    
    
    If FileExists($ecx) Then FileDelete($ecx)
    DirCreate(@WorkingDir & '\motifs')
    Local $r, $data, $exit = 0
    For $i = 1 To 2 ^ $oyu
        For $o = 1 To 1
            Do
                For $io = 1 To $oyu
                    $r &= Random(0, 1, 1)
                Next
                If StringLen($r) > $oyu Then $r = ''
            Until Not StringInStr($data, $r) And Not $r = ''
            FileWrite($ecx, $r & @CRLF)
            $r = ''
            $data = FileRead($ecx)
            
        Next
        GUICtrlSetData($progress, Round($i / (2 ^ $oyu) * 100))
        If $exit = 1 Then ExitLoop
    Next
    $data = FileRead($ecx)
    $data = StringTrimRight($data, 2)
    FileDelete($ecx)
    FileWrite($ecx, $data)
    WinSetTitle("Création des motifs", "", $title2)
    GUICtrlSetData($progress, 0)
EndFunc   ;==>CreaMotif
Répondre