Page 1 sur 1
Code qui plante...
Publié : mar. 21/mars/2023 14:39
par SPH
Salut,
une énigme : pourquoi ce code finit par planter ??!
Code : Tout sélectionner
InitSprite()
InitMouse()
InitKeyboard()
win=OpenWindow(#PB_Any, 0, 0, 0, 0, "Test", #PB_Window_Maximize | #PB_Window_BorderLess )
scr_w=WindowWidth(win)
scr_h=WindowHeight(win)
OpenWindowedScreen (WindowID(win),0 , 0, scr_w, scr_h, 0, 0, 0, #PB_Screen_SmartSynchronization)
LoadFont(1, "Times New Roman", 30)
a$="Pourquoi le pointeur de la souris 'Réfléchis' ?"
b$="Cliquez plusieurs fois et le code plante. Mais pourquoi ??"
Repeat
ClearScreen(RGB(40,40,40))
StartDrawing(ScreenOutput()) : DrawingMode(#PB_2DDrawing_Transparent)
DrawingFont(FontID(1))
x=TextWidth(a$)/2
y=TextHeight(a$)/2+30
x2=TextWidth(b$)/2
y2=TextHeight(b$)/2-30
DrawText((scr_w/2)-x+2,scr_h/2-y+2,a$,RGB(0,0,0)) ; ombre
DrawText((scr_w/2)-x,scr_h/2-y,a$,RGB(255,255,255)) ; texte
DrawText((scr_w/2)-x2+2,scr_h/2-y2+2,b$,RGB(0,0,0)) ; ombre
DrawText((scr_w/2)-x2,scr_h/2-y2,b$,RGB(255,255,255)) ; texte
StopDrawing()
FlipBuffers()
ExamineKeyboard()
Delay(1)
Until KeyboardPushed(#PB_Key_Escape)
End
Re: Code qui plante...
Publié : mar. 21/mars/2023 15:01
par SPH
Bon, il faut mettre un :
apres mon :
Je n'y aurais pas pensé puisque le n'utilise pas la souris !
Merci a falsam

Re: Code qui plante...
Publié : mar. 21/mars/2023 15:08
par falsam
Je n'avais pas tout vu.
-Tu gères pas les évènements windows (C'est l'erreur principal)
-Tu devrais mettre ton texte dans un sprite.
Re: Code qui plante...
Publié : mar. 21/mars/2023 15:16
par nemerod
Alors pour commencé si tu a un OpenWindow tu doit traité les event, et je vois null par une section pour les event
si tu ne fais pas les event, windows pense que ton programme travaille de trop et donc fini par merdé
solution
refais ta boucle repeat avec prise en compte des event
Re: Code qui plante...
Publié : mar. 21/mars/2023 15:19
par falsam
Ton code corrigé.
Code : Tout sélectionner
InitSprite()
InitMouse()
InitKeyboard()
win=OpenWindow(#PB_Any, 0, 0, 0, 0, "Test", #PB_Window_Maximize | #PB_Window_BorderLess )
scr_w=WindowWidth(win)
scr_h=WindowHeight(win)
OpenWindowedScreen (WindowID(win),0 , 0, scr_w, scr_h, 0, 0, 0, #PB_Screen_SmartSynchronization)
LoadFont(1, "Times New Roman", 30)
a$="Pourquoi le pointeur de la souris 'Réfléchis' ?"
b$="Cliquez plusieurs fois et le code plante. Mais pourquoi ??"
Repeat
While WindowEvent() : Wend
ClearScreen(RGB(40,40,40))
StartDrawing(ScreenOutput()) : DrawingMode(#PB_2DDrawing_Transparent)
DrawingFont(FontID(1))
x=TextWidth(a$)/2
y=TextHeight(a$)/2+30
x2=TextWidth(b$)/2
y2=TextHeight(b$)/2-30
DrawText((scr_w/2)-x+2,scr_h/2-y+2,a$,RGB(0,0,0)) ; ombre
DrawText((scr_w/2)-x,scr_h/2-y,a$,RGB(255,255,255)) ; texte
DrawText((scr_w/2)-x2+2,scr_h/2-y2+2,b$,RGB(0,0,0)) ; ombre
DrawText((scr_w/2)-x2,scr_h/2-y2,b$,RGB(255,255,255)) ; texte
StopDrawing()
FlipBuffers()
ExamineKeyboard()
Delay(1)
Until KeyboardPushed(#PB_Key_Escape)
End
Re: Code qui plante...
Publié : mar. 21/mars/2023 15:20
par SPH
Grand merci, je regarde ça...
Re: Code qui plante...
Publié : dim. 26/mars/2023 19:54
par MetalOS
Voici la réponse de ChatGPT quand je lui passe ton code

c'est du délire ce truc
Code : Tout sélectionner
Ce code utilise PureBasic pour créer une fenêtre graphique, charger une police et afficher deux lignes de texte centrées à l'écran. La fenêtre est maximisée et sans bordure, et le texte est affiché avec une ombre en dessous pour un effet visuel agréable.
Les fonctions InitSprite(), InitMouse() et InitKeyboard() ne sont pas utilisées dans ce code. OpenWindow() crée une fenêtre avec les options #PB_Window_Maximize et #PB_Window_BorderLess, qui maximise la fenêtre et la rend sans bordure. LoadFont() charge une police nommée "Times New Roman" avec une taille de 30 points, qui est utilisée pour afficher le texte.
La boucle Repeat affiche les deux lignes de texte centrées à l'écran avec une ombre en dessous pour un effet visuel agréable. La fonction ExamineKeyboard() est appelée à chaque itération de la boucle pour détecter si la touche Échap est enfoncée, ce qui arrête la boucle et ferme la fenêtre.
Le code ne contient pas de gestion des événements de souris, ce qui peut expliquer pourquoi il plante lorsque la souris est cliquée plusieurs fois. Si vous souhaitez ajouter des fonctionnalités de souris à ce code, vous devrez utiliser des fonctions telles que MouseX(), MouseY(), MouseZ(), MousePushed(), etc.
Re: Code qui plante...
Publié : dim. 26/mars/2023 22:50
par SPH
Waouw, en effet, chatGPT, c'est balaise

Re: Code qui plante...
Publié : dim. 26/mars/2023 23:55
par MetalOS
Ouais c'est hallucinant comme truc.