Hey Leute,
ich versuche derzeit das Brettspiel "Risiko" in JavaScript zu programmieren, habe jetzt aber ein Problem bei welchem ich nichtmehr weiter weiß. Und zwar geht es darum, am Anfang des Spiels die Länder auf die Spieler aufzuteilen. Begonnen habe ich mit folgender Funktion:
function laender_verteilen() {
var LaenderlisteVerteilen = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47];
for(var j=1;j<Spielernamen.length;j++) { //läuft jeden Spieler einmal durch
var vertLand = Math.floor(LaenderlisteVerteilen.length * Math.random()); //vertLand ist eine RandomZahl zwischen 0 und ElementAnzahl
Spieler[j]['laender_besitz'].push(LaenderlisteVerteilen[vertLand]); //spieler der gerade durchlaufen wird bekommt das ausgewählte Land
Land[LaenderlisteVerteilen[vertLand]]['Truppen'] = 1; //Truppen in ausgewähltem Land werden auf 1 gesetzt
LaenderlisteVerteilen.splice(vertLand,vertLand+1); //ausgewähltes Land wird aus Liste gelöscht
}
}
Diese läuft mit Absicht nur einmal alle Spieler einmal durch und weist jedem ein Land zu.
Da es jetzt aber abhängig von der Spieleranzahl ist, wieviele Länder die Spieler am Anfang bekommen, wollte ich diese for-Schleife in eine andere for-Schleife setzen:
function laenderVerteilen() {
var LaenderlisteVerteilen = [0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47];
for(var i=0;i<=3;i++) { //hier habe ich 3 nur mal zum Testen genommen, wird später dann durch eine Variable ersetzt
for(var j=1;j<Spielernamen.length;j++) {
var vertLand = Math.floor(LaenderlisteVerteilen.length * Math.random());
Spieler[j]['laender_besitz'].push(LaenderlisteVerteilen[vertLand]);
Land[LaenderlisteVerteilen[vertLand]]['Truppen'] = 1;
LaenderlisteVerteilen.splice(vertLand,vertLand+1);
}
}
}
Alles anzeigen
Doch aus irgendeinem Grund funktioniert diese Funktion nicht.. Wenn ich in die äußere for-Schleife (gleich nach der inneren) ein break; oder return; setze funktioniert die Funktion zwar (und auch das restliche JS-Zeug auf der Siete wird ausgeführt), aber erwartungsgemäß wird die äußere Schleife dann auch nur einmal durchlaufen (und führt somit zum selben Ergebnis wie mein "Prototyp").
Ich sitze da jetzt schon gute 2 Stunden, hab etliche Male gegoogelt, es sogar schon mit while-Schleifen (statt der äußeren for) probiert, aber die verhalten sich dann genauso.. Findet ihr vllt den Fehler den ich die ganze Zeit übersehe und könnt mir helfen?
Danke schon im Vorraus!
LG
BafTac
PS: Tippfehler in der zweiten Variante sind ausgeschlossen, weil ich den Teil eig nur kopiert habe, schon mehrere Male danach gesucht habe und es ja zumindest einmal funktioniert wenn ein "return;" da ist..