[résolu] Problème avec Openscreen() en fullscreen

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

[résolu] Problème avec Openscreen() en fullscreen

Message par blendman »

salut

J'ai un code qui fonctionne en mode fenêtre et pas en fullscreen, savez-vous pourquoi ?

Code : Tout sélectionner

#MainWindow =0
#fullscreen = 1
InitSprite()
InitKeyboard()

If OpenWindow(#MainWindow,0,0,800,600,"3Arks",#PB_Window_ScreenCentered|#PB_Window_SystemMenu|#PB_Window_MinimizeGadget)
  If OpenWindowedScreen(WindowID(#MainWindow),0,0,800,800,0,0,0,#PB_Screen_SmartSynchronization)
  EndIf
EndIf

Repeat
  delay +1
  Delay(10)
  ClearScreen(RGB(125,125,125))
  StartDrawing(ScreenOutput())
  DrawText(100,100,"1er écran : "+Str(delay))
  StopDrawing()
  FlipBuffers()
  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape) Or e =#PB_Event_CloseWindow Or delay >=150

CloseWindow(#MainWindow)
Delay(1000)

If #fullscreen = 0
  flag = #PB_Window_SystemMenu|#PB_Window_ScreenCentered|#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget
  If OpenWindow(#MainWindow,150,150,800,600,"3arks",flag);
    If OpenWindowedScreen(WindowID(#MainWindow),0,0,800,600,0,0,0,#PB_Screen_SmartSynchronization)
    EndIf
  EndIf
Else
  If OpenScreen(800,600,32,"3arks",#PB_Screen_SmartSynchronization)
  EndIf
EndIf

Repeat
  If #fullscreen = 0
    e=WaitWindowEvent()
  EndIf
  Delay(2)
  ClearScreen(RGB(125,125,125))
  StartDrawing(ScreenOutput())
  DrawText(100,100,"Ecran jeu")
  StopDrawing()
  FlipBuffers()
  ExamineKeyboard()
  delay+1
Until KeyboardPushed(#PB_Key_Escape) Or e =#PB_Event_CloseWindow Or delay >= 1200
End
Merci beaucoup pour vos réponses, ça m'empêche de mettre notre jeu 3arks en mode Fullscreen ^^
Dernière modification par blendman le sam. 09/juin/2012 14:11, modifié 1 fois.
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: Problème avec Openscreen() en fullscreen

Message par Cool Dji »

bizarre ?

Sinon, si tu veux mettre plusieurs type d'écran (Menu, Game, HighScore...), je te propose une technique.
Tu peux créer un seul openwindow et dans la boucle principale tu pointes vers la procédure propre à chaque type d'écran

Code : Tout sélectionner

Mode = 0  ; mode=0 (menu), mode=1 (game)...

Repeat

  if mode=0 : Menu() : endif
  if mode=1 : Game() : endif
  if mode=2 : HighScore() : endif

  FlipBuffers()
  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape) Or e =#PB_Event_CloseWindow Or delay >=150

Only PureBasic makes it possible
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Problème avec Openscreen() en fullscreen

Message par blendman »

Cool Dji a écrit :bizarre ?

Sinon, si tu veux mettre plusieurs type d'écran (Menu, Game, HighScore...), je te propose une technique.
Tu peux créer un seul openwindow et dans la boucle principale tu pointes vers la procédure propre à chaque type d'écran

Code : Tout sélectionner

Mode = 0  ; mode=0 (menu), mode=1 (game)...

Repeat

  if mode=0 : Menu() : endif
  if mode=1 : Game() : endif
  if mode=2 : HighScore() : endif

  FlipBuffers()
  ExamineKeyboard()
Until KeyboardPushed(#PB_Key_Escape) Or e =#PB_Event_CloseWindow Or delay >=150

comme dit Monica de Friends "I knoooooooooowwww " :mrgreen:

Mais en fait, sur 3arks, il y a bien 2 windows distinctes (ou 1window/1 écran) :
- une pour se loguer, avec sa résolution (800*600)
- et une autre pour le jeu, avec la résolution qu'on veut

Donc, j'ai besoin de fermer la fenêtre pour ouvrir un screen en plein écran, mais là, ça bug totalement :(

je ne peux donc pas utiliser de resizewindow, car en fullscreen, j'ai bien 1 fenêtre, puis un screen...
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Re: Problème avec Openscreen() en fullscreen

Message par case »

ça marche vachement bien ton code a partir du moment ou...


tu utilise la commande ...



CloseScreen()

Syntaxe

CloseScreen()
Description

Ferme l'écran courant. Ceci permet à une application de passer du mode plein écran au mode fenêtré dynamiquement. Après avoir changé d'écran, tous les sprites doivent être rechargés.
enfin je dis ça, je dis rien moi , je lis juste la doc :p
ImageImage
Avatar de l’utilisateur
Cool Dji
Messages : 1126
Inscription : ven. 05/sept./2008 11:42
Localisation : Besançon
Contact :

Re: Problème avec Openscreen() en fullscreen

Message par Cool Dji »

Yes :D

J'ai eu l'espace d'un instant un doute sur la possibilité de faire deux openscreen à la suite mais à aucun moment je n'ai pensé que la fonction closescreen pouvait exister...

En revanche, un peu dommage l'histoire d'être obligé de recharger tous les sprites.
Only PureBasic makes it possible
Avatar de l’utilisateur
case
Messages : 1546
Inscription : lun. 10/sept./2007 11:13

Re: Problème avec Openscreen() en fullscreen

Message par case »

en général on charge pas tout les sprites pour le login :)
ImageImage
Avatar de l’utilisateur
blendman
Messages : 2017
Inscription : sam. 19/févr./2011 12:46

Re: Problème avec Openscreen() en fullscreen

Message par blendman »

rah case... Je suis un boulet sur ce coup-là... j'ai les boules, j'aurai du trouver tout seul, j'y ai même pas pensé. :oops:

Merci encore une fois, CASE !!!
Répondre