Frage von Eisenkoenig, 75

(Spiellogik) Wie stelle ich das an?

Guten Morgen,

Und zwar geht es um ein kleines Spiel, was ich in Javascript entwickeln möchte.
Es geht darum, das ich etwa 20 Kästen aufzeichne und ein Kästchen für den Spieler.
Sobald der Spieler auf der Tastatur nach Steuerkreuz oben, rechts, links oder unten drückt, soll das Rote Kästchen sich in die Richtung um ein Kästchen bewegen, vorausgesetzt es ist in der Richtung ein blaues Kästchen angegrenzt.
Wie soll ich das erreichen ?
Also die abfrage ob z.B. Links vom roten Kästchen ein blaues Kästchen liegt ?
Danke schonmal

Hilfreichste Antwort - ausgezeichnet vom Fragesteller
von fluffiknuffi2, 30

Indem du der ganzen Sache erst mal die Daten-Repräsentation des Spielfelds zugrunde liegst. Klassischer Weise wäre das hier ein zweidimensionaler Array:

// 0 = leer, 1 = blau, 2 = rot. 
var zeile1 = [ 1, 1, 1, 1, 0];
var zeile2 = [ 1, 1, 0, 1, 1];
var zeile1 = [ 0, 1, 1, 2, 1];
var zeile1 = [ 0, 1, 1, 0, 0];
var spielfeld = [ zeile1, zeile2, zeile3, zeile4 ];

Nun kannst du immer prüfen, was sich an Position x | y befindet. Natürlich muss der spielfeld-Array geändert werden, wenn das rote Feld verschoben wird.

Davon quasi unabhängig ist dann der Teil des Programms, der sich um die Grafikausgabe kümmert. Wie schon vorgeschlagen wurde, bietet sich dafür das canvas-Element an, da es genau dafür gedacht ist, derartige Grafikaussagen zu zeichnen. Es bietet außerdem eine Methode zum Zeichnen von Rechtecken an. Du durchläufst dann einfach bei jedem Zeichnen-Vorgang mit zwei Schleifen die beiden Ebenen des Arrays (Zeilen & Spalten) und zeichnest die Rechtecke, je nach Wert in der entsprechenden Farbe.

Kommentar von fluffiknuffi2 ,

Eventuell solltest du dir die Position des roten Feldes extra vermerken, damit du leicht auf sie zugreifen kannst:


var rotZeile = 3;
var rotSpalte = 4;


Nun und wie du dann prüfst ob sich an der neuen Position etwas befindet?

// 1 gerade nach oben:
var neuZeile = rotZeile;
var neuSpalte = rotSpalte - 1;

var ziel = spielfeld[neuZeile][neuSpalte];

if (ziel == 1) {
alert('Geht nicht!');
} else {
alert('Geht!);
}



Antwort
von Gastnr007, 42

du baust dir ja irgendwie ein solches Spielfeld. Wenn du das dann hast, kannst du ja die Position im Namen verbauen oder es darauf aufbauen und dann einfach -1 / +1 bei den Koordinaten rechnen

Kommentar von Eisenkoenig ,

Schon klar, aber wie soll das rote Kästchen wissen, dass links, 30px weiter ein blaues Kästchen existiert?
Es sind 2 verschiedene Objekte.

Kommentar von Gastnr007 ,

sie haben doch sicherlich Namen... nenn das eine "Feld 5/6" und dann daneben "Feld 6/6". Dann weißt du, dass wenn du auf document.getElementById("Feld "+(x+1)+"/"+y) zugreifst, das das Nachbarfeld ist...

Kommentar von Gastnr007 ,

alternativ könntest du auch einfach dein Spiel auf ein Canvas malen

Antwort
von G0lD3Nc0Ld, 19

Du musst überprüfen, ob an der Stelle schon eines ist. Dazu nimmst du für z.B. links die Coord. 6-1,6 (1 links von 6,6) und überprüfst, ob an diesen Coord. schon ein blaues Feld ist. Dazu musst du alle bestehenden Objekte durchgehen oder einfach eine Liste/Array mitführen, in dem besetzte Coord. stehen.

Keine passende Antwort gefunden?

Fragen Sie die Community