Probleme mit Keydown/Keyhit und Menü

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

sprime

Betreff: Probleme mit Keydown/Keyhit und Menü

BeitragMi, Sep 30, 2009 20:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Leute...
Ich habe ein kleines Problem.. Ich wollte gerade für mein Spiel, an dem ich gerade arbeite, ein Menü erstellen indem man mit den pfeiltasten (oben und unten) halt die einzelnen menüpunkte (start, credits, einstellungen usw) anwählen kann doch irgentwie funktioniert mein keyhit/keydown nicht, ich versteh nicht wieso.. ich hab das folgendermaßen gemacht :
Code: [AUSKLAPPEN]
start()

Function start()

Graphics 1212,480,0,2

intro = LoadImage("D:\hod\menü.png")
banane = LoadImage ("D:\hod\banane.png")


banane_y=160

Repeat

DrawImage intro,x,y
DrawImage banane,720,banane_y
DrawImage banane,300,banane_y

Until KeyDown(1)

If KeyHit(208) Then
banane_y= banane_y-100
EndIf

End Function

WaitMouse


wenn ich das starte stüzt mein ganzer pc ab..

Ich habe um die keyhit/keydown funktion zu testen nochmal ein miniprogramm gemacht:
Code: [AUSKLAPPEN]

Graphics 1280,600,0,2


If KeyHit(208) Then
Print "Hallo"
EndIf



WaitMouse



aber das funktioniert auch nicht...

Ich versteh nicht wieso..

Bitte helft mir Very Happy

Xeres

Moderator

BeitragMi, Sep 30, 2009 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Hast du überhaupt schon mal ein paar Tutorials gemacht?
Da sollte Doublebuffering und Schleifen drin vorkommen...
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Nicdel

