Code qui plante...

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
SPH
Messages : 4945
Inscription : mer. 09/nov./2005 9:53

Code qui plante...

Message par SPH »

Salut,
une énigme : pourquoi ce code finit par planter ??! 8O

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

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
SPH
Messages : 4945
Inscription : mer. 09/nov./2005 9:53

Re: Code qui plante...

Message par SPH »

Bon, il faut mettre un :

Code : Tout sélectionner

ExamineMouse()
apres mon :

Code : Tout sélectionner

ExamineKeyboard()
Je n'y aurais pas pensé puisque le n'utilise pas la souris !

Merci a falsam :wink:

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Code qui plante...

Message 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.
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
nemerod
Messages : 40
Inscription : mer. 24/août/2022 0:58

Re: Code qui plante...

Message 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
Avatar de l’utilisateur
falsam
Messages : 7324
Inscription : dim. 22/août/2010 15:24
Localisation : IDF (Yvelines)
Contact :

Re: Code qui plante...

Message 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
Configuration : Windows 11 Famille 64-bit - PB 6.20 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Avatar de l’utilisateur
SPH
Messages : 4945
Inscription : mer. 09/nov./2005 9:53

Re: Code qui plante...

Message par SPH »

Grand merci, je regarde ça...

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
MetalOS
Messages : 1509
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Code qui plante...

Message par MetalOS »

Voici la réponse de ChatGPT quand je lui passe ton code :lol: :lol: :lol: :lol: 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.

Avatar de l’utilisateur
SPH
Messages : 4945
Inscription : mer. 09/nov./2005 9:53

Re: Code qui plante...

Message par SPH »

Waouw, en effet, chatGPT, c'est balaise 8O

!i!i!i!i!i!i!i!i!i!
!i!i!i!i!i!i!
!i!i!i!
//// Informations ////
Intel Core i7 4770 64 bits - GTX 650 Ti
Version de PB : 6.12LTS- 64 bits
Avatar de l’utilisateur
MetalOS
Messages : 1509
Inscription : mar. 20/juin/2006 22:17
Localisation : Lorraine
Contact :

Re: Code qui plante...

Message par MetalOS »

Ouais c'est hallucinant comme truc.
Répondre