Was mache ich in dem JavaScriptcode nur falsch (Snake)?

...komplette Frage anzeigen

4 Antworten

http://codepen.io/anon/pen/qbPyrw?editors=001

Kreis ist nicht definiert (Die Funktion wird klein geschrieben):

Kreis(mittelpunktX, mittelpunktY, blockgrösse/ 2, true);

Syntaxfehler: funktion anstatt function:

block.prototype.equal = funktion(andererBlock) {
Schlange.prototype.kollisionCheck = funktion(kopf) {
Apfel.prototype.draw = funktion() {

Hier fehlt eine Klammer:

this.segmente[i].blockgrösseXML"Blue");



Sehr gute Arbeit :)

1

Die Aussage "Hilfe, es funktioniert nicht!" ist so für uns in etwas so informativ, wie wenn du zum Doktor gehst und sagst "Herr Doktor, ich bin krank, was habe ich", ohne Symptome zu schildern.

Hast du schon gedebugged?

Leider passte nicht alles drauf.

Das ist der rest:

if(this.kollisionCheck(neuerKopf)){
gameOver(true);
return;
}
this.segmente.unshift(neuerKopf);

if(neuerKopf.equal(apfel.position)){
punktestand++;
apfel.move();
}else {
this.segmente.pop();
}
};

Schlange.prototype.kollisionCheck = funktion(kopf){
var kollisionLinks = (kopf.Spalte === 0);
var kollisionOben = (kopf.Zeile === 0);
var kollisionRechts = (kopf.Spalte === breiteInBlöcken -1);
var kollisionUnten = (kopf.Zeile === höheInBlöcken -1);

var kollisionWand = kollisionLinks || kollisionOben || kollisionRechts || kollisionUnten;

var kollisionSelbst = false;
for(var i = 0; i < this.segmente.length; i++){
if(kopf.equal(this.segmente[i])){
kollisionSelbst = true;
}
}
return kollisionWand || kollisionSelbst;
};

Schlange.prototype.setDirection = function(neueRichtung){
if(this.richtung === "hoch" && neueRichtung === "runter"){
return;
}else if(this.richtung === "rechts" && neueRichtung === "links"){
return;
}else if(this.richtung === "runter" && neueRichtung === "hoch"){
return;
}else if(this.richtung === "links" && neueRichtung === "rechts"){
return;
}
this.nächsteRichtung = neueRichtung;
};

var Apfel = function(){
this.position = new block(10, 10);
};

Apfel.prototype.draw = funktion(){
this.position.kreisZeichnen("LimeGreen");
};

Apfel.prototype.move = function(){
var zufallSpalte = Math.floor(Math.random()*(breiteInBlöcken - 2)) +1;
var zufallZeile = Math.floor(Math.random()*(höheInBlöcken - 2)) +1;
this.position = new block(zufallSpalte, zufallZeile);
};

var schlange = new Schlange();
var apfel = new Apfel;

var intervalid = setInterval(function(){
ctx.clearRect(0,0,breite,höche);
PunktestandXML();
schlange.move();
schlange.draw();
apfel.draw();
rahmenZeichnen();
}, 100);

var richtungen = {
37: "links",
38: "hoch",
39: "rechts",
40: "runter"
};

$("body").keydown(function(event){
var neueRichtung = richtungen[event.keyCode];
if(neueRichtung !== undefined){
schlange.setDirection(neueRichtung);
}
});

Snake

Kannst du deinen Code vielleicht vollständig auf einem Pastebin posten, bspw. http://pastebin.com/ ? Lässt sich hier kaum lesen. (und es fehlt auch scheinbar einiges)

0
var blockgrösse = 10;
var breiteInBlöcken = breite/ blockgrösse;
var höheInBlöcken = höche/ blockgrösse;
Umlaute in den Variablen?

Was möchtest Du wissen?