Steuerung RPG

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Längenausdehnungskoeffiz.

Betreff: Steuerung RPG

BeitragDo, Okt 20, 2005 14:56
Antworten mit Zitat
Benutzer-Profile anzeigen
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

BeitragDo, Okt 20, 2005 16:45
Antworten mit Zitat
Benutzer-Profile anzeigen
Schau dir bitte Arrays oder Types an, damit geht das 100mal einfacher Smile
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

BeitragFr, Okt 21, 2005 10:13
Antworten mit Zitat
Benutzer-Profile anzeigen
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.

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group