BeitragMi, Sep 30, 2009 20:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Die Abfrage ob KeyHit oder KeyDown muss in die Hauptschleife. Beim unteren Code ist es so, dass für einen Bruchteil einer Sekunde geprüft wird, ob die Taste gedrückt wird, dieser ist schnell vorbei und es wird nur noch auf die Maus gewartet. Ich empfehle dir mal ein Tutorial zu lesen (Rob's BB Kurs zum Beispiel).
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

sprime

BeitragMi, Sep 30, 2009 20:19
Antworten mit Zitat
Benutzer-Profile anzeigen
ah ok danke.. nene, ich kenn die tutorials schon, außer types hab ich ja auch schon die grundbasics drauf von bb eigentlich.. hab ich wohl ne kleinigkeit übersehn xD

Nicdel

BeitragMi, Sep 30, 2009 20:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Na ja, sieht nicht so aus...
Du verwendest zum Beispiel kein Doublebuffering (BackBuffer, Flip) und die Auflösung ist ebenfalls ganz schön schräg. Außerdem sind relative Pfadangaben besser.
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

Chester

BeitragMi, Sep 30, 2009 20:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Au weia, dir fehlen noch ein paar Grundlagen wie man sieht.
Machen wir mal eins nach dem andern:

- Warum machst du den eigentlichen Quellcode selbst in eine eigene Funktion? Recht überflüssig.
- Man benutzt keine Pfadangaben wie ("D:\..."), weil es sonst auf anderen PCs nicht mehr funktioniert
- Bei Graphics benutzt man i.d.R. nur die üblichen Monitorauflösungen, im Vollbild würde es bei dir nicht funktionieren
- Du benutzt kein Doublebuffering*
- Du fragst erst die Taste ab, nachdem die Grafikloop abgeschlossen ist.
- Du benutzt Print im Grafikmodus

*Beim Doublebuffering gehst du so vor:
Vor der Mainloop wechselt du mit Code: [AUSKLAPPEN]
Setbuffer Backbuffer()
in den Backbuffer.

Alles was du jetzt zeichnest wird in den sogenannten Backbuffer gezeichnet, also nicht auf den Bildschirm, welcher dem sogenannten Frontbuffer entspricht. Bevor du aber mit dem Zeichnen anfängst, löscht man mit Code: [AUSKLAPPEN]
Cls
den Backbuffer, damit sich die Bilder nicht überlagern. Wenn du dann mit allen Dingen fertig bist, bringst du mit dem Befehl Code: [AUSKLAPPEN]
Flip
den Inhalt des Backbuffers in den Frontbuffer. Dadurch wird alles auf einen Schlag gezeichnet und gewährleistet somit einen reibunslosen Bildaufbau Wink

Edit: Fail, alle Antworten während dem Schreiben versäumt...
  • Zuletzt bearbeitet von Chester am Mi, Sep 30, 2009 20:26, insgesamt einmal bearbeitet
 

sprime

BeitragMi, Sep 30, 2009 20:26
Antworten mit Zitat
Benutzer-Profile anzeigen
ja ich weiß was double buffering etc is ich hab ja auch schon ein kleines spiel gemacht aber ich habs da ja auch schon eingebaut funkzt trotzdem noch nich.. die auflösung is komisch ich weiß aber da ich es ja generell im fenstermodus lasse find ichs nich so schlimm und die pfadangaben änder ich noch wenn ich dann die exe datei speicher.. also habs jetz so:
Code: [AUSKLAPPEN]

Graphics 1212,480,0,2
SetBuffer BackBuffer()

intro = LoadImage("D:\hod\menü.png")
banane = LoadImage ("D:\hod\banane.png")


banane_y=160

Repeat

DrawImage intro,x,y
DrawImage banane,720,banane_y
DrawImage banane,300,banane_y
Flip


If KeyHit(208) Then
banane_y= banane_y-100

EndIf

Until KeyDown(1)


WaitMouse


was is jetz noch falsch ?? wen ichs starte stürzt mein pc ab xD

Xeres

Moderator

BeitragMi, Sep 30, 2009 20:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Bluescreen? Fehlermeldung? OS?
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

sprime

BeitragMi, Sep 30, 2009 20:28
Antworten mit Zitat
Benutzer-Profile anzeigen
nein, wenn ich starte, dann spinnt aufeinmal alles, meine maus bleibt stehen kurz dann aufeinmal keine rückmeldung und ich kanns nichmehr schließen und auch nich minimieren oda so

Nicdel

BeitragMi, Sep 30, 2009 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Der ganze PC stürzt ab? Ziemlich empfindlich dein PC, den kannste gleich aus dem Fenster schmeißen Very Happy
Versuchs mal so:
Code: [AUSKLAPPEN]

Graphics 1212,480,0,2
SetBuffer BackBuffer()

intro = LoadImage("D:\hod\menü.png")
banane = LoadImage ("D:\hod\banane.png")


banane_y=160

Repeat

If KeyHit(208) Then

banane_y= banane_y-100

EndIf

DrawImage intro,x,y
DrawImage banane,720,banane_y
DrawImage banane,300,banane_y

Flip

Cls


Until KeyDown(1)


WaitMouse


Und als nützliche Ergänzung: https://www.blitzforum.de/foru...hp?t=25242

Edit: Für so etwas gibt es den praktischen Taskmanager. Das würde ich jetzt nicht als Absturz des OS sondern eher als Absturz des Programmes bezeichnen Wink
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7
 

sprime

BeitragMi, Sep 30, 2009 20:33
Antworten mit Zitat
Benutzer-Profile anzeigen
ahh super, danke, das klappt.. ahja und mein pc is garnicht so schlecht xDD keine ahnung warum der so komisch reagiert.. und ich danke euch vielmals für eure hilfe, auch wenn ich grad schockiert bin wieviele unbewusste,eigenltich total simple fehler ich mache xDD
 

sprime

BeitragMi, Sep 30, 2009 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
ahh super, danke, das klappt.. ahja und mein pc is garnicht so schlecht xDD keine ahnung warum der so komisch reagiert.. und ich danke euch vielmals für eure hilfe, auch wenn ich grad schockiert bin wieviele unbewusste,eigenltich total simple fehler ich mache xDD

Nicdel

BeitragMi, Sep 30, 2009 20:34
Antworten mit Zitat
Benutzer-Profile anzeigen
Mehr Tutorials gründlich lesen und verstehen Wink
Desktop: Intel Pentium 4 2650 Mhz, 2 GB RAM, ATI Radeon HD 3850 512 MB, Windows XP
Notebook: Intel Core i7 720 QM 1.6 Ghz, 4 GB DDR3 RAM, nVidia 230M GT, Windows 7

orpheus_2003

BeitragDo, Okt 01, 2009 7:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Nicht traurig sein.
Ich habs auch schon geschafft mit einem falschem Befehl das Programm in die ewigen Jagdgründe zu schießen...
Aber echt. Lies mal ein bisschen. Dann klärt sich das meiste.

Gruß M
GazerStar - the beginning
http://gazerstar.lexigame.de/
Wizard (Worktitel)
http://wizard.lexigame.de

BladeRunner

Moderator

BeitragDo, Okt 01, 2009 9:28
Antworten mit Zitat
Benutzer-Profile anzeigen
~VERSCHOBEN~
Dieser Thread passte nicht in das Forum, in dem er ursprünglich gepostet wurde.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group