Bewegung nur bei Tastendruck
Übersicht

![]() |
MikeDeeBetreff: Bewegung nur bei Tastendruck |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hab mir diesen Code bei Snack-tut zusammengestellt,
Code: [AUSKLAPPEN] Graphics 320,240,16,2 SetBuffer BackBuffer() SeedRnd MilliSecs() head_x = 15 head_y = 12 Const Nord = 1 Const Ost = 2 Const Sued = 3 Const West = 4 ;Hauptschleife Repeat Cls ;Norden? If KeyHit(200) Then Richtung = 1 EndIf ;Osten? If KeyHit(205) Then Richtung = 2 EndIf ;Süden? If KeyHit(208) Then Richtung = 3 EndIf ;Westen? If KeyHit(203) Then Richtung = 4 EndIf ;Zeit abfragen If MilliSecs() - letztebewegung > 50 Then ;Je weniger, desto schneller! letztebewegung = MilliSecs() ;Bewegung durchführen…. head_x = head_x - (Richtung=West) + (Richtung=Ost) head_y = head_y - (Richtung=Nord) + (Richtung=Sued) If head_x < 0 Then head_x = 31 If head_x > 31 Then head_x = 0 If head_y < 0 Then head_y = 23 If head_y > 23 Then head_y = 0 EndIf ;Kopf zeichnen Color 255,255,255 Rect head_x*10,head_y*10,10,10,1 Flip Until KeyHit(1) End Wie muss ich den Code ändern, damit sich der "Kopf" nicht laufend bewegt, sondern nur wenn man die entsprechende Richtungstaste drückt.[/code] |
||
Nicht wenige benutzen die Anonymität des Internets um berühmt zu werden. |
![]() |
SYSThernBetreff: jo |
![]() Antworten mit Zitat ![]() |
---|---|---|
also ich würde des so machen :
Code: [AUSKLAPPEN] If KeyDown(200) Then Richtung = 1 Else Richtung = 0 EndIf If KeyDown(205) Then Richtung = 2 Else Richtung = 0 EndIf If KeyDown(208) Then Richtung = 3 Else Richtung = 0 EndIf If KeyDown(203) Then Richtung = 4 Else Richtung = 0 EndIf |
||
Tools and Programms
-------------------- www.systhern.de |
![]() |
MikeDee |
![]() Antworten mit Zitat ![]() |
---|---|---|
klappt nicht ganz, lässt sich nur nach links bewegen.
Außerdem muss man für jede Bewegung extra drücken, es gibt kein Dauerdruck p.s. gibt es ein bewegungs-tut^^ |
||
![]() |
CaesiumBetreff: Re: jo |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] If KeyDown(200) Then head_y = head_y - 1
If KeyDown(208) Then head_y = head_y + 1 If KeyDown(203) Then head_x = head_x - 1 If KeyDown(205) Then head_x = head_x + 1 kurz und knapp. richtungsvariablen brauchst du für diese simple bewegungsroutine eigentlich nicht. gruß, caesium edit: wenn du die variablen der xpos/ypos zu floats machst (head_x#, head_y#) kannst du ganz einfach die geschwindigkeit regulieren, indem du eben, anstatt der ganzen zahlen, kommazahlen zur position addierst/subtrahierst. |
||
Der Vorteil der Klugheit liegt darin, dass man sich dumm stellen kann. Das Gegenteil ist da schon schwieriger. ![]() |
- Zuletzt bearbeitet von Caesium am Mo, Mai 12, 2008 22:01, insgesamt einmal bearbeitet
![]() |
Noobody |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es gäbe zwei Möglichkeiten:
1. Möglichkeit, bei dem der bisherige Code grösstenteils beibehalten wurde: Code: [AUSKLAPPEN] Graphics 320,240,16,2
SetBuffer BackBuffer() SeedRnd MilliSecs() head_x = 15 head_y = 12 Const Nord = 1 Const Ost = 2 Const Sued = 3 Const West = 4 ;Hauptschleife Repeat Cls ;Norden? If KeyDown(200) Then Richtung = 1 EndIf ;Osten? If KeyDown(205) Then Richtung = 2 EndIf ;Süden? If KeyDown(208) Then Richtung = 3 EndIf ;Westen? If KeyDown(203) Then Richtung = 4 EndIf ;Zeit abfragen If MilliSecs() - letztebewegung > 50 Then ;Je weniger, desto schneller! letztebewegung = MilliSecs() ;Bewegung durchführen…. head_x = head_x - (Richtung=West) + (Richtung=Ost) head_y = head_y - (Richtung=Nord) + (Richtung=Sued) If head_x < 0 Then head_x = 31 If head_x > 31 Then head_x = 0 If head_y < 0 Then head_y = 23 If head_y > 23 Then head_y = 0 EndIf ;Kopf zeichnen Color 255,255,255 Rect head_x*10,head_y*10,10,10,1 Richtung = 0 Flip Until KeyHit(1) End 2. Möglichkeit: Code: [AUSKLAPPEN] Graphics 320,240,16,2
SetBuffer BackBuffer() SeedRnd MilliSecs() head_x = 15 head_y = 12 Const Nord = 1 Const Ost = 2 Const Sued = 3 Const West = 4 ;Hauptschleife Repeat Cls ;Norden? If KeyDown(200) Then head_y = head_y - 1 EndIf ;Osten? If KeyDown(205) Then head_x = head_x + 1 EndIf ;Süden? If KeyDown(208) Then head_y = head_y + 1 EndIf ;Westen? If KeyDown(203) Then head_x = head_x - 1 EndIf ;Zeit abfragen If MilliSecs() - letztebewegung > 50 Then ;Je weniger, desto schneller! letztebewegung = MilliSecs() ;Bewegung durchführen…. If head_x < 0 Then head_x = 31 If head_x > 31 Then head_x = 0 If head_y < 0 Then head_y = 23 If head_y > 23 Then head_y = 0 EndIf ;Kopf zeichnen Color 255,255,255 Rect head_x*10,head_y*10,10,10,1 Flip Until KeyHit(1) End Aber ich kann dir nur dazu raten, solche Dinge selber zu versuchen. Wenn du ein Tutorial liest, verstehst du ja nachher den Code (zumindest so einen kleinen wie hier) - also bist du auch in der Lage, ihn nach deinen Vorstellungen zu verändern. |
||
Man is the best computer we can put aboard a spacecraft ... and the only one that can be mass produced with unskilled labor. -- Wernher von Braun |
![]() |
MikeDee |
![]() Antworten mit Zitat ![]() |
---|---|---|
das mit dem Selbst herausfinden kommt noch
hab z.B. rausbekommen das man die richtungs const bei 2. Code nicht braucht^^ das einzige was ich überhauptnicht durchblick ist des Rect head_x*10,head_y*10,10,10,1 (die lösung ist mir inzwischen beim Essen machen gekommen ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group