HoR$t.On3: Frage zu Snake

Beitrag lesen

Moin erstmal!
als erstes möchte ich sagen, das ich kaum Erfahrung mit JS habe und mein stil desshalb etwas zweifelhaft sein kann.

Nun zur Frage:
Ich wollte Snake zu Programmieren und habe das auch soweit geschafft. Jedoch lässt sich die Schlange nicht verlängern. Man würde als erstes Denken, einfach die Variable "Schwnzlänge" erhöhen, dann Teielt sich die Schlange aber immer. Habe schon viel versucht, kann die Schlange während des Spiels aber nicht verändern. Für alle die sich da ran wagen wollen: wenn man Futter einsammelt, und sich die Punktzahl erhöt, soll die Schlange ein Feld länger werden. Binn auf die lösungen gespannt und bedanke mich schonmal!

hier das Script:

<script language="JavaScript" type="text/JavaScript">
<!--
// Variablen Definieren:
// Editierbar:
var Zellenbreite = 10;
var Zellenhöhe = 10;
var AnzahlZeilen = 20;
var AnzahlSpalten = 20;
var StartPositionY = 20;   // Die Y-Achse ist die Anzahl von Zeilen
var StartPositionX = 10;   // Die X-Achse ist die Anzahl von Spalten
var SchlangenFarbe = "cc0000";  // Farbwert ohne "#" angeben! Buchstaben klein schreiben!
var bgFarbe = "5f80f5";    // Farbwert ohne "#" angeben! Buchstaben klein schreiben!
var FutterFarbe = "000000";   // Farbwert ohne "#" angeben! Buchstaben klein schreiben!
var Richtung = "hoch";    // "hoch", "runter", "links" oder "rechts"!
var Geschwindigkeit = 50   // 1000 = 1 Sekunde
var Schwanzlänge = 10;
var MaxPunkte = 0;     // Die Maximale Anzahl, die an Punkten erreicht werden kann. 0 = Unbegrenzt.
// nicht mehr Editieren!
var Y = StartPositionY;
var X = StartPositionX;
var Punkte = 0;
var Kopf = "zelle" + StartPositionX + "_" + StartPositionY;
var s = -1;
var Durchgang = -1;
Schwanz = new Array(Schwanzlänge);

// Starten:
Tabelle();
Futter();
// Schlange Einfügen:
if (StartPositionY <= AnzahlZeilen && StartPositionX <= AnzahlSpalten) {
 document.all[Kopf].style.backgroundColor = "#" + SchlangenFarbe;
 Schlange();
} else {alert("Die Schlange befindet sich nicht auf dem Spielfeld!");}

