Probleme mit der eingabe Teste im Spiel?
Übersicht BlitzBasic
 BlitzBasic  Beginners-Corner
 Beginners-Corner| blackmasterBetreff: Probleme mit der eingabe Teste im Spiel? |  Di, Nov 07, 2006 0:27 Antworten mit Zitat   | |
|---|---|---|
| Hallo, ich hab mein Spiel fast fertig geproggt, aber mir ist aufgefallen das da etwas nicht stimmt, wenn man gewinnt oder so, dann kommt ja eine Meldung die ich mit der Enter Taste Fortsetzen kann, aber wenn ich es so mache: Code: [AUSKLAPPEN] If KeyDown(28) And KeyHit(28) Then
 EndIf Dann wird es garnicht ausgeführt, ich habs auch so probiert: Code: [AUSKLAPPEN] If KeyHit(28) Then
 EndIf geht auch net, erst wenn ich mindestens 4 oder 5 mal schnell hintereinander drücke, dann wird sie erst ausgeführt. Wenn ich KeyDown(28) benutze, dann wirds sofort ausgeführt, aber ich brauche KeyHit. Wisst ihr zufälligerweise woran das liegen kann? achso, hier mal der code was nicht sofort ausgeführt wird: Code: [AUSKLAPPEN] If Spiel  = 1 Then
 If KeyDown(28) And KeyHit(28) Then ;Mindestens wenn ich ganz schnell 4 oder 5 mal die Entertaste gedrückt habe, dann wirds erst ausgeführt EndIf EndIf Ich bin euch schonmal sehr dankbar für die hilfe. MFG Markus | ||
|   | Schranz0r |  Di, Nov 07, 2006 1:09 Antworten mit Zitat   | 
|---|---|---|
| Code:  [AUSKLAPPEN] If Spiel  = 1 And  KeyHit(28)  Then 
 ; Mach was EndIf So muss das gehn. Wenn nicht Poste mal den ganzen Code hier rein , weil sonnst können wir nur raten. | ||
| !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! !!HAUPTSACH et kost VIEL!! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! | ||
| AvaGast |  Di, Nov 07, 2006 3:21 Antworten mit Zitat | |
|---|---|---|
| Wenn es nicht geht, dann fragst Du KeyHit(28) öfter in Deiner Schleife ab - und das ist nicht möglich! | ||
|   | TheMatrix |  Di, Nov 07, 2006 13:33 Antworten mit Zitat   | 
|---|---|---|
| Schreibe entweder if keydown(28) or keyhit(28), aber nicht "and". Wenn du nämlich mit keydown abfragst, dann gibt BB eine 1 zurück und entfernt den gedrückten Knopf aus der Queue und gibt daher eine 0 bei erneuter Abfrage mit keyhit wieder. mfg | ||
| °_° °.° °~° °v° .. -.- | ||
| AvaGast |  Di, Nov 07, 2006 14:13 Antworten mit Zitat | |
|---|---|---|
| TheMatrix hat Folgendes geschrieben: Wenn du nämlich mit keydown abfragst, dann gibt BB eine 1 zurück und entfernt den gedrückten Knopf aus der Queue und gibt daher eine 0 bei erneuter Abfrage mit keyhit wieder. Ein Mythos... Die Taste wird nur bei KeyHit() zurückgesetzt. Dennoch ist die doppelte Abfrage natürlich etws sinnfrei.   | ||
| c64 |  Di, Nov 07, 2006 14:52 Antworten mit Zitat   | |
|---|---|---|
| Hi, hier damit kannst du sehr einfach ein Keystate abfragen wenn du es benutzen möchtest, brauchst du es nur per Include einbinden. Einfach deine Keys per KEY_HANDLE = GL_Create_Key ( Key_SCANCODE1, [KEY_SCANCODE2] ) definieren und in deinem Mainloop sollte dann ganz oben einfach GL_UpdateInputs () stehen um die Keyroutine Upzudaten  . Dann kannst du, wenn du eine Taste abfragen möchtest einfach mit GL_Keystate (KEY_HANDLE) deine Taste abfragen zurückgeliefert wird entweder GL_KeyHit oder GL_Keydown,  also eine 1 oder eine 2 oder eine 0 wenn nix gedrückt wird. Man kann einem KEY_Handle zwei keys zuweisen also eine Alternativtaste  . Code: [AUSKLAPPEN] ;//////////////////////////////////////////////////////////////////////// ;/ ;/ GL_KeyControl.bb ;/ ---------------- ;/ ;/ Gamelib file. ;/ ;/ ------------- ;/ ;/ Keycontrol file ;/ ;/ Define Key's and get states by GL_Keystate (Key_ID) ;/ ;//////////////////////////////////////////////////////////////////////// Global GL_Mousekey [5] Const GL_keyHit = 1 Const GL_keyDown = 2 ;//////////////////////////////////////////////////////////////////////// Global GL_KeyControl Global GL_Key.TGL_Key Type TGL_Key Field ID Field Key Field Key2 Field State End Type ;//////////////////////////////////////// ;/ ;/ Function GL_Create_Key(Key,Key2=0) GL_Key = New TGL_Key GL_Key\ID = Handle (GL_Key) GL_Key\Key = Key GL_Key\Key2 = Key2 Return GL_Key\ID End Function ;/ ;/ ;//////////////////////////////////////// ;//////////////////////////////////////// ;/ ;/ Function GL_HANDLE_Key(Key_ID) GL_key = Object TGL_Key(Key_ID) End Function ;/ ;/ ;//////////////////////////////////////// ;//////////////////////////////////////// ;/ ;/ Function GL_Delete_Key (Key_ID) If Key_ID GL_Handle_Key (Key_ID) Delete GL_Key EndIf End Function ;/ ;/ ;//////////////////////////////////////// ;------------------------------------------------------------------------------------------- ;//////////////////////////////////////// ;/ ;/ Function GL_UpdateInputs () For GL_key = Each TGL_Key GL_Key\State=0 If KeyDown (GL_key\Key) GL_key\state= 2 If KeyHit (GL_key\Key) GL_key\state= 1 If KeyDown (GL_key\Key2) GL_key\state= 2 If KeyHit (GL_key\Key2) GL_key\state= 1 Next For c=1 To 5 GL_Mousekey [c] = 0 If MouseDown (c) GL_Mousekey [c] = GL_keyDown If MouseHit (c) GL_Mousekey [c] = GL_keyhit Next FlushKeys() End Function ;/ ;/ ;//////////////////////////////////////// ;//////////////////////////////////////// ;/ ;/ Function GL_keyState (Key_ID) GL_Handle_Key (Key_ID) Return GL_Key\State End Function ;/ ;/ ;//////////////////////////////////////// | ||
| Betreten verboten! Kinder haften für ihre Eltern! | ||
- Zuletzt bearbeitet von c64 am Di, Nov 07, 2006 17:19, insgesamt einmal bearbeitet
| blackmaster |  Di, Nov 07, 2006 17:00 Antworten mit Zitat   | |
|---|---|---|
| Danke euch, ich hab den fehler gedunden, des ist weil weiter oben nochmal If KeyDown(28) And Keyit(28) Then steht, das habe ich jetzt in einer Variable gepackt, das es dann auf false gesetzt wird. Und jetzt gehts, trotzdem vielen dank für die hilfen   Markus | ||
Übersicht
 BlitzBasic
 BlitzBasic  Beginners-Corner
 Beginners-Corner
					Powered by phpBB © 2001 - 2006, phpBB Group
				



