Code : Tout sélectionner
#cs ----------------------------------------------------------------------------
AutoIt Version : 3.3.8.1
Auteur: Pierre LIEGEOIS, BTS IG, session 2012
Fonction du Script :
Alléger les calculs de lancer de dés pour Donjon et Dragon
#ce ----------------------------------------------------------------------------
; Début du script
;Bibliothèques
#include <ButtonConstants.au3>
#include <ComboConstants.au3>
#include <EditConstants.au3>
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
Func getValuesFromDice($string)
If Not StringRegExp($string, "^\d+d\d+$") Then Return SetError(1)
Local $result = StringSplit($string, "d")
$result[1] = Number($result[1])
$result[2] = Number($result[2])
Return $result
EndFunc
Func isState($controlState, $state)
Return BitAND($controlState, $state) = $state
EndFunc
;Interface graphique
#Region ### START Koda GUI section ### Form=
Global $Form1 = GUICreate("Calcul des lancers de dés", 821, 289, 192, 124)
;Groupe attaque
Global $Group1 = GUICtrlCreateGroup("Attaque", 24, 16, 537, 73)
Global $CBdegArme = GUICtrlCreateCombo("Degré de l'arme", 40, 56, 105, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "0|1|2|3|4|5|6|8|9")
Global $Label1 = GUICtrlCreateLabel("(basée sur un d20)", 40, 32, 92, 17)
Global $RBonFor1 = GUICtrlCreateRadio("Bonus force", 160, 32, 75, 17)
Global $RBonDex1 = GUICtrlCreateRadio("Bonus dex", 160, 56, 75, 17)
Global $BonFor1 = GUICtrlCreateInput("", 248, 32, 25, 21)
GUICtrlSetData(-1, "0")
Global $BonDex1 = GUICtrlCreateInput("", 248, 56, 25, 21)
GUICtrlSetData(-1, "0")
Global $Label2 = GUICtrlCreateLabel("Bonus à l'attaque", 288, 32, 86, 17)
Global $CBonAtt = GUICtrlCreateCombo("", 288, 56, 41, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "0|1|2|3|4|5|6|8|9")
Global $CkMal1 = GUICtrlCreateCheckbox("Malus", 336, 56, 50, 17)
Global $ResAtt = GUICtrlCreateInput("", 480, 32, 60, 50, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
GUICtrlSetLimit(-1, 2)
GUICtrlSetFont(-1, 25, 400, 0, "Copperplate Gothic Light")
GUICtrlSetState(-1, $GUI_DISABLE)
Global $Batt = GUICtrlCreateButton("Attaquer", 400, 32, 59, 49)
GUICtrlCreateGroup("", -99, -99, 1, 1)
;Groupe dégât
Global $Group2 = GUICtrlCreateGroup("Dégâts", 24, 96, 537, 73)
Global $CBarme = GUICtrlCreateCombo("Choisir une arme", 40, 112, 105, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1,"1d2|1d4|1d6|1d8|1d10|1d12|2d4|2d6")
Global $CkSou = GUICtrlCreateCheckbox("Sournoise", 40, 136, 65, 17)
Global $CBsou = GUICtrlCreateCombo("", 112, 136, 41, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "0|1|2|3|4|5|6|8|9", "0")
GUICtrlSetState(-1, $GUI_DISABLE)
Global $RBonFor2 = GUICtrlCreateRadio("Bonus force", 160, 112, 75, 17)
Global $RBonDex2 = GUICtrlCreateRadio("Bonus dex", 160, 144, 75, 17)
Global $BonFor2 = GUICtrlCreateInput("", 248, 112, 25, 21)
GUICtrlSetData(-1, "0")
Global $BonDex2 = GUICtrlCreateInput("", 248, 136, 25, 21)
GUICtrlSetData(-1, "0")
Global $Label3 = GUICtrlCreateLabel("Bonus aux dégâts", 288, 112, 89, 17)
Global $CBonDeg = GUICtrlCreateCombo("", 288, 136, 41, 25, BitOR($CBS_DROPDOWN,$CBS_AUTOHSCROLL))
GUICtrlSetData(-1, "0|1|2|3|4|5|6|8|9")
Global $CkMal2 = GUICtrlCreateCheckbox("Malus", 336, 136, 50, 17)
Global $Bdeg = GUICtrlCreateButton("Dégâts", 400, 112, 59, 49)
Global $ResDeg = GUICtrlCreateInput("", 480, 112, 60, 50, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
GUICtrlSetLimit(-1, 2)
GUICtrlSetFont(-1, 25, 400, 0, "Copperplate Gothic Light")
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
;Groupe divers
Global $Group3 = GUICtrlCreateGroup("Lancers divers", 24, 176, 537, 81)
Global $Bd2 = GUICtrlCreateButton("dé 2", 32, 192, 60, 25)
Global $Bd3 = GUICtrlCreateButton("dé 3", 104, 192, 60, 25)
Global $Bd4 = GUICtrlCreateButton("dé 4", 176, 192, 60, 25)
Global $Bd6 = GUICtrlCreateButton("dé 6", 248, 192, 60, 25)
Global $Bd8 = GUICtrlCreateButton("dé 8", 320, 192, 60, 25)
Global $Bd10 = GUICtrlCreateButton("dé 10", 32, 224, 60, 25)
Global $Bd12 = GUICtrlCreateButton("dé 12", 104, 224, 60, 25)
Global $Bd20 = GUICtrlCreateButton("dé 20", 176, 224, 60, 25)
Global $Bd24 = GUICtrlCreateButton("dé 24", 248, 224, 60, 25)
Global $Bd100 = GUICtrlCreateButton("dé 100", 320, 224, 60, 25)
Global $Pic1 = GUICtrlCreatePic("D:\PTI\DD\img\de20.jpg", 408, 192, 57, 57)
Global $ResDes = GUICtrlCreateInput("", 480, 192, 60, 50, BitOR($GUI_SS_DEFAULT_INPUT,$ES_CENTER))
GUICtrlSetLimit(-1, 2)
GUICtrlSetFont(-1, 25, 400, 0, "Copperplate Gothic Light")
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
;Groupe historique des lancers
Global $Group4 = GUICtrlCreateGroup("Derniers résultats", 568, 16, 177, 241)
Global $ZER = GUICtrlCreateEdit("", 576, 32, 161, 217)
GUICtrlSetData(-1, "")
GUICtrlSetFont(-1, 8, 400, 0, "Calibri")
GUICtrlSetState(-1, $GUI_DISABLE)
GUICtrlCreateGroup("", -99, -99, 1, 1)
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Batt ;=====================================Partie attaque================================================================
;Bonus à l'attaque de l'arme
Local $bonusArme = 0
If StringRegExp(GUICtrlRead($CBdegArme), "^\d+$") Then
$bonusArme = Number(GUICtrlRead($CBdegArme))
Else
MsgBox (48, "Attention", "Veuillez choisir le degré de l'arme utilisée")
EndIf
;Choix du bonus de Force ou de Dextérité
Local $bonusAtt = 0
If isState(GUICtrlRead($RBonFor1), $GUI_CHECKED) Then
$bonusAtt = Number(GUICtrlRead($BonFor1))
ElseIf isState(GUICtrlRead($RBonDex1), $GUI_CHECKED) Then
$bonusAtt = Number(GUICtrlRead($BonDex1))
Else
MsgBox (48, "Attention", "Veuillez choisir le bonus de Force ou de Dextérité")
EndIf
;Ajout d'un bonus -ou malus- éventuel
Local $BonAtt = Number(GUICtrlRead($CBonAtt))
If isState(GUICtrlRead($CkMal1), $GUI_CHECKED) Then $BonAtt = -$BonAtt
;Calcul du total d'attaque
Local $total = $bonusArme + $bonusAtt + $BonAtt + Random(1,20,1)
afficher($ResAtt, "Attaque", $total)
Case $Bdeg ;====================================Partie dégâts================================================================
;Choix de l'arme
Local $degatArme = 0, $ArmeValeur = getValuesFromDice(GuiCtrlRead($CbArme))
If Not @error Then
$degatArme = $ArmeValeur[2] * Random(1,$ArmeValeur[1],1)
Else
MsgBox(48, "Attention", "Vous n'avez pas choisi de dé.")
EndIf
;Attaque sournoise
Local $bonSou = 0
If isState(GUICtrlRead($Cksou), $GUI_CHECKED) Then $bonSou = Number(GUICtrlRead($CBsou))
;Choix du bonus de Force ou de Dextérité
Local $bonusAtt = 0
If isState(GUICtrlRead($RBonFor2), $GUI_CHECKED) Then
$bonusAtt = Number(GUICtrlRead($BonFor2))
ElseIf isState(GUICtrlRead($RBonDex2), $GUI_CHECKED) Then
$bonusAtt = Number(GUICtrlRead($BonDex2))
Else
MsgBox (48, "Attention", "Veuillez choisir le bonus de Force ou de Dextérité")
EndIf
;Ajout d'un bonus -ou malus- éventuel
Local $bonusDeg = Number(GUICtrlRead($CBonDeg))
If isState(GUICtrlRead($CkMal2), $GUI_CHECKED) Then $bonusDeg = -$bonusDeg
;Calcul du total de dégâts
Local $total = $degatArme + $bonSou + $bonusAtt + $bonusDeg
afficher($ResDeg, "Dégâts", $total)
Case $Bd2
Local $total = Random(1,2,1)
afficher($ResDes, "1D2", $total)
Case $Bd3
Local $total = Random(1,3,1)
afficher($ResDes, "1D3", $total)
Case $Bd4
Local $total = Random(1,4,1)
afficher($ResDes, "1D4", $total)
Case $Bd6
Local $total = Random(1,6,1)
afficher($ResDes, "1D6", $total)
Case $Bd8
Local $total = Random(1,8,1)
afficher($ResDes, "1D8", $total)
Case $Bd10
Local $total = Random(1,10,1)
afficher($ResDes, "1D10", $total)
Case $Bd12
Local $total = Random(1,12,1)
afficher($ResDes, "1D12", $total)
Case $Bd20
Local $total = Random(1,20,1)
afficher($ResDes, "1D20", $total)
Case $Bd24
Local $total = Random(1,24,1)
afficher($ResDes, "1D24", $total)
Case $Bd100
Local $total = Random(1,100,1)
afficher($ResDes, "1D100", $total)
EndSwitch
WEnd
Func afficher($control, $type, $texte)
GUICtrlSetData($control, $texte)
GUICtrlSetData($ZER, "["&$type&"] : "&$texte&@CRLF&GUICtrlRead($ZER))
EndFunc