Bewegungen.

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

NtotheS

Betreff: Bewegungen.

BeitragMo, Dez 13, 2010 3:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Guten Abend /eher Nacht um die Zeit.


    If map(px,py+1) < 2 Then
    py = py + 1
    move = 1
    End If
    End If

    If KeyDown(200) Then
    If map(px,py-1) < 2 Then
    py = py - 1
    move = 1
    End If
    End If

    If KeyDown(203) Then
    If map(px-1,py) < 2 Then
    px = px - 1
    move = 1
    End If
    End If

    If KeyDown(205) Then
    If map(px+1,py) < 2 Then
    px = px + 1
    move = 1
    End If
    End If


Es sind nun die 4 Möglichkeiten die Spielfigur zu bewegen.

Würde jemand vielleicht mit mir das auseinander pflücken

If map(px,py+1) < 2 Then

- (px,py) das sind die Koordinaten von der derzeitigen Position des Spielers. WARUM aber +1?
Gut wenn [???Ich weiß nicht was] weniger ist als der Array 2... DANN...
py = py + 1

Rückt die figur + 1 weiter?
move = 1

Warum aber dieser Befehl? Die Figur rückt doch in den vorderen schritt weiter?
End If
End If

Vielen Dank.

Hummelpups

BeitragMo, Dez 13, 2010 8:53
Antworten mit Zitat
Benutzer-Profile anzeigen
damit wird vor der bewegung zu dem Feld geprüft, ob es
begehbar ist oder nicht.

Dann wurde in der Grafik vermutlich festgelegt, das 0 und 1 begehbare
Felder sind und alles ab Grafik 2 und aufwärts ist nicht
begehbar.

Dann musst du dir das Array auf ein Feld gelegt so vorstellen:
Code: [AUSKLAPPEN]
00122301
01223001
12003012
12003400
34001200
24102410


Und im Programm wird überall wo eine Zahl größer gleich 2 steht etwas
unbegehbares angezeigt.
 

NtotheS

BeitragMo, Dez 13, 2010 10:27
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke für die Antwort.


Ich habe aber speziell hiermit ein Problem.


(px-1,py)

Wahrscheinlich fehlt es mir etwas an logik oder ich gehe diese Dinge falsch an. Die px und py sind für mich Koordinaten, aber das -1 und das +1 sagt mir einfach nichts.

Vielen Dank


PS:

22222222
20000002
20000002
20000002
20000002
22222222

Also das wär nun meiner meinung eine Wand rundeherum. Also logisch gesehen, sollte man die Objekte..über die man nicht rüber gehen DARF immer zuletzt bauen um die übrigen Zahlen freizuhalten, ist das richtig?

Hummelpups

BeitragMo, Dez 13, 2010 10:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Erstmal hast du recht mit deinem Bild das das eine Mauer
außen herum ist.

stell dir vor dein Spieler steht auf dem Feld (5,5) [man fängt beim
grafischen koordinatensystem ja links oben an].

Diese 5,5 ist in den koordinaten px (PLayerX) und py(PlayerY)
gespeichert.wenn du nun nach links gehen willst, musst du ja
vorher schauen, ob der Punkt begehbar ist. Welche Koordinaten
hat denn der Punkt links vom Spieler? Es ist (4,5) und wenn du
das nun mit den Spielerkoordinaten vergleichst (5,5) kannst
du dir herleiten, das du bei einer linksbewegung px-1 (5-1=4) rechnen
musst.

Eventuell so verständlich
blucode - webdesign - Ressource - NetzwerkSim
BlitzBasic 2D - BlitzMax - MaxGUI - Monkey - BlitzPlus

Hubsi

BeitragMo, Dez 13, 2010 10:39
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Computer rechnet das einfach aus. Nicht mehr, nicht weniger Very Happy

Nehmen wir an Du bist mit dem Spieler (das X) in Deinem Array an X-Position 2:

22222
20002
22X02
20002
22222

Der Computer rechnet also 2 minus 1 gleich 1.
Im Array ist an Position 1 eine Wand -> Mist, dort kann ich nicht hin.

Gilt sinngemäß also auch für +1 und die Y-Achse.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

NtotheS

BeitragMo, Dez 13, 2010 10:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen dank erstmal euch beiden

Hubsi, hätte ich recht wenn ich behaupten würde das X steht auf der position (3,3)...also 3 von links nach rechts und dann nach unten.


Vielen Dank.

Hubsi

BeitragMo, Dez 13, 2010 10:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein Mr. Green Der Computer beginnt bei 0 zu zählen, sprich 0 - 1 - 2.
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...
 

NtotheS

BeitragMo, Dez 13, 2010 10:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Hmm ja jetzt wird mir das auch klar gut eine 2. Beginnt er aber auch von oben nach unten mit einer 0, ich denke nicht.

Komisch ich bin zwar viele Tutorials durchgegangen, aber die frage ob es auch von oben mit 0 beginnt wird nicht erwähnt.

Hummelpups

BeitragMo, Dez 13, 2010 11:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Je nachdem wie man es einprogrammiert kannst du auch von 1 anfangen

aber wenn dann beide (X,Y) von 0 an oder beide von 1 an. NIcht mischen.
(auch das geht, aber dann kommst du total durcheinander)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group