Steuerung RPG
Übersicht
BlitzBasic
Beginners-Corner
Längenausdehnungskoeffiz.Betreff: Steuerung RPG |
Antworten mit Zitat |
|
|---|---|---|
|
Wie kann man beim folgenden Code verhindern, dass man schräg gehen kann? wenn man oben und links drückt soll passieren was man zuerst gedrückt hat.
;; Grafikmodus Graphics 320,240,16,1 SetBuffer BackBuffer() ;;;; Loadphase Char001 = LoadAnimImage("Hero.bmp", 24, 32, 0, 12) Test = LoadImage("Feld.bmp") MaskImage Char001, 255, 0, 255 ; BGX = 100 BGY = 100 Char001FR = 7 ; Counter001 = 1 Counter002 = 1 Counter003 = 1 Counter004 = 1 Counter005 = 1 Counter006 = 1 Counter007 = 1 Counter008 = 1 ;; BG = Test ;;Anfang Schleife Repeat Cls ;; Steuerung Gosub SteuerungUnten Gosub SteuerungOben Gosub SteuerungLinks Gosub SteuerungRechts ;; Bilder malen DrawImage BG, BGX, BGY DrawImage Char001, 148, 104, Char001FR ;; Ende Schleife Flip Until KeyHit(1) End ;;;;;;;;;;;;;;;;;;;;;;; ;;; Unterprogramme .SteuerungUnten If Counter002 = 5 Then Counter002 = 1 If Counter001 = 8 If Counter002 = 1 Then Char001FR = 8 If Counter001 = 8 If Counter002 = 2 Then Char001FR = 7 If Counter001 = 8 If Counter002 = 3 Then Char001FR = 6 If Counter001 = 8 If Counter002 = 4 Then Char001FR = 7 If Counter001 = 8 Then Counter002 = Counter002 + 1 If Counter001 = 8 Then Counter001 = 1 ; If KeyDown(208) Or KeyHit(208) Then BGY = BGY - 1 If KeyDown(208) Or KeyHit(208) Then Counter001 = Counter001 + 1 Return .SteuerungOben If Counter004 = 5 Then Counter004 = 1 If Counter003 = 8 If Counter004 = 1 Then Char001FR = 2 If Counter003 = 8 If Counter004 = 2 Then Char001FR = 1 If Counter003 = 8 If Counter004 = 3 Then Char001FR = 0 If Counter003 = 8 If Counter004 = 4 Then Char001FR = 1 If Counter003 = 8 Then Counter004 = Counter004 + 1 If Counter003 = 8 Then Counter003 = 1 ; If KeyDown(200) Or KeyHit(200) Then BGY = BGY + 1 If KeyDown(200) Or KeyHit(200) Then Counter003 = Counter003 + 1 Return .SteuerungRechts If Counter006 = 5 Then Counter006 = 1 If Counter005 = 8 If Counter006 = 1 Then Char001FR = 5 If Counter005 = 8 If Counter006 = 2 Then Char001FR = 4 If Counter005 = 8 If Counter006 = 3 Then Char001FR = 3 If Counter005 = 8 If Counter006 = 4 Then Char001FR = 4 If Counter005 = 8 Then Counter006 = Counter006 + 1 If Counter005 = 8 Then Counter005 = 1 ; If KeyDown(205) Or KeyHit(205) Then BGX = BGX - 1 If KeyDown(205) Or KeyHit(205) Then Counter005 = Counter005 + 1 Return .SteuerungLinks If Counter008 = 5 Then Counter008 = 1 If Counter007 = 8 If Counter008 = 1 Then Char001FR = 11 If Counter007 = 8 If Counter008 = 2 Then Char001FR = 10 If Counter007 = 8 If Counter008 = 3 Then Char001FR = 9 If Counter007 = 8 If Counter008 = 4 Then Char001FR = 10 If Counter007 = 8 Then Counter008 = Counter008 + 1 If Counter007 = 8 Then Counter007 = 1 ; If KeyDown(203) Or KeyHit(203) Then BGX = BGX + 1 If KeyDown(203) Or KeyHit(203) Then Counter007 = Counter007 + 1 |
||
|
|
Spikespine |
Antworten mit Zitat |
|---|---|---|
|
Schau dir bitte Arrays oder Types an, damit geht das 100mal einfacher Dass man nicht schräg gehen kann verhinderst du, indem du eine Elseif Konstruktion machst: Wenn Hoch gedrckt wird dann... sonst: wenn links gedrückt wird... sonst: wenn rechts gedrückt wird... sonst: wenn runter gedrückt wird... so würd ichs machen. Lässt sich aber in deinen Code nicht so einfach übernehmen. Ansonsten einfach in eine Variable speichern, ob eine Bewegung ausgeführt wurde. Spikespine |
||
| Athlon 64 3700+ | 1024 MB RAM | GeForce 7900 GT | Blitz2D, Blitz3D, BlitzPlus, BlitzMax | ||
Omenaton_2 |
Antworten mit Zitat |
|
|---|---|---|
|
Es gibt viele Möglichkeiten. Der Code könnte noch stark optimiert werden, aber jetzt nur kurz eine Möglichkeit:
;; Steuerung Weiter = 1 ; If Weiter = 1 Then Gosub SteuerungUnten If Weiter = 1 Then Gosub SteuerungOben If Weiter = 1 Then Gosub SteuerungLinks If Weiter = 1 Then Gosub SteuerungRechts ;; Bilder malen Bei der SteuerungUnten, etc Subrutinen setzt du dann die Variable Weiter auf Null (entspricht Nein) wenn da eine Taste gedrückt wurde und damit das Objekt bewegt wurde. Dann wird nicht mehr noch zu der Bewegung in andere Richtunngen gesprungen. |
||
Übersicht
BlitzBasic
Beginners-Corner
Powered by phpBB © 2001 - 2006, phpBB Group
