Mauer in Spiel einsetzen

weedo

Erfahrenes Mitglied
Hi,

ich habe angefangen eine Kleinigkeit zu schreiben, die mir ermöglichen soll ein Objekt mit Pfeiltasten über meinen Browser zu bewegen. Ich habe zusätzlich den Rand begrenzt, da es irgendwannn mal ein Spiel werden soll.

Die frage, die ich mir jetzt stelle ist:

Wie kann ich es am besten realisieren, dass wenn ich eine Art Mauer in die mitte Setze, dass mein Objekt dort anstößt und nicht weiter geht.

Theoretisch könnte ich ja eine If-Abfrage reinsetzen, die ähnlich wie die aussieht, die ich für die Ränder genommen habe. Wenn ich aber jetzt anfange irgendwelche Level zu schreiben, würde ich wahrscheinlich irgendwann an eine Grenze treffen, wo sich viele Fehler einschleichen würden.

Habt ihr vielleicht eine Idee, wie ich sowas am besten realisieren könnte?

Hier erstmal mein kleines Script:

HTML:
<html>
  <head>
    <script type="text/javascript">
      var newxpos = 0;
      var newypos = 0;
      function TasteGedrueckt (Ereignis) {
        if (!Ereignis)
          Ereignis = window.event;
        if (Ereignis.which) {
          Tastencode = Ereignis.which;
        } else if (Ereignis.keyCode) {
          Tastencode = Ereignis.keyCode;
        }
        objId = document.getElementById('player');
        oldxposlength = objId.style.left.length - 2;
        oldyposlength = objId.style.top.length - 2;
        oldxpospx = objId.style.left;
        oldypospx = objId.style.top;
        oldxpos = oldxpospx.substr(0, oldxposlength);
        oldypos = oldypospx.substr(0, oldyposlength);
        switch(Tastencode){
          case 39:
            //rechts
            if(oldxpos < 427) {
              oldxpos++;
              newxpos = oldxpos + 24;
              newxpos = newxpos + "px";
              newypos = oldypos + "px";
              moved = 1;
            }
          break
          case 37:
            //links
            if(oldxpos > 0) {
              newxpos = oldxpos - 25;
              newxpos = newxpos + "px";
              newypos = oldypos + "px";
            }
          break
          case 38:
            //oben
            if(oldypos > 0) {
              newypos = oldypos - 25;
              newypos = newypos + "px";
              newxpos = oldxpos + "px";
            }
          break;
          case 40:
            //unten
            if(oldypos < 427) {
              oldypos++;
              newypos = oldypos + 24;
              newypos = newypos + "px";
              newxpos = oldxpos + "px";
            }
          break;
          default:
            newxpos = oldxpos + "px";
            newypos = oldypos + "px";
          break
        }
        objId.style.left = newxpos;
        objId.style.top = newypos;
        //alert(newxpos + " - " + oldxpos + "\n" + newypos + " - " + oldypos)
      }
      document.onkeydown = TasteGedrueckt;
    </script>
  </head>
  <body>
    <div style="z-index: 1; position:absolute; top 50px; left: 50px; width: 502px; height: 502px; background-color: #F0F0F0; border: 1px solid #555555;" id="background">
      <div style="z-index: 2; position:absolute; top: 250px; left: 250px; width: 50px; height:50px; background-color: #555555; border: 1px dashed #FF0000;" id="player">
      </div>
    </div>
  </body>
</html>

lg weedo
 
Wie wäre es mit einem mehrdimensionalem Array, in dem du die begehbaren Felder speicherst?
Dann musst du nur Abfragen, ob das Feld begehbar ist und gegebenenfalls die Figur weitersetzen.
 
Oder umgekehrt, dass ich die Felder die nicht begehbar sind speichere und das abfrage. Das wäre glaub ich weniger aufwendig.

Das Problem ist aber ein anderes...Kann ich unendlich viele Informationen in einem Array speichern? Ich will die Spieloberfläche ja später noch erweitern. So dass sich die Umgebung bewegt, jedoch die Spielfigur mittig bleibt. Das Level soll sehr groß werden. Ähnlich wie Bei Pokemon oder Zelda.
 

Neue Beiträge

Zurück