Zwischen Vollbild und WindowMode "on the fly" wechseln

Fragen zu Grafik- & Soundproblemen und zur Spieleprogrammierung haben hier ihren Platz.
aaronmueller
Beiträge: 11
Registriert: 13.01.2011 23:51

Zwischen Vollbild und WindowMode "on the fly" wechseln

Beitrag 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
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

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

Beitrag 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.
Benutzeravatar
RSBasic
Admin
Beiträge: 8047
Registriert: 05.10.2006 18:55
Wohnort: Gernsbach
Kontaktdaten:

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

Beitrag von RSBasic »

Vielleicht ist dieser Code hilfreich: http://www.purebasic-lounge.com/viewtopic.php?t=6282
Aus privaten Gründen habe ich leider nicht mehr so viel Zeit wie früher. Bitte habt Verständnis dafür.
Bild
Bild
aaronmueller
Beiträge: 11
Registriert: 13.01.2011 23:51

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

Beitrag 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
Benutzeravatar
TomS
Beiträge: 1508
Registriert: 23.12.2005 12:41
Wohnort: München

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

Beitrag 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:
aaronmueller
Beiträge: 11
Registriert: 13.01.2011 23:51

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

Beitrag von aaronmueller »

Prima, daran hats gelegen. Danke!
Antworten