Hallo
Ich schreibe zurzeit an einem Spiel.
Ich habe ein Vollbildfenster erstellt (OpenScreen(...)).
Wie kann man in so einem Fenster das Programm anhalten, bis eine Taste gedrückt wurde?
Bei Windows Fenstern (OpenWindow(...)) nimmt man ja z.B. WaitWindowEvent.
Aber welchen Code verwendet man im VollbildModus?
Wenn ihr mir weiterhelfen könnt, schreibt mir Bitte eine E-Mail.
E-Mail-Adresse: obermeier.thomas@web.de
Vielen Dank
Thomas Obermeier
Procedure AnyKey()
Repeat
FlipBuffers()
If StartDrawing(ScreenOutput())
DrawText(0, 0, "Press any key ;)")
StopDrawing()
EndIf
ExamineKeyboard()
If KeyboardPushed(#PB_Key_All)
Break
EndIf
ForEver
EndProcedure
PureBasic 5.73 LTS | SpiderBasic 2.30 | Windows 10 Pro (x64) | Linux Mint 20.1 (x64)
Nutella hat nur sehr wenig Vitamine. Deswegen muss man davon relativ viel essen.
normalerweise macht man eine game-pause eher so, dass das game selber weiterläuft, aber alle aktionen ausgesetzt werden.
ich persönlich finde games sympatischer, bei denen man im pause-modus auch karte scrollen und einheitenbefehle erteilen kann.
das würde man also so lösen, dass man alle aufrufe von aktions-procedures wie einheiten bewegen, rohstoffe verbrauchen, bauaufträge weiterführen, etc. hinter eine abfrage setzt, ob nicht pausiert ist.
die aufrufe für karte darstellen, scroll-befehle, mauszeiger bewegen, etc. werden nicht abgefangen.
und natürlich durchläuft man die hauptschleife ganz normal mit tastatur und maus checken, buffer flippen etc.
@Alves
dein code wird sich hängen, weil du in der schleife das keyboard nicht mehr examinest...
btw:
dies ist ein forum, damit man öffentlich drüber spricht.
und deine email-adresse einfach irgendwo zu posten ist ungut, es gibt nämlich programme, die sämtlichen klartext im web nach email-adressen durchforsten.
wunder dich also nicht, wenn du bald werbung für viagra bekommst....
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
also, ich find die auswirkungen aufs gameplay eher positiv
grad zum üben bei nem neuen game find ich es praktisch,
auch im pausenmode befehle erteilen zu können,
wenn ich zum ersten mal dastehe und hundert einheiten in nem neuen game dastehn hab,
die alle koordiniert werden wollen.
klar, mit zunehmenden training sollte man sich das abgewöhnen,
und auch mal ganz geziehlt ohne pausen spielen,
auch um online-fähig zu werden (nicht das game, der spieler),
aber zum üben is sowas immer gut,
grad wenn man auch länger überlegen muss für die strategie,
weil man sich noch keine routine angeeignet hat.
ich finde, ich kann mich in games mit aktivem pausenmode früher online-games stellen, als ohne.
aber wie auch immer... auch in z.b. Siedler4, das keinen aktiven pausenmode hat, kann ich aber aus beobachtungen schließen, das die buffer-schleife weiterläuft.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Natürlich ist das ganz interessant, wenn es ein Spiel ist wo man mehrere
tausend kleine Figuren befehligen kann. Dann kann man sich in Ruhe mal
die Schlacht überschauen und sehen, wo noch was benötigt wird.
Aber wenn im Spiel jede einzelne Einheit fast wie ein Held zählt, dann
würde man es dem menschlichen Spieler etwas zu einfach mit diesen
Modus machen. WC3 ist dafür ein gutes Beispiel, denke ich.
kann man bei WC3 scrollen im pausenmode? ich habs lang nimmer an gehabt.
also, games die komplett freezen find ich schon etwas blöd, wenigstens umsehen sollte man sich können.
bei Siedler4 kann man das "cheaten": wenn man den mausbutton für bewegen drückt, während man die pause einschaltet, kann man in der pause scrollen. deswegen kann ich auch aussagen, dass die buffer-schleife weiterläuft, auch wenn es eigentlich ne komplett-sperren-pause ist.
für irgendwelche ballergames ist es natürlich absolut unerheblich, aber ich persönlich würde auch dort die tastaturabfrage zum beenden der pause von der ganz normalen hauptschleife erledigen lassen.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
is doch logisch. wie soll sich denn sonst der rückgabewert von KeyboardPushed() ändern können, wenn du das Keyboard nicht überprüfst, welchen zustand es hat?
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.