minicrispie: Wie kann ich Menschen bewegen?

Beitrag lesen

Hallo,

Hi,

Wie man die Positio eines Elementes veraendert, weisst Du?

Goldrichtig ... das ist nun wirklich nicht das problem :)

Am einfachsten sind Spielfelder in Matritzen aufzuteilen. Dazu bieten sich quadratische Felder oder Hexfelder an. Pac-Man z.b. ist ein typischer Vertrteter der mit nur 4 Richtungen auf Quadratischen Spielfeldern arbeitet. Du brauchst also links, rechts, hoch, runter. (+1, -1, -Breite, +Breite)
Dann kaeme eine Hexfeldloesung, bekannt aus vielen Strategiespielen. Die funktioniert ungefaehr genauso. Nur dass es ploetzlich 6 Seiten pro Feld gibt. Hier haben hoch und runter meist je 2 werte (fuer links und rechts). Hier waeren, je nach Matrix hoch und runter Werte von Breite-1 bis Breite+1.

Nagut ... diese Variante werde ich wohl nicht nehmen...

Als letztes kann man noch das Feld aus quadratischen Feldern anfuehren, die aber ueber 8 Seiten verfuegen. hier ist jeder der Ecken benfalls gueltiger Eintritts- und Austrittspunkt. Ein Beispiel hierfuer waere das gute alte Jagged Alliance.

Nur mal so zwischendurch ... ein Quadrat hat IMMER 4 Kanten ... was du meinst ist ein Vieleck ;)

Bleibt noch eine Kollisionsabfrage: Bei vielen Spielen bewegt man sich in solchen Spielbloecken. Es gibt selten etwas, das nicht in so einem Block untergebracht ist. Also stellt man schlicht und einfach fest, ob im naechsten Block, in den man moechte, etwas ist, das den Eintritt verhindert. Das kann eine Wand sein oder eine andere Spielfigur. Bei Spielen wie Jagged Alliance ist fuer jeden Block noch ein Rand definiert fuer den wiederum verschiedene Attribute gelten. durchsichtig aber nicht passierbar, von einer seite passierbar, gar nicht passierbar,...

Ich denke, etwas in der Art werde ich machen ...

Deine Bewegungsroutine wuerde also vor jedem Schritt pruefen ob es geradeaus weitergehen kann, indem sie das naechste Feld in Schrittrichtung prueft. Das ist relativ einfach und schnell realisierbar.

Naja ... sooo viel Ahnung hab ich nun auch wieder nicht, das ich in 5 Minuten ein Skript habe aber es würde gehen ^^

Nerviger wird eine echte Kollisionsabfrage die nicht ueber eine Matrix sondern ueber die Bildschirmposition funktioniert. Als man frueher noch Sprites ala Super Mario ueber den Schirm geschoben hat, bekam einfach jedes Sprite einen Kasten verpasst und es wurde bei jedem Interrupt (bei jedem Bewegungsschritt) nachgerechnet ob Sprites sich innerhalb des selben Bildschirmbereichs befinden. Das ist auch mit JS machbar, aber erfordert natuerlich einiges mehr an Berechnungen.

Ok ... ich werde also meine Spielfläche in blöcke aufteilen und die "Block-Überprüfung" machen.

Ich konnte dein Spiel nicht testen, weil es hier nicht geladen wird. Aber ich denke die erste Variante sollte fuer dich am Prakikabelsten sein.

Wieso nicht geladen?

Du wirst ja wohl eine Spielfeldmatrix im Speicher haben, auf der Du dann einfach die Bewegungen durchfuehrst um bei Erfolg die Grafikausgabe durchzufuehren.

Leider nicht. Aber ich werde es nachholen ^^

Bewaehrt haben sich dabei fuer mich immer mehrdimensionale Arrays. Eine Dimension fuer das eigentliche Spielfeld und weitere fuer moegliche andere Elemente.

Ok, da stimme ich dir zu...

Also als Zusammenfassung muss ich sagen:
Ich muss mein ganzes Zeug noch einmal "umcodieren", damit ich blöcke besitze, die ich in Arrays speichern kann(und werde). Danach prüfe ich bei jedem noch so dämlichen schritt eines Menschen, ob er in die richtung gehen kann oder ob er ausweichen soll und wenn ja wie und wie es nachher weitergeht ...

Puhh ... da kommt noch ne menge auf mich zu ^^

MfG. Christoph

--
Wo die Sprache aufhört, fängt die Musik an...
Selfcode:  ie:( fl:| br:^ va:| ls:/ fo:| rl:? n4:) ss:) de:] js:) ch:{ sh:) mo:) zu:)
Go to this