console/fenêtre
Publié : lun. 01/mars/2010 22:44
bonjour
J'essaie de transposer un programme console en mode fenêtre (après lecture et test des tutoriels )
voici le mode console
Et voici la traduction douloureuse en mode fenêtre :
je vous remercie par avance de vos conseils
J'essaie de transposer un programme console en mode fenêtre (après lecture et test des tutoriels )
voici le mode console
Code : Tout sélectionner
;jeu de dés par Francis13 23/02/2010
; PureBasic 4.41 (Windows - x86)
;Ce programme vous demande combien de jets de dés vous voulez
;que le prog fasse puis affiche le nombre de sorties par somme de 2 à 12
; avec les pourcentages et les doublets
;
Define.l de1,de2,i,somme,identique
Define.l nbJet ,nbDeCoup
Define.f pourcent
Dim tableau.l(12)
;
OpenConsole()
EnableGraphicalConsole(1)
ConsoleTitle("Jets de Des")
ConsoleColor(14,0)
;
PrintN(" Ce programme vous demande de saisir un nombre de jets de des,simule le nombre")
PrintN(" de jets puis vous affiche les statistiques")
PrintN("")
Print("Combien de jets de des voulez vous ? : ")
nbJet =Val(Input())
For i = 1 To nbJet
de1 = Random(5)+1
de2 = Random(5)+1
If de1=de2
identique = identique +1
EndIf
somme =de1 +de2
tableau(somme) =tableau(somme)+1
Next i
PrintN("")
;
For i =2 To 12
pourcent = (tableau(i)/nbJet)*100
Print(" La somme : "+Str(i) )
If i<10 ; pour le décalage à l'affichage
Print(" ")
EndIf
Print(" a ete realisee :" +Str(tableau(i)))
If (tableau(i)) <10
Print(" ") ;pour le décalage à l'affichage < 100
EndIf
PrintN(" fois soit : % "+StrF(pourcent,1))
Next i
PrintN("")
PrintN("nombre de doublets (1 a 6) :"+Str(identique))
PrintN("")
PrintN("Merci d'avoir utilise ce programme,appuyez sur entree pour quitter")
Input()
CloseConsole()
;version ok tourne bien
Code : Tout sélectionner
;jeu de dés v 0.5
; PureBasic 4.41 (Windows - x86)
;Ce programme vous demande combien de jets de dés vous voulez
;que le prog fasse puis affiche le nombre de sorties par somme de 2 à 12
; avec les pourcentages et les doublets
; plus tard car il n'y a pas vu de boite de dialogue genre inputbox de vb3/6
Define.l Event
Global Dim tableau.l(12)
Global nbJet.l =120
; Window
#WINDOW_MAIN = 0
; Gadget
#gadget_bouton_Quitter = 0
#gadget_bouton_Calculer = 1
#EditorGadget_nb =2
#TextGadget_nb =3
; dimension_fenetre_pricipale
#Fenetre_Largeur =640
#Fenetre_Hauteur =320
#Flags =#PB_Window_SystemMenu|#PB_Window_MinimizeGadget
;===========================================================
Procedure initialise() ;on initialise le tableau au debut 1 fois puis la procedure est incluse dans boutonCalculer
For j.l =0 To 12
tableau(j) = 0
Next j
EndProcedure
Procedure ouvre_WINDOW_MAIN()
If OpenWindow(#WINDOW_MAIN,0,0,#Fenetre_Largeur,#Fenetre_Hauteur,"Jeu de dés",#Flags)
couleur =RGB(0,0,100);bleu foncé
SetWindowColor(0,couleur)
ButtonGadget(#gadget_bouton_Calculer,480,180,80,40,"Calculer")
ButtonGadget(#gadget_bouton_Quitter,480,240,80,40,"Quitter")
EditorGadget(#EditorGadget_nb,20,20,300,240, #PB_Editor_ReadOnly)
SetGadgetColor(#EditorGadget_nb,#PB_Gadget_BackColor, $00FFFF)
TextGadget(#TextGadget_nb ,380,20,180,50,"la machine va effectuer 120 jets de dés.")
SetGadgetColor(#TextGadget_nb,#PB_Gadget_BackColor, $00FFFF)
EndIf
EndProcedure
Procedure BoutonCalculer()
initialise()
ClearGadgetItems(#EditorGadget_nb);efface qu'une partie de EditorGagget pourquoi ?
For j.l = 1 To nbJet ;simule les jets de dés
de1.l = Random(5)+1 ;le premier dé
de2.l = Random(5)+1 ;le deuxième
If de1=de2
identique = identique +1
EndIf
somme.l =de1 +de2
tableau(somme) = tableau(somme)+1
Next j
For i.l =2 To 12
pourcent.f = (tableau(i)/nbJet)*100
texte_1$ =" La somme : "+Str(i)
suite_2$ =" a été realisée :" +Str(tableau(i))
fin_3$ = " fois soit : % "+StrF(pourcent,1) ;afficher le % avec 1 chiffre aprés la virgule
total$ =texte_1$ +suite_2$ +fin_3$
AddGadgetItem(#EditorGadget_nb,i-2,total$);
Next i
doublet$ ="nombre de doublets (1 a 6) :"+Str(identique)
AddGadgetItem(#EditorGadget_nb,i+1,"")
AddGadgetItem(#EditorGadget_nb,i+2,doublet$)
EndProcedure
;============================================================
;debut du programme
;==============================================================
ouvre_WINDOW_MAIN()
Repeat
Event = WaitWindowEvent()
Select event
Case #PB_Event_Gadget
Select EventGadget()
Case #gadget_bouton_Quitter :
ClearGadgetItems(#EditorGadget_nb) ;n'efface pas tout ,pourquoi ?
AddGadgetItem(#EditorGadget_nb,0,"Merci d'avoir utilisé ce programme");ne s'affiche pas
Delay(2000)
Event =#PB_Event_CloseWindow
Case #gadget_bouton_Calculer :
BoutonCalculer()
EndSelect
EndSelect
;
Until Event =#PB_Event_CloseWindow
;************************************************************************
End