Code : Tout sélectionner
#include <GUIConstantsEx.au3>
#Include <Array.au3>
#Include <File.au3>
; array pour l'affichage des cartes tirées dans les labels
Global $def[4][3] = [["pique", 9824, "0x000000"], _
["coeur", 9829, "0xff0000"], _
["carreau", 9830, "0xff0000"], _
["trefle", 9827, "0x000000"]]
; array $cartes pour la correspondance carte-points
Dim $FileList = _FileListToArray(@ScriptDir & "\cartes\", "*.jpg", 1)
Dim $cartes[$FileList[0]+1][2]
$cartes[0][0] = $FileList[0]
For $i = 1 To $FileList[0]
$cartes[$i][0] = $FileList[$i]
If StringRegExp($FileList[$i], '[23456]') Then $cartes[$i][1] = 1
If StringRegExp($FileList[$i], '[789]') Then $cartes[$i][1] = 0
If StringRegExp($FileList[$i], '1|[VDR]') Then $cartes[$i][1] = -1
Next
Global $travail = $cartes
;_ArrayDisplay($cartes)
Global $total = "", $pic, $labelcouleur, $labelnom, $labelpoints
Global $labeltotal, $timercheck=0, $nb=0, $labeltirage, $tirage=0, $show=1
$gui = GuiCreate("cartes", 200, 240)
$pic = GUICtrlCreatePic("", 10, 10, 60, 85) ; affichage de l'image
GuiCtrlCreateLabel("carte :", 90, 13, 40, 20)
$labelcouleur = GuiCtrlCreateLabel("", 140, 00, 20, 30)
GUICtrlSetFont (-1, 20, 400, 0, "Arial Unicode MS")
$labelnom = GuiCtrlCreateLabel("", 165, 13, 20, 20)
GuiCtrlCreateLabel("points :", 90, 35, 40, 20)
$labelpoints = GuiCtrlCreateLabel("", 150, 35, 20, 20)
GuiCtrlCreateLabel("total :", 90, 60, 40, 20)
$labeltotal = GuiCtrlCreateLabel("", 150, 60, 20, 20)
GuiCtrlCreateLabel("tirage :", 90, 85, 40, 20)
$labeltirage = GuiCtrlCreateLabel("", 150, 85, 20, 20)
$btn = GuiCtrlCreateButton("manuel", 20, 110, 60, 25)
$btntimer = GuiCtrlCreateButton("start timer", 90, 110, 90, 25)
GuiCtrlCreateLabel("timer (en ms) :", 20, 145, 70, 20)
$input1 = GuiCtrlCreateInput("1500", 100, 142, 40, 18)
GuiCtrlCreateLabel("nb de tirages :", 20, 170, 70, 20)
$input2 = GuiCtrlCreateInput("5", 100, 167, 20, 18)
GuiCtrlCreateLabel("(timer)", 130, 170, 70, 20)
$reset= GuiCtrlCreateButton("reset", 20, 200, 60, 25)
$affichage = GuiCtrlCreateButton("cacher", 90, 200, 90, 25)
GuiSetState()
While 1
$msg = GuiGetMsg()
Switch $msg
Case -3
Exit
Case $btn ; tirage manuel
_Tirage()
Case $affichage
_HideShow()
Case $reset
_Reset()
Case $btntimer ; timer
$timercheck = not $timercheck
If $timercheck Then
If GuiCtrlRead($input2)<1 Then GuiCtrlSetData($input2, 1)
If GuiCtrlRead($input2)>52 Then GuiCtrlSetData($input2, 52)
$nb = 0
GuiCtrlSetData($labeltirage, "")
GuiCtrlSetState($reset, $GUI_DISABLE)
_Tirage()
GuiCtrlSetData($btntimer, "stop timer")
$frequence = GuiCtrlRead($input1)
If $frequence < 600 Then $frequence = 600
AdlibRegister("_Tirage", $frequence)
Else
GuiCtrlSetState($reset, $GUI_ENABLE)
GuiCtrlSetData($btntimer, "start timer")
AdlibUnRegister("_Tirage")
EndIf
EndSwitch
Wend
Func _Reset()
$nb = 0
$total = 0
$timercheck = 0
GuiCtrlDelete($pic)
$pic = GUICtrlCreatePic("", 10, 10, 60, 85)
GuiCtrlSetData($labelcouleur, "")
GuiCtrlSetData($labelnom, "")
GuiCtrlSetData($labeltirage, "")
GuiCtrlSetData($labeltotal, "")
GuiCtrlSetData($labelpoints, "")
$travail = $cartes
EndFunc
Func _HideShow()
If $show Then
GuiCtrlSetState($labelpoints, $GUI_HIDE)
GuiCtrlSetState($labeltotal, $GUI_HIDE)
GuiCtrlSetData($affichage, "montrer")
Else
GuiCtrlSetState($labelpoints, $GUI_SHOW)
GuiCtrlSetState($labeltotal, $GUI_SHOW)
GuiCtrlSetData($affichage, "cacher")
EndIf
$show = not $show
EndFunc
Func _Tirage()
$nb += 1
GuiCtrlSetData($labeltirage, $nb)
Local $tire = Random(1, UBound($travail)-1, 1)
If $tire = 0 Then $tire = 1
GuiCtrlSetImage($pic, "cartes\" & $travail[$tire][0])
Local $split = StringSplit($travail[$tire][0], "_")
GuiCtrlSetData($labelnom, $split[1])
For $i = 0 to UBound($def)-1
If StringTrimRight($split[2], 4) = $def[$i][0] Then
GuiCtrlSetData($labelcouleur, ChrW($def[$i][1]))
GUICtrlSetColor ($labelcouleur, $def[$i][2])
EndIf
Next
GuiCtrlSetData($labelpoints, $travail[$tire][1])
$total += $travail[$tire][1]
GuiCtrlSetData($labeltotal, $total)
_ArrayDelete($travail, $tire)
If $timercheck Then
If $nb = GuiCtrlRead($input2) Then
$timercheck = not $timercheck
GuiCtrlSetData($btntimer, "start timer")
AdlibUnRegister("_Tirage")
$nb = 0
GuiCtrlSetState($reset, $GUI_ENABLE)
EndIf
Else
If $nb = 52 Then $travail = $cartes
EndIf
EndFunc