Verfasst: 25.11.2004 11:09
Willkommen auf der Erde, Fremdling! Wir nennen die Zeitspanne von 0 Uhr 30 bis 1 Uhr 00ts-soft hat geschrieben:@Max
und meins von 1:00
sind 30 Sekunden zu lang
30 Minuten

Willkommen auf der Erde, Fremdling! Wir nennen die Zeitspanne von 0 Uhr 30 bis 1 Uhr 00ts-soft hat geschrieben:@Max
und meins von 1:00
sind 30 Sekunden zu lang
Code: Alles auswählen
ExamineKeyboard()
If KeyboardPushed(Taste) And Flag = 0
...Aktion...
Flag = 1
EndIf
If KeyboardReleased(Taste)
Flag = 0
EndIf
Durchaus möglich, dass man auf ExamineKeyboard() öfters verzichten kann - oder es sogar "falsch" ist, wenn man es streng nimmt.Kaeru Gaman hat geschrieben:wie auch immer, diskussionen über antwortzeiten im board sind hier wohl eher
@max
stattgegeben. es ist fraglich, ob ein einfacher wechsel auf einzelnen tastendruck korrekt funktioniert, selbst mit delay(50) oder einer anderen zeitsteuerung.
allerdings sollte auch das keyboardreleased von dem ersten und einzigen examine abgefragt werden. wie du ja richtig angemerkt hast, läuft die schleife normalerweise mehrfach während eines tastendrucks durch.
hier mal rohcode aus dem handgelenk:IMHO ist dies die klassische lösung, im sinne von überschaubarem Programmierstil.Code: Alles auswählen
ExamineKeyboard() If KeyboardPushed(Taste) And Flag = 0 ...Aktion... Flag = 1 EndIf If KeyboardReleased(Taste) Flag = 0 EndIf
Ist IMO mißverständlich. Es steht nirgends, dass es nur einmal aufgerufen werden muß, aber ok... kann diskutiert werden.Syntax
ExamineKeyboard()
Description
Update the keyboard state. It must be called before using the KeyboardInkey(), KeyboardPushed() or KeyboardReleased() commands.
Bist Du sicher? Ist nicht böse gemeint, aber mit KeyboardPushed lagst Du falsch.Kaeru Gaman hat geschrieben:natürlich muss das nicht nur einmal aufgerufen werden, ich persönlich halte es lediglich für übersichtlicher, es nur einmal zu tun.
wenn man es z.B. in einer entwicklungsphase mal auskommentieren möchte, sucht man sich nen wolf, wenns mehrfach in einer schleife steht.
examine ermittelt den momentanen status, dieser kann dann mit beliebig vielen 'pushed' und 'released' interpretiert werden.
Sorry, habe ich auch gleich wieder rauseditiert. Schließlich müssten wir dann der fairness halber auch diskutieren, dass ich arrogant klinge.> Deine Beiträge klingen desöfteren besserwisserisch.
ja, sorry, ich weiss es, aber manchmal kann ich nicht wirklich was dagegen tun, ich bin nunmal ein mensch, der seine ansichten recht leidenschaftlich vertritt
es ist niemals bös' gemeint.
in diesem fall war es eigentlich unwichtig dass du schneller warst, und einen vorschlag gemacht hast, der meinem stilempfinden zuwiderläuft.
das Neuling ihn dann aber angenommen hat, und das vielleicht nur deshalb, weil ich nicht auchnoch den anfang das progs reingepatched hab, hat mich dann halt doch ein bisschen gefuchst.
das war dann eigentlich der grund, warum ich die diskussion von zaun gebrochen hab, weil ich finde, das man sich von anfang an einen überschaubaren programmierstil zulegen sollte.
[/quote]Kaeru Gaman hat geschrieben:na klasse... jetzt steht hier 'n kommentar von mir zu etwas, was du garnicht mehr drinstehen hast(
)
Ja, sowohl auf dem PC siehe Sig, als auch auf meinem Centrino Notebook. Verhält sich nicht wessentlich besser als der Ur-Code und auf alle Fälle unvorhersehbar.öh, wie jetzt? hast du meinen codeschnipsel mal eingebaut und getestet?
Code: Alles auswählen
InitKeyboard() ;Inits not checked,
InitSprite() ;I simply demand DX
OpenScreen(1024,768,32,"KeyTest")
UseJPEGImageDecoder()
TransparentSpriteColor(-1,0,0,0)
LoadSprite(0,"1.jpg",0)
LoadSprite(1,"2.jpg",0)
LoadSprite(2,"3.jpg",0)
Flag.l
x.l = 489
y.l = 371
Face = 0
Repeat
ExamineKeyboard()
ClearScreen(0,0,0)
DisplayTransparentSprite(Face,x,y)
If KeyboardPushed(#PB_Key_Up)
y-4:If y<-13 : y=755 : EndIf
EndIf
If KeyboardPushed(#PB_Key_Down)
y+4:If y>755 : y=-13 : EndIf
EndIf
If KeyboardPushed(#PB_Key_Left)
x-4:If x<-13 : x=1011 : EndIf
EndIf
If KeyboardPushed(#PB_Key_Right)
x+4:If x>1011 : x=-13 : EndIf
EndIf
If KeyboardPushed(#PB_Key_Space) And Flag = 0
Face+1 : If Face > 2 : Face = 0 : EndIf
Flag = 1
EndIf
If KeyboardReleased(#PB_Key_Space) : Flag = 0 : EndIf
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Rofl, sorry, Du hast doch echt einen an der Waffel oder bist unglaublich dreist.Kaeru Gaman hat geschrieben:@PBNeuling
ist gar kein thema. imo ist dieses forum dafür auch da.
@Max.
also, ich weiss ja nicht, was du da verbrochen hast, wie hast du denn meinen codeschnipsel eingebaut?
vielleicht zeigst du deinen kompletten code mal, bei mir läufts nämlich absolut einwandfrei.
hier mal tutto completti:hab extra noch andere keyboard-abfragen eingebaut, um das vollständig auszutesten.Code: Alles auswählen
InitKeyboard() ;Inits not checked, InitSprite() ;I simply demand DX OpenScreen(1024,768,32,"KeyTest") UseJPEGImageDecoder() TransparentSpriteColor(-1,0,0,0) LoadSprite(0,"1.jpg",0) LoadSprite(1,"2.jpg",0) LoadSprite(2,"3.jpg",0) Flag.l x.l = 489 y.l = 371 Face = 0 Repeat ExamineKeyboard() ClearScreen(0,0,0) DisplayTransparentSprite(Face,x,y) If KeyboardPushed(#PB_Key_Up) y-4:If y<-13 : y=755 : EndIf EndIf If KeyboardPushed(#PB_Key_Down) y+4:If y>755 : y=-13 : EndIf EndIf If KeyboardPushed(#PB_Key_Left) x-4:If x<-13 : x=1011 : EndIf EndIf If KeyboardPushed(#PB_Key_Right) x+4:If x>1011 : x=-13 : EndIf EndIf If KeyboardPushed(#PB_Key_Space) And Flag = 0 Face+1 : If Face > 2 : Face = 0 : EndIf Flag = 1 EndIf If KeyboardReleased(#PB_Key_Space) : Flag = 0 : EndIf FlipBuffers() Until KeyboardPushed(#PB_Key_Escape)
PS: um deiner frage vorzubeugen: ja, ich habe das auch mit einer cursor-taste anstelle von space getestet. der code ist einwandfrei (*besserwiss*,*protz*)
Code: Alles auswählen
UseJPEGImageDecoder()
If InitSprite() = 0
MessageRequester("Fehler","Konnte dx nicht finden",0)
EndIf
If InitKeyboard()=0 ;
MessageRequester("Fehler","Konnte dx nicht finden",0) ;
EndIf
If OpenScreen(1024,768,32,"Vollbild") = 0 ;
MessageRequester("Fehler","Konnte kein Vollbild erstellen ",0)
EndIf
LoadSprite(0,"C:\s\Folie1.jpg",#PB_Sprite_Memory)
Repeat
ExamineKeyboard()
FlipBuffers() And ClearScreen(0,0,0)
DisplaySprite(0,-1,-1)
If KeyboardPushed( #PB_Key_Up)
FreeSprite(0)
LoadSprite(0,"C:\s\Folie2.jpg",#PB_Sprite_Memory)
EndIf
If KeyboardPushed(#PB_Key_Up)
LoadSprite(0,"C:\s\Folie3.jpg",#PB_Sprite_Memory)
EndIf
Until KeyboardPushed(#PB_Key_Escape)
Code: Alles auswählen
LoadSprite(0,"C:\s\Folie1.jpg",#PB_Sprite_Memory)
LoadSprite(1,"C:\s\Folie2.jpg",#PB_Sprite_Memory)
LoadSprite(2,"C:\s\Folie3.jpg",#PB_Sprite_Memory)
Nr.l ; definiert variable Nr als long
Repeat
ExamineKeyboard()
FlipBuffers() ; kein and hier dazwischen!
ClearScreen(0,0,0) ; von wem stammt das eigentlich?
DisplaySprite(Nr,-1,-1) ; wieso eigentlich hinter dem rand?
If KeyboardPushed(#PB_Key_Up )
Nr = Nr + 1
If Nr > 2 : Nr = 0 : EndIf
EndIf
Until KeyboardPushed(#PB_Key_Escape)
AH JA. Mach mer doch mal:(der anfang bis incl openscreen bleibt)
Code: Alles auswählen
UseJPEGImageDecoder()
If InitSprite() = 0
MessageRequester("Fehler","Konnte dx nicht finden",0)
EndIf
If InitKeyboard()=0 ;
MessageRequester("Fehler","Konnte dx nicht finden",0) ;
EndIf
If OpenScreen(1024,768,32,"Vollbild") = 0 ;
MessageRequester("Fehler","Konnte kein Vollbild erstellen ",0)
EndIf
LoadSprite(0,"C:\s\Folie1.jpg",#PB_Sprite_Memory)
LoadSprite(1,"C:\s\Folie2.jpg",#PB_Sprite_Memory)
LoadSprite(2,"C:\s\Folie3.jpg",#PB_Sprite_Memory)
Nr.l ; definiert variable Nr als long
Repeat
ExamineKeyboard()
FlipBuffers() ; kein and hier dazwischen!
ClearScreen(0,0,0) ; von wem stammt das eigentlich?
DisplaySprite(Nr,-1,-1) ; wieso eigentlich hinter dem rand?
If KeyboardPushed(#PB_Key_Up )
Nr = Nr + 1
If Nr > 2 : Nr = 0 : EndIf
EndIf
Until KeyboardPushed(#PB_Key_Escape)
Code: Alles auswählen
Repeat
ExamineKeyboard()
ClearScreen(0,0,0)
DisplayTransparentSprite(Face,x,y)
If KeyboardPushed(#PB_Key_Up)
y-4:If y<-13 : y=755 : EndIf
Keyup+1
EndIf
If KeyboardPushed(#PB_Key_Down)
y+4:If y>755 : y=-13 : EndIf
Keydown+1
EndIf
If KeyboardPushed(#PB_Key_Left)
x-4:If x<-13 : x=1011 : EndIf
Keyleft+1
EndIf
If KeyboardPushed(#PB_Key_Right)
x+4:If x>1011 : x=-13 : EndIf
keyright+1
EndIf
If KeyboardPushed(#PB_Key_Space) And Flag = 0
Face+1 : If Face > 2 : Face = 0 : EndIf
Flag = 1
EndIf
If KeyboardReleased(#PB_Key_Space) : Flag = 0 : EndIf
FlipBuffers()
Until KeyboardPushed(#PB_Key_Escape)
Debug keyup
Debug keydown
Debug keyleft
Debug keyright