Ich schreibe gerade ein Puzzle-Spiel…und bin auf ein Problem gestoßen. Ich muss die Steine zufällig durchnummerieren, z.B. 1 - n. Und natürlich darf kein zweiter Stein gleich benannt werden, darum scheidet das Math.random%-zeugs aus.
Wie könnte ich das lösen? Gibt es eine schönere Lösung als z.B. irgendwie mit nem Array wo ich dann benützte Felder markiere?
Und noch ne Frage hätt ich: kann man das so machen dass die Steine bei ihrer Generierung (in einer for-Schleife) eine fortlaufende Nummerierung mitbekommen? z.B. t1, t2, z3…immer die Nummer hinten dranhängen. Ginge das?
ich würds anders machen, schmeiß alle Zahlen die du hast in eine Liste und erzeuge die Indizes per Zufall nach denen du die Zahlen aus der Liste holst.
Was meinst du bei der Generierung ne Nummer erhalten?
naja, dass die Stein-Objekte z.B. nach dem Muster t + zahl benannt werden. Wenn also 15 Objekte erzeugt werden heißen sie t1 bis t15. Und wenn es 20 werden, dann t1 bis t20 .
Die Zahlen in eine List legen, diese Liste dann mit Collections.shuffle(list) durchmischen, und die Zahlen nacheinander rausnehmen wäre auch eine Möglichkeit.
wie willst du das anstellen? Variablennamen kann man nicht zur Laufzeit erzeugen (zumindest ist es in der Regel sinnlos)
Leg sie doch einfach in ner Liste ab wenn du sie nicht fest vorgeben willst.
Ich muss auch die win condition für das Puzzle überprüfen. Also wenn alle Steine (jeder Stein hat eine Zahl) schön nacheinander stehen, hat man gewonnen.
Was denk ihr? Wie mach ich das am umständlichsten?
Ich habe mit zwei for() schleifen angefangen, und dann die Steine untereinader verglichen. Aber das war sehr umständlich, ich musste array.getTile(i, j) mit array.getTile(i+1,y) vergleichen, wobei aber die Gefahr besteht vom array runterzufallen.
Aber was ich mir da zusammengeschrieben habe wird auf keinen fall gehen.
grnd ist das Objekt mit dem Array. Darauf wend ich Methoden an die mir einmal den Stein und aus diesem dann die Nummer rausholen. Aber es wird an der if-Abfragen scheitern. Und mir fällt momentan nichts besseres ein.