Seite 1 von 1

Zwischen Vollbild und WindowMode "on the fly" wechseln

Verfasst: 13.01.2011 23:55
von aaronmueller
Hallo zusammen!

Ich möchte ein 2D Spielchen schreiben. Dazu will ich im Programm zwischen Vollbild und WindowMode wechseln (per Tastendruck). Ist dies möglich? Wenn ja, wie stell ich dies an?

Viele Grüße,
Aaron

Re: Zwischen Vollbild und WindowMode "on the fly" wechseln

Verfasst: 14.01.2011 00:02
von TomS
Kommt darauf an.
Wenn das Spiel relativ wenig Resourcen verbraucht, kannst du den WindowedScreen mit Autostretch-Flag erstellen und per Tastendruck die Größe des Fensters verändern.

Ansonsten hilft nur CloseScreen und Open(Windowed)Screen. Dadurch wird das Spiel einige Sekunden unterbrochen, da sämtliche Resourcen (Sprites, Sounds) erst wieder geladen werden müssen.

Re: Zwischen Vollbild und WindowMode "on the fly" wechseln

Verfasst: 14.01.2011 00:03
von RSBasic
Vielleicht ist dieser Code hilfreich: http://www.purebasic-lounge.com/viewtopic.php?t=6282

Re: Zwischen Vollbild und WindowMode "on the fly" wechseln

Verfasst: 14.01.2011 00:42
von aaronmueller
Ich hab das mal ausprobiert, leider flackert das ganze ziemlich, wenn ich "f" drücke. Es scheint so als wolle er ständig zwischen Window und Fullscreen wechseln. Hab ich da was beim Input handling falsch verstanden?

Code: Alles auswählen

If OpenWindow(0, 0, 0, 800, 600, title, #PB_Window_ScreenCentered)
  If OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0, 0, 0)
  EndIf
  
  Repeat
    ; Event loop
    Repeat
      event = WindowEvent()
    Until event = 0
    
    ; Handle input
    ExamineKeyboard()
    If KeyboardPushed(#PB_Key_F)
      CloseScreen()
      If fullscreen = 0
        OpenScreen(800, 600, 32, title)
        fullscreen = 1
      Else
        OpenWindowedScreen(WindowID(0), 0, 0, 800, 600, 0, 0, 0)
        fullscreen = 0
      EndIf
    EndIf
    
    ; Draw the stuff on the screen
    FlipBuffers()
    ClearScreen(RGB(0, 200, 0))
    DrawOnScreen()
    Delay(1)
  Until KeyboardPushed(#PB_Key_Escape)
EndIf

Re: Zwischen Vollbild und WindowMode "on the fly" wechseln

Verfasst: 14.01.2011 01:19
von TomS
Benutze anstatt KeyboardPushed(#PB_Key_F) besser KeyboardReleased(#PB_Key_F).
KeyboardPushed() gibt solange True zurück, wie du den Finger auf der Taste hast. In der Zeit kann man schon mal etliche Operationen ausführen, die dann eben mehrfach ausgeführt werden.
Wenn's blöd läuft ist die Anzahl gerade und man landet beim gleichen ScreenModus wie vorher :lol:

Re: Zwischen Vollbild und WindowMode "on the fly" wechseln

Verfasst: 15.01.2011 16:42
von aaronmueller
Prima, daran hats gelegen. Danke!