1 Tastendruck= 1 Schlag

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

rambo256

Betreff: 1 Tastendruck= 1 Schlag

BeitragFr, März 12, 2004 16:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi leute,also hier erst mal mein Code (Die Animationsarrays hab ich weggelassen,sowie die Grafikenladenanweisungen und so!),den hab ich auch neu geschrieben und mein system zu letztes Mal verändert,hab jetzt alles in arrays abgespeichert,vorteile:
1. ist erweiterbar (einfacher ohne großen aufwand)
2. übersichtlicher und kleinerer code

hier ist nun die Hauptschleife:

Code: [AUSKLAPPEN]
;Hauptschleife

Repeat
Cls
WaitTimer(frametimer)
; Hintergrund zeichnen
For o = 0 To 4
DrawImage Wiese1,o*175,526
DrawImage Wald_Baume,o*253,365
Next



; Tastenabfragen

If KeyDown(Key_rechts)=0 And KeyDown(key_links)=0 And KeyDown(key_angriff)=0 And KeyDown(Key_shift)=0 Then
   keys=0
Else keys=1
EndIf

If KeyDown(key_rechts) Then
   richtung=1
   player_x = player_x+speed
EndIf

If KeyDown(key_links) Then
   richtung=-1
   player_x = player_x-speed
EndIf

If KeyDown(key_angriff)=1 Then attack=1

; Atmung
;rechts

If  Richtung=1 And keys=0 Then
   e = e+1
   If e=frametimer_atmen Then i=i+1
   DrawImageRect Player_Davis(0,0),Player_x,Player_y,Player_Davis(1,i)*80,Player_Davis(1,6)*80,80,80
   If i >= Player_Davis(1,7) Then i=0
   If e >= frametimer_atmen Then e=0
EndIf
 
;links
If  Richtung=-1 And keys=0 Then
   e = e+1
   If e=frametimer_atmen Then i=i+1
   DrawImageRect Player_Davis(0,1),Player_x,Player_y,Player_Davis(2,i)*80,Player_Davis(2,6)*80,80,80
   If i >= Player_Davis(2,7) Then i=0
   If e >= frametimer_atmen Then e=0
EndIf


; rennen
;rechts

If  Richtung=1 And KeyDown(key_rechts)=1 And KeyDown(key_angriff)=0 Then
   e = e+1
   If e=frametimer_rennen Then i=i+1
   DrawImageRect Player_Davis(0,0),Player_x,Player_y,Player_Davis(3,i)*80,Player_Davis(3,6)*80,80,80
   If i >= Player_Davis(3,7) Then i=0
   If e = frametimer_rennen Then e=0
EndIf

;links

If  Richtung=-1 And KeyDown(key_links)=1 And KeyDown(key_angriff)=0 Then
   e = e+1
   If e=frametimer_rennen Then i=i+1
   DrawImageRect Player_Davis(0,1),Player_x,Player_y,Player_Davis(4,i)*80,Player_Davis(4,6)*80,80,80
   If i >= Player_Davis(4,7) Then i=0
   If e = frametimer_rennen Then e=0
EndIf

;schlagen,normale attacke
;rechts

If Richtung=1  And KeyDown(key_shift)=0 And KeyDown(key_rechts)=0 And KeyDown(key_angriff)=1 Then
   e =e+1
   If e=frametimer_schlagen Then i=i+1   
   If i>= Player_Davis(5,9) Then i=0 
   If e >= Frametimer_schlagen Then e=0
   DrawImageRect Player_Davis(0,0),Player_x,player_y,Player_Davis(5,i)*80,player_Davis(5,8)*80,80,80
EndIf

;links

If Richtung=-1 And KeyDown(key_angriff) And KeyDown(key_shift)=0 And KeyDown(key_links)=0 Then
   e =e+1
   If e=frametimer_schlagen Then i=i+1   
   If i>= Player_Davis(6,9) Then i=0
   If e >= Frametimer_schlagen Then e=0
   DrawImageRect Player_Davis(0,1),Player_x,player_y,Player_Davis(6,i)*80,player_Davis(6,8)*80,80,80
