Pur débutant en PURE BASIC.... aide images/sprites/souris
Re: Pur débutant en PURE BASIC.... aide images/sprites/souri
non, ce n'est pas lié au code... ca le fait avec n'importe quel code...
c'est ma fenetre qui plante si je passe dessus et fait un clic souris gauche
Aucun message car c'est un vrai plantage... si je suis en plein ecran je dois meme rebooter le pc !
j'ai installé PUREB sur clé USB.... peut etre ca ?
c'est ma fenetre qui plante si je passe dessus et fait un clic souris gauche
Aucun message car c'est un vrai plantage... si je suis en plein ecran je dois meme rebooter le pc !
j'ai installé PUREB sur clé USB.... peut etre ca ?
Re: Pur débutant en PURE BASIC.... aide images/sprites/souri
bon ca avance : en fullscreen ca ne plante pas.... la souris fait le job avec le clic gauche
et donc en mode fenetre, des que je clique sur le bouton gauche de la souris tout plante (un peu comme si je quittais sauvagement le jeu)
Ca ne serait pas à cause du mode fenetré que j'ai mis en place ?
c'est bon ca ? Il y a d'autre choses à paramétrer en mode fenetre si j'utilise la souris dans cette fenetre ?
et donc en mode fenetre, des que je clique sur le bouton gauche de la souris tout plante (un peu comme si je quittais sauvagement le jeu)
Ca ne serait pas à cause du mode fenetré que j'ai mis en place ?
Code : Tout sélectionner
OpenWindow(0,0,0,640,400,"COSMOS"):OpenWindowedScreen(WindowID(0), 0, 0, 640, 400)
Re: Pur débutant en PURE BASIC.... aide images/sprites/souri
en mode fenêtré tu dois gérer les evenements windows
il faut metre au moins un
waitwindowevent(0)
dans ta boucle principale
sinon windows pense que le programme a planté.
peut être que c'est ca le problème.
sinon dur de trouver sans avoir un code a debugger
il faut metre au moins un
waitwindowevent(0)
dans ta boucle principale
sinon windows pense que le programme a planté.
peut être que c'est ca le problème.
Code : Tout sélectionner
InitSprite()
OpenWindow(0,0,0,1280,1024,"")
OpenWindowedScreen(WindowID(0),0,0,1280,1024)
Repeat
ev=WaitWindowEvent(0) ; redonne la main au systeme pour gerer les evenements commenter cette ligne fera sans doute planter
FlipBuffers()
Until ev=#PB_Event_CloseWindow
sinon dur de trouver sans avoir un code a debugger
Re: Pur débutant en PURE BASIC.... aide images/sprites/souri
j'ai rajouté ça au pif en m'inspirant de ta remarque :
j'ai mis ca n'importe ou au milieu de ma boucle
et la ca ne plante plus du tout ! Mais bon voilà, je ne sais pas pourquoi LOL
Code : Tout sélectionner
If WindowEvent()= #PB_Event_CloseWindow
End
EndIf
et la ca ne plante plus du tout ! Mais bon voilà, je ne sais pas pourquoi LOL
Re: Pur débutant en PURE BASIC.... aide images/sprites/souri
encore mieux, suffit de mettre ca comme tu proposais...
merci à toi !!!
Code : Tout sélectionner
WaitWindowEvent(0)
merci à toi !!!
Re: Pur débutant en PURE BASIC.... aide images/sprites/souri
une ultime question,
si je passe en fullscreen, WaitWindowEvent(0) devient un message d'erreur dans ma boucle ("a window should be open")
donc en gros je voudrais faire un :
SI mode fullscreen ALORS ignorer WaitWindowEvent(0)
si je passe en fullscreen, WaitWindowEvent(0) devient un message d'erreur dans ma boucle ("a window should be open")
donc en gros je voudrais faire un :
SI mode fullscreen ALORS ignorer WaitWindowEvent(0)
Re: Pur débutant en PURE BASIC.... aide images/sprites/souri
Comment passes-tu en fullscreen?drfloyd a écrit :une ultime question,
si je passe en fullscreen, WaitWindowEvent(0) devient un message d'erreur dans ma boucle ("a window should be open")
donc en gros je voudrais faire un :
SI mode fullscreen ALORS ignorer WaitWindowEvent(0)
Le mieux serait de simplement redimensionner la fenetre aux dimensions de l'écran.
Du coup le WaitWindowEvent(0) reste toujours valide.

