Beiträge von BafTac

    ein test mit

    hat gezeigt, dass er anscheinend immer bis ans Ende wegschneidet also das zweite Argument im .splice funzt nicht richtig..


    *Head vs. Tisch*

    Problem gelöst:
    ich hab die Argumentübergabe von der .splice() Methode mit der von slice() verwechselt..
    bei slice muss man angeben BIS ZU WELCHEM element gelöscht werden soll..
    bei dem verwendeten splice die ANZAHL DER ZU LÖSCHENDEN..

    Problem behoben und es funktioniert wie es soll!

    Danke für deinen Tipp mit den alerts und generell danke für die Hilfe sonst würd ich wohl noch immer im Dunkeln tappen..

    gute Idee :)


    sorgt dafür, dass einmal ein alertfenster mit "i = 0" aufgeht, ansonsten geht weiterhin nichts


    sorgt dafür, dass zuerst j=1,j=2,..,j=6 und danach i=0 kommen und die äußere Schleife wird nur einmal durchgelaufen (logischerweise, wegen return)

    Also kann man eindeutig sagen, dass die äußere Schleife nur einmal durchlaufen wird..

    aber..

    erzeugt folgendes:
    Popup "test"
    popups "j1 spielername1","j2 spielername2",..."j6 spielername6"
    popup "i = 0"
    popup "test"
    popups "j1","j2","j3","j4"

    okay ich glaub ich hab irgendwo in den 4 zeilen von denen ich dachte, dass sie stimmen einen (denk-)fehler, da bei jedem versuch unterschiedlich viele pouops des zweiten durchgangs auftauchen.. Kannst du da vllt einen Fehler erkennen ohne genau zu wissen was hinter dem Zeugs steckt?
    Ich glaub, dass es iwas damit zu tun hat, dass ein zufälliges Element aus dem Array LaenderlisteVerteilen ausgewählt und dann rausgeschnitten wird..

    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:

    Code
    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:


    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..