function Tabelle() {
 document.writeln("<h1>Snake:</h1><br>Steuerung:<br>W = hoch<br>A = links<br>S = runter<br>D = rechts<br> ")
 document.writeln("<table border="1" cellpadding="0" cellspacing="0">");
 for (var Zeilen = 1; Zeilen <= AnzahlZeilen; Zeilen++) {
  document.writeln("<tr>");
  for (var Spalten = 1; Spalten <= AnzahlSpalten; Spalten++) {
   var ID = "zelle" + Spalten + "_" + Zeilen;
   document.writeln("<td width=" + Zellenbreite + " height=" + Zellenhöhe + " id=" + ID + " bgcolor="#" + bgFarbe + ""></td>");
  }
  document.writeln("</tr>");
 }
 document.writeln("</table>");
}

function Schlange() {
 document.onkeypress = Tasten;
 if (s <= Schwanzlänge + Punkte) Schwanz[s] = Kopf;
// alert(Schwanz)
 var AuswahlSchwanz = Schwanz[Durchgang - Schwanzlänge];
 Kopf = "zelle" + X + "_" + Y;
 switch (Richtung) {
  case "hoch":
   if (Y < 1 || Y > AnzahlZeilen || X < 1 || X > AnzahlSpalten) {alert("Spiel Beendet!\nSie haben " + Punkte * 10 + " Punkte"); break;}
   if (Durchgang > 0) {
    if (document.all[Kopf].style.backgroundColor == "#" + SchlangenFarbe) {alert("Spiel Beendet!\nSie haben " + Punkte * 10 + " Punkte"); break;}
    if (document.all[Kopf].style.backgroundColor == "#" + FutterFarbe) {if (MaxPunkte != 0) {if (Punkte <= MaxPunkte) {Punkte++;}}else if (MaxPunkte == 0) {Punkte++;} Futter();}
   }
   if (Durchgang >= Schwanzlänge) document.all[AuswahlSchwanz].style.backgroundColor = "#" + bgFarbe;
   document.all[Kopf].style.backgroundColor = "#" + SchlangenFarbe;
   if (Y >= 0 && Richtung == "hoch") {Y--; window.setTimeout("Schlange()",Geschwindigkeit)}
   else if (Richtung != "hoch") {Schlange(); break;}
  break;
  case "runter":
   if (Y < 1 || Y > AnzahlZeilen || X < 1 || X > AnzahlSpalten) {alert("Spiel Beendet!\nSie haben " + Punkte * 10 + " Punkte"); break;}
   if (Durchgang > 0) {
    if (document.all[Kopf].style.backgroundColor == "#" + SchlangenFarbe) {alert("Spiel Beendet!\nSie haben " + Punkte * 10 + " Punkte"); break;}
    if (document.all[Kopf].style.backgroundColor == "#" + FutterFarbe) {if (MaxPunkte != 0) {if (Punkte <= MaxPunkte) {Punkte++;}}else if (MaxPunkte == 0) {Punkte++;} Futter();}
   }
   if (Durchgang >= Schwanzlänge) document.all[AuswahlSchwanz].style.backgroundColor = "#" + bgFarbe;
   document.all[Kopf].style.backgroundColor = "#" + SchlangenFarbe;
   if (Y <= AnzahlZeilen && Richtung == "runter") {Y++; window.setTimeout("Schlange()",Geschwindigkeit)}
   else if (Richtung != "runter") {Schlange(); break;}
  break;
  case "links":
   if (Y < 1 || Y > AnzahlZeilen || X < 1 || X > AnzahlSpalten) {alert("Spiel Beendet!\nSie haben " + Punkte * 10 + " Punkte"); break;}
   if (Durchgang > 0) {
    if (document.all[Kopf].style.backgroundColor == "#" + SchlangenFarbe) {alert("Spiel Beendet!\nSie haben " + Punkte * 10 + " Punkte"); break;}
    if (document.all[Kopf].style.backgroundColor == "#" + FutterFarbe) {if (MaxPunkte != 0) {if (Punkte <= MaxPunkte) {Punkte++;}}else if (MaxPunkte == 0) {Punkte++;} Futter();}
   }
   if (Durchgang >= Schwanzlänge) document.all[AuswahlSchwanz].style.backgroundColor = "#" + bgFarbe;
   document.all[Kopf].style.backgroundColor = "#" + SchlangenFarbe;
   if (X >= 0 && Richtung == "links") {X--; window.setTimeout("Schlange()",Geschwindigkeit)}
   else if (Richtung != "links") {Schlange(); break;}
  break;
  case "rechts":
   if (Y < 1 || Y > AnzahlZeilen || X < 1 || X > AnzahlSpalten) {alert("Spiel Beendet!\nSie haben " + Punkte * 10 + " Punkte"); break;}
   if (Durchgang > 0) {
    if (document.all[Kopf].style.backgroundColor == "#" + SchlangenFarbe) {alert("Spiel Beendet!\nSie haben " + Punkte * 10 + " Punkte"); break;}
    if (document.all[Kopf].style.backgroundColor == "#" + FutterFarbe) {if (MaxPunkte != 0) {if (Punkte <= MaxPunkte) {Punkte++;}}else if (MaxPunkte == 0) {Punkte++;} Futter();}
   }
   if (Durchgang >= Schwanzlänge) document.all[AuswahlSchwanz].style.backgroundColor = "#" + bgFarbe;
   document.all[Kopf].style.backgroundColor = "#" + SchlangenFarbe;
   if (X <= AnzahlSpalten && Richtung == "rechts") {X++; window.setTimeout("Schlange()",Geschwindigkeit)}
   else if (Richtung != "rechts") {Schlange(); break;}
  break;
 }
 if(Durchgang < Schwanzlänge*2) Durchgang++;
 else Durchgang = Schwanzlänge;
 if(s < Schwanzlänge) s++;
 else s = 0;
}

function Futter() {
 Yfutter = Math.round(Math.random() * (AnzahlZeilen - 1) + 1);
 Xfutter = Math.round(Math.random() * (AnzahlSpalten - 1) + 1);
 ZelleFutter = "zelle" + Yfutter + "_" + Xfutter;
 if (document.all[ZelleFutter].style.backgroundColor != "#" + SchlangenFarbe) {document.all[ZelleFutter].style.backgroundColor = "#" + FutterFarbe;}
 else {Futter();}
}

function Tasten() {
 TastenCode = event.keyCode;
 switch (TastenCode) {
  case 119: if (Richtung != "runter") Richtung = "hoch"   ; break;
  case 115: if (Richtung != "hoch"  ) Richtung = "runter" ; break;
  case 97:  if (Richtung != "rechts") Richtung = "links"  ; break;
  case 100: if (Richtung != "links" ) Richtung = "rechts" ; break;
 }
}
-->
</script>