Re: Pur débutant en PURE BASIC.... aide images/sprites/souri
je ne sais pas faire
J'ai 2 codes pour l'instant.... 1 fullscreen + 1 fenetré
l'idéal seront donc de créer le jeu en mode fenetré et de proposer (via une touche) un agrandissement plein écran (quelque soit la définiton ?) qui cacherait les bordures de la fenetre ? (je veux un vrai plein ecran sans bordure)
Heu, ok... je vais chercher avant de demander la solution


l'idéal seront donc de créer le jeu en mode fenetré et de proposer (via une touche) un agrandissement plein écran (quelque soit la définiton ?) qui cacherait les bordures de la fenetre ? (je veux un vrai plein ecran sans bordure)
Heu, ok... je vais chercher avant de demander la solution

Re: Pur débutant en PURE BASIC.... aide images/sprites/souri
Pour faire disparaitre les bordures
Tu utilises le flag #PB_Window_BorderLess pour ta fenêtre.
Tu utilises le flag #PB_Window_BorderLess pour ta fenêtre.
Code : Tout sélectionner
If OpenWindow(0, 0, 0, 220, 160, "Un écran dans une fenêtre...", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
Code : Tout sélectionner
InitSprite()
InitKeyboard()
If OpenWindow(0, 0, 0, 220, 160, "Un écran dans une fenêtre...", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
ButtonGadget(0, 170, 135, 45, 20, "Quitter")
If OpenWindowedScreen(WindowID(0), 0, 0, 160, 160)
CreateSprite(0, 20, 20)
If StartDrawing(SpriteOutput(0))
Box(0, 0, 20, 20, RGB(255, 0, 155))
Box(5, 5, 10, 10, RGB(155, 0, 255))
StopDrawing()
EndIf
Else
MessageRequester("Erreur", "Impossible d'ouvrir un écran dans la fenêtre!", 0)
End
EndIf
EndIf
direction = 2
Repeat
; Il est très important de traiter tous les évènements restants dans la file d'attente à chaque tour
;
Repeat
Event = WindowEvent()
Select Event
Case #PB_Event_Gadget
If EventGadget() = 0
End
EndIf
EndSelect
Until Event = 0
FlipBuffers()
ExamineKeyboard()
If KeyboardPushed(#PB_Key_Escape)
End
EndIf
ClearScreen(RGB(0, 0, 0))
DisplaySprite(0, x, x)
x + direction
If x > 140 : direction = -2 : EndIf
If x < 0 : direction = 2 : EndIf
Delay(1)
ForEver
~~~~Règles du forum ~~~~
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
⋅.˳˳.⋅ॱ˙˙ॱ⋅.˳Ar-S ˳.⋅ॱ˙˙ॱ⋅.˳˳.⋅
W11x64 PB 6.x
Section HORS SUJET : ICI
LDV MULTIMEDIA : Dépannage informatique & mes Logiciels PB
UPLOAD D'IMAGES : Uploader des images de vos logiciels
Re: Pur débutant en PURE BASIC.... aide images/sprites/souri
drfloyd a écrit : donc en gros je voudrais faire un :
SI mode fullscreen ALORS ignorer WaitWindowEvent(0)
vraiment débutant en programmation du coup ^^

et la solution est dans l’énoncé
Code : Tout sélectionner
global fullscreen=#false
if fullscreen=#false ; exécuté seulement si n'est pas en fullscreen
waitwindowevent(0)
endif
si tu met fullscreen=#true ca n'executera pas le waitwindowevent(0)
Re: Pur débutant en PURE BASIC.... aide images/sprites/souri
c'est pas trop que je suis débutant, j'ai réalisé des jeux cultes dans la carrière
c'est que je ne connaissais pas la commande fullscreen
Elle n'est meme pas dans l'index des commandes du guide en ligne (pour ma défense)
Si en meme temps tu pouvais m'expliquer la commande pour basculer le mode fenétré en fullscreen je te met en personnage dans mon futur RPG

c'est que je ne connaissais pas la commande fullscreen

Si en meme temps tu pouvais m'expliquer la commande pour basculer le mode fenétré en fullscreen je te met en personnage dans mon futur RPG

Re: Pur débutant en PURE BASIC.... aide images/sprites/souri
oups, ta commande fullscreen n'existe pas 

Re: Pur débutant en PURE BASIC.... aide images/sprites/souri
drfloyd a écrit :c'est pas trop que je suis débutant, j'ai réalisé des jeux cultes dans la carrière![]()
c'est que je ne connaissais pas la commande fullscreenElle n'est meme pas dans l'index des commandes du guide en ligne (pour ma défense)
Si en meme temps tu pouvais m'expliquer la commande pour basculer le mode fenétré en fullscreen je te met en personnage dans mon futur RPG
il n'y a pas de commande fullscreen c'est une variable.
si la variable fullscreen est #false(faux) alors waitwindow event.
si tu la met a #true (vrais) la condition n'est pas remplie le code du if n'est pas executé

pour passer de fullscreen a fenetré cela implique la fermeture de la fenetre et l'ouverture d'un mode ecran.
tu dois alors rechargé tout les assets graphiques utilisés car ils sont detruit lorsqu'on ouvre/ferme un screen
un petit exemple il y a peut être une autre manière de faire mais je la connais pas

Code : Tout sélectionner
InitSprite()
InitKeyboard()
Global fullscreen=0
OpenWindow(0,0,0,1280,1024,"test")
OpenWindowedScreen(WindowID(0),0,0,1280,1024)
fullscreen=0
Procedure loadassets() ; charge les images, crée les sprites etc...
CreateSprite(0,64,64)
StartDrawing(SpriteOutput(0))
Box(0,0,64,64,$ff00ff)
StopDrawing()
EndProcedure
Procedure fullscreentoggle() ; bascule entre mode fenetre et fullscreen
CloseScreen() ; ferme le screen existant
If fullscreen=1 ; si on est en plein ecran
OpenWindow(0,0,0,1280,1024,"test") ; ouverture d'une fenetre
OpenWindowedScreen(WindowID(0),0,0,1280,1024) ; creation du screen
fullscreen=0 ; on est plus en fullscreen
Else ; sinon ( si on est en mode fenetre)
OpenScreen(1280,1024,32,"test") ; ouvre un ecran en fullscreen
fullscreen=1 ; on defini la variable en fulsscreen =) 1
EndIf
;
;
loadassets() ; on recharge les sprites etc...
EndProcedure
loadassets() ; initialisation des images/sprites etc...
Repeat
If fullscreen=0 ; si on est en fenetré
ev=WaitWindowEvent() ; gestion des events
EndIf
ExamineKeyboard() ; clavier :)
If KeyboardReleased(#PB_Key_Tab) ; si on relache la touche tab
fullscreentoggle () ; bascule le mode ecran
EndIf
If KeyboardReleased(#PB_Key_Escape) ; si on appuiis sur echap
End ; on quite
EndIf
DisplaySprite(0,800,500) ; on affiche le sprite
FlipBuffers()
ForEver
Re: Pur débutant en PURE BASIC.... aide images/sprites/souri
merci ! Quel forum sympa et efficace pour aider !
Re: Pur débutant en PURE BASIC.... aide images/sprites/souri
Un autre exemple plutôt simple (touches F1 - F2 pour tester le changement de mode)
Code : Tout sélectionner
;; old code by va!n, updated by vurvur
Global lWindowExist, lScreenExist, lWinMode, res
Procedure MyFullScreen(lScreenMode)
If lScreenMode = 1
lWinMode = 1
If lScreenExist : CloseScreen() : EndIf
If lWindowExist : CloseWindow(0) : lWindowExist = 0 : EndIf
lWindowExist = OpenWindow(0,0,0,640,480,"WindowedMode",#PB_Window_SystemMenu)
lScreenExist = OpenWindowedScreen(WindowID(0 ), 0, 0, 640, 480, 0, 0, 0)
Else
lWinMode = 2
If lWindowExist : CloseWindow(0) : lWindowExist = 0 : EndIf
If lScreenExist : CloseScreen() : EndIf
lScreenExist = OpenScreen(640,480,32,"FullScreen")
EndIf
EndProcedure
InitSprite()
InitKeyboard()
MyFullScreen(1)
Repeat
ClearScreen(0)
ExamineKeyboard()
;-------- Select ScreenMode --------
If KeyboardPushed(#PB_Key_F1) And lWinMode = 2
MyFullScreen(1)
EndIf
If KeyboardPushed(#PB_Key_F2) And lWinMode = 1
MyFullScreen(2)
EndIf
;-------- Check only if WindowedMode --------
If lWinMode = 1
lEvent = WindowEvent()
If lEvent = #PB_Event_CloseWindow
lExitProgram = 1
EndIf
EndIf
;-------- Draw TestObject and FlipBuffers --------
If StartDrawing(ScreenOutput())
Box(x,300,50,50,$FFFFFF)
StopDrawing()
EndIf
x=x+2
If x >= 690 : x=-50 : EndIf
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape) Or lExitProgram
End