La prochaine fois je vous sors un prog écrit avec la version française du langage PureBasic, qui cause complètement français ...
Code : Tout sélectionner
;
; Simple sample Candle app.pb
; Version FR
;
; Utilise les sprites pour modéliser une petite animation de bougies allumées.
;
; FWeil 20040519
;
; A noter la procédure Label, qui permet de simplfier l'écriture des textes 2D dans le programme principal.
;
Enumeration 1
#Sprite3D1
#Fenetre_principale
#Barre_de_status
#Gadget_Bouton_CliquezMoi
#Sprite1
#Image_Couleur_de_fond
EndEnumeration
#FAUX = #FALSE ; Pour la VF ... na !
#VRAI = #TRUE
#FW_Police_Ombre = 1024
#FW_Police_Centered = 2048
Procedure Label(Texte.s, Placement_X.l, Placement_Y.l, Police.s, Taille.l, Mode.l, Largeur.l, Hauteur.l, Attributs.l, Couleur_fond, Couleur_avant_plan.l)
; DrawingFont(LoadFont(#PB_Any, Police, Taille, Attributs))
DrawingFont(LoadFont(13, Police, Taille, Attributs))
DrawingMode(Mode)
If Attributs & #FW_Police_Ombre
FrontColor(Red(Couleur_fond), Green(Couleur_fond), Blue(Couleur_fond))
If Attributs & #FW_Police_Centered
Locate((Largeur - TextLength(Texte)) / 2, Placement_Y)
Else
Locate(Placement_X, Placement_Y)
EndIf
DrawText(Texte)
FrontColor(Red(Couleur_avant_plan), Green(Couleur_avant_plan), Blue(Couleur_avant_plan))
If Attributs & #FW_Police_Centered
Locate((Largeur - TextLength(Texte)) / 2 + 1, Placement_Y - 1)
Else
Locate(Placement_X + 1, Placement_Y - 1)
EndIf
DrawText(Texte)
Else
BackColor(Red(Couleur_fond), Green(Couleur_fond), Blue(Couleur_fond))
FrontColor(Red(Couleur_avant_plan), Green(Couleur_avant_plan), Blue(Couleur_avant_plan))
If Attributs & #FW_Police_Centered
Locate((Largeur - TextLength(Texte)) / 2, Placement_Y)
Else
Locate(Placement_X, Placement_Y)
EndIf
DrawText(Texte)
EndIf
EndProcedure
;
;
;
Quitter = #FAUX
Nombre_de_sprites = 10
Dim Zoom_facteur(Nombre_de_sprites)
Dim Zoom(Nombre_de_sprites)
Dim Angle_facteur(Nombre_de_sprites)
Dim Angle(Nombre_de_sprites)
Dim X_facteur(Nombre_de_sprites)
Dim Y_facteur(Nombre_de_sprites)
Dim X(Nombre_de_sprites)
Dim Y(Nombre_de_sprites)
Dim Transparence(Nombre_de_sprites)
Fenetre_taille_X = 480
Fenetre_taille_Y = 360
Ecran_fenetre_taille_X = 320
Ecran_fenetre_taille_Y = 240
For i = 1 To Nombre_de_sprites
Zoom_facteur(i) = 10
Angle_facteur(i) = 1
X_facteur(i) = 1
Y_facteur(i) = 1
Zoom(i) = Random(200)
Angle(i) = Random(360)
X(i) = Random(Fenetre_taille_X)
Y(i) = Random(Fenetre_taille_Y)
Transparence(i) = 100
Next
Debut = #VRAI
If InitSprite() And InitSprite3D() And InitKeyboard() And InitMouse()
If OpenWindow(#Fenetre_principale, 0, 0, Fenetre_taille_X, Fenetre_taille_Y, #PB_Window_SystemMenu | #PB_Window_MinimizeGadget | #PB_Window_MaximizeGadget | #PB_Window_SizeGadget | #PB_Window_TitleBar | #PB_Window_ScreenCentered, "Petite bougie")
If CreateGadgetList(WindowID())
SetGadgetFont(#PB_Default, LoadFont(12, "Arial", 24, #PB_Font_Bold | #PB_Font_Italic | #PB_Font_HighQuality))
ButtonGadget(#Gadget_Bouton_CliquezMoi, 10, 10, Fenetre_taille_X - 20, 40, "Cliquez moi")
EndIf
ID_image_fond = CreateImage(#Image_Couleur_de_fond, Ecran_fenetre_taille_X, Ecran_fenetre_taille_Y)
StartDrawing(ImageOutput())
For x = 0 To Ecran_fenetre_taille_X
LineXY(x, 0, 0, x * Ecran_fenetre_taille_Y / Ecran_fenetre_taille_X, x << 23)
LineXY(x, Ecran_fenetre_taille_Y, Ecran_fenetre_taille_X, x * Ecran_fenetre_taille_Y / Ecran_fenetre_taille_X, x << 23)
Next
StopDrawing()
hCurseur1 = LoadCursor_(0, #IDC_ARROW)
hCurseur2 = LoadCursor_(0, #IDC_CROSS)
AddKeyboardShortcut(#Fenetre_principale, #PB_Shortcut_Escape, #PB_Shortcut_Escape)
If OpenWindowedScreen(WindowID(), (Fenetre_taille_X - Ecran_fenetre_taille_X) / 2, (Fenetre_taille_Y - Ecran_fenetre_taille_Y - WindowedScreenBottomMargin) / 2, Ecran_fenetre_taille_X, Ecran_fenetre_taille_Y, 0, 0, 0)
Sprite_largeur = 128
Sprite_hauteur = 128
TransparentSpriteColor(-1, 0, 0, $40)
CreateSprite(#Sprite1, Sprite_largeur, Sprite_hauteur, #PB_Sprite_Texture)
StartDrawing(SpriteOutput(#Sprite1))
Box(0, 0, Sprite_largeur, Sprite_hauteur, $400000)
Label("Petit programme", 0, (Sprite_hauteur - 15) / 2, "Verdana", 9, 1, Sprite_largeur, Sprite_hauteur, #PB_Font_Bold | #PB_Font_Italic | #PB_Font_HighQuality | #FW_Police_Centered, #Black, #White)
Label("Bougie animée", 0, (Sprite_hauteur + 15) / 2, "Verdana", 9, 1, Sprite_largeur, Sprite_hauteur, #PB_Font_Bold | #PB_Font_Italic | #PB_Font_HighQuality | #FW_Police_Centered, #Black, #White)
DrawingMode(4)
Box(0, 0, Sprite_largeur, Sprite_hauteur, $C0FFFF)
StopDrawing()
CreateSprite3D(#Sprite3D1, #Sprite1)
Sprite3DQuality(1)
Repeat
Select WindowEvent()
Case #PB_Event_CloseWindow
Quitter = #VRAI
Case #PB_Event_Menu
Select EventMenuID()
Case #PB_Shortcut_Escape
If Debut
Debut = #FAUX
Else
Quitter = #VRAI
EndIf
EndSelect
Case #PB_Event_Gadget
Select EventGadgetID()
Case #Gadget_Bouton_CliquezMoi
If Debut
Debut = #FAUX
FreeGadget(#Gadget_Bouton_CliquezMoi)
ButtonGadget(#Gadget_Bouton_CliquezMoi, 10, 10, Fenetre_taille_X - 20, 40, "Terminer")
Else
Quitter = #VRAI
EndIf
EndSelect
EndSelect
GetCursorPos_(CursorPosition.POINT) - 20
Souris_position_X = CursorPosition\x - WindowX()
Souris_position_Y = CursorPosition\y - WindowY()
If Souris_position_X >= Fenetre_taille_X - Ecran_fenetre_taille_X And Souris_Postion_x <= Fenetre_taille_Y And Souris_Position_Y >= Fenetre_taille_Y - Ecran_fenetre_taille_Y And Souris_position_Y <= Fenetre_taille_Y
SetCursor_(hCurseur2)
Else
SetCursor_(hCurseur1)
EndIf
If Start3D()
FlipBuffers()
ClearScreen($00, $00, $40)
StartDrawing(ScreenOutput())
DrawImage(ID_image_fond, 0, 0)
If Debut = #FAUX
BackColor(0, 0, $40)
Label("Petit programme", 0, Ecran_fenetre_taille_Y / 2 + 20, "Verdana", 18, 1, Ecran_fenetre_taille_X, Ecran_fenetre_taille_Y, #PB_Font_Bold | #PB_Font_Italic | #PB_Font_HighQuality| #FW_Police_Ombre | #FW_Police_Centered, $FFFFFF, Couleur)
Label("Bougie animée", 0, Ecran_fenetre_taille_Y / 2 + 60, "Verdana", 18, 1, Ecran_fenetre_taille_X, Ecran_fenetre_taille_Y, #PB_Font_Bold | #PB_Font_Italic | #PB_Font_HighQuality | #FW_Police_Ombre | #FW_Police_Centered, $FFFFFF, Couleur)
Couleur + 7
DrawingMode(0)
For i = 2 To -2 Step -1
XBougie = Ecran_fenetre_taille_X / 2 + 300 * Sin(i / 4)
YBougie = Ecran_fenetre_taille_Y / 2 - 150 * Cos(i / 4) + 30
For Bougie = 10 To 0 Step - 2
Box(XBougie - Bougie + 5, YBougie + 80, Bougie, 35, RGB(150 + 10 * Bougie, 150 + 10 * Bougie, 150 + 10 * Bougie))
Next
For Lumiere = 25 To 1 Step -1
Circle(XBougie + Random(2) - 1, YBougie + 3* Lumiere + Random(2) - 1, Lumiere / 4, RGB(Lumiere * 10, Lumiere * 6, 0))
Next
Next
EndIf
StopDrawing()
If Debut
For i = 1 To Nombre_de_sprites
ZoomSprite3D(#Sprite3D1, Zoom(i), Zoom(i))
RotateSprite3D(#Sprite3D1, Angle(i), 0)
DisplaySprite3D(#Sprite3D1, X(i), Y(i), Transparence(i))
Transparence(i) = Transparence(i) + 1
If Transparence(i) > 255
Transparence(i) = 200
EndIf
Zoom(i) + Zoom_facteur(i)
If Abs(Zoom(i)) > 256
Zoom_facteur(i) = -Zoom_facteur(i)
EndIf
Angle(i) + Angle_facteur(i)
If Angle(i) > 360
Angle_facteur(i) = -Angle_facteur(i)
EndIf
X(i) + X_Facteur(i)
Y(i) + Y_Facteur(i)
If X(i) > Ecran_fenetre_taille_X Or X(i) < 0
X_facteur(i) = -X_facteur(i)
EndIf
If Y(i) > Ecran_fenetre_taille_Y Or Y(i) < 0
Y_facteur(i) = -Y_facteur(i)
EndIf
Next
EndIf
Stop3D()
EndIf
Delay(25)
Until Quitter
Else
MessageRequester("Erreur", "Ouverture de l'écran fenêtré impossible", 0)
EndIf
Else
MessageRequester("Erreur", "Ouverture de la fenêtre principale impossible", 0)
EndIf
Else
MessageRequester("Erreur", "Démarrage de DirectX impossible", 0)
EndIf
End