EndIf


;schlagen,spezial attacke nr.1
;rechts

If Richtung=1 And KeyDown(key_angriff) And KeyDown(key_rechts) Then
   e =e+1
   If e=frametimer_schlagen Then i=i+1      
   If i>= Player_Davis(7,9) Then i=0
   If e >= Frametimer_schlagen Then e=0
   DrawImageRect Player_Davis(0,4),Player_x,player_y,Player_Davis(7,i)*80,player_Davis(7,8)*80,80,80
EndIf

;links

If Richtung=-1 And KeyDown(key_angriff) And KeyDown(key_links) Then
   e =e+1
   If e=frametimer_schlagen Then i=i+1   
   If i>= Player_Davis(8,9) Then i=0
   If e >= Frametimer_schlagen Then e=0
   DrawImageRect Player_Davis(0,5),Player_x,player_y,Player_Davis(8,i)*80,player_Davis(8,8)*80,80,80
EndIf

Flip
Until KeyDown(1)


Nun zu meinem Problem:
Ich will erreichen,das ich nur einmal auf die schlagtaste zu drücken brauch,um die schlaganimation 1 mal durchlaufen zu lassen.
hab da mir schon was überlegt,mit einer attack=true variable zu arbeiten,aber das will nicht wirklich klappen,entweder muss ich trotzdem die Taste gedrückt halten,oder ich drück einmal die Taste,aber jetzt spielt er die Ani unendlich oft ab.
Wäre sehr dankbar für eure Vorschläge!!!
THX
 

MasterK

BeitragFr, März 12, 2004 17:38
Antworten mit Zitat
Benutzer-Profile anzeigen
attack-taste drücken -> variable true setzen
wenn die variable true ist, die animation abspielen und das drücken der attack-taste nicht abfragen (bzw nicht beachten), sobald die animation abgespielt wurde, variable wieder false setzen

rambo256

BeitragFr, März 12, 2004 18:36
Antworten mit Zitat
Benutzer-Profile anzeigen
genau das hab ich ja probiert nur irgendwie funzt es nicht,schreib ma bitte nen Beispielcode (nur einen kleinen) wie du das meinst und binde den mal in mein prog ein,also bei der schlaganimation,normal
Wäre nett
THX
 

girgl

BeitragFr, März 12, 2004 19:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
if keyhit(schlag)
 ATTACK=True
endif
if Attack=true
 ANIMATION ABSPIELEN
 ATTACK=False
endif
 ...

rambo256

BeitragFr, März 12, 2004 19:28
Antworten mit Zitat
Benutzer-Profile anzeigen
habs gemacht,aber der wiederholt immer alles.

rambo256

BeitragSa, März 13, 2004 11:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
;schlagen,normale attacke
;rechts

If Richtung=1 And KeyDown(key_shift)=0 And attack=1 Then
   e =e+1
   If e =frametimer_schlagen Then i=i+1   
   If e >= Frametimer_schlagen Then e=0
   If i >= Player_Davis(5,9) Then
      attack=0
      i=0
   EndIf
   DrawImageRect Player_Davis(0,0),Player_x,player_y,Player_Davis(5,i)*80,player_Davis(5,8)*80,80,80
EndIf


Mein Prob liegt bei dieser Zeile:
Code: [AUSKLAPPEN]
   If i >= Player_Davis(5,9) Then
      attack=0
      i=0
   EndIf

da setz ich ja attack auf 0 aber auch i auf 0,da i=0 is => attack belibt 1,da i ja kleiner Player_Davis(5,9) ist.Wie kann ich nun diese Zeile ändern,dass i auf 0 gestellt wird und gleichzeitig attack auf 0 gesetzt wird?
THX

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group