AW: Javascript: Problem mit Solitär/Halma-Script
hallo Tim
Ich hab mir den Code nur kurz flüchtig angesehen und kann daher zum Ablauf des Programms wenig sagen.
Allerdings ist mir aufgefallen, dass hier viel Code doppelt (oder besser gesagt 49fach) steht.
Ich empfehle dir daher mit For-Schleifen zu arbeiten (oder von mir aus auch while). Somit kannst du sehr viel Code sparen und das Ganze wird übersichtlicher.
Bsp.: aus
Code:
[FONT=monospace]piece[COLOR=#009900][[/COLOR][COLOR=#cc0000]1[/COLOR][COLOR=#009900]][/COLOR][COLOR=#339933]=[/COLOR][COLOR=#cc0000]0[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[FONT=monospace]piece[COLOR=#009900][[/COLOR][COLOR=#cc0000]2[/COLOR][COLOR=#009900]][/COLOR][COLOR=#339933]=[/COLOR][COLOR=#cc0000]0[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[FONT=monospace]piece[COLOR=#009900][[/COLOR][COLOR=#cc0000]3[/COLOR][COLOR=#009900]][/COLOR][COLOR=#339933]=[/COLOR][COLOR=#cc0000]0[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[FONT=monospace]piece[COLOR=#009900][[/COLOR][COLOR=#cc0000]4[/COLOR][COLOR=#009900]][/COLOR][COLOR=#339933]=[/COLOR][COLOR=#cc0000]0[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[FONT=monospace]piece[COLOR=#009900][[/COLOR][COLOR=#cc0000]5[/COLOR][COLOR=#009900]][/COLOR][COLOR=#339933]=[/COLOR][COLOR=#cc0000]0[/COLOR][COLOR=#339933];[/COLOR][/FONT]
[FONT=monospace]...[/FONT]
[FONT=monospace]piece[COLOR=#009900][[/COLOR][COLOR=#cc0000]49[/COLOR][COLOR=#009900]][/COLOR][COLOR=#339933]=[/COLOR][COLOR=#cc0000]0[/COLOR][COLOR=#339933];[/COLOR][/FONT]
mache
Code:
for (i = 1; i <= 49; i++)
piece[i] = 0;
Edit: hab's mir jetzt auch noch etwas genauer angesehen
// mist, nach langem Schreiben ist mein FF abgestürzt. Hier nochmals meine weiteren Gedanken
ich kenne das Spiel nicht wirklich und ohne Kommentare fällt es mir auch schwer, den ganzen Ablauf nachzuvollziehen. Aber ich lasse mal meinen Gedanken freien Lauf:
in der Funktion checkSource(klick) wird zuerst überprüft, ob bereits ein Stecker markiert ist und führt dann wohl den Zug aus.
Ansonsten wird ein Stecker selektiert bzw. deselektiert
Code:
[COLOR=#000066][B]switch[/B][/COLOR][COLOR=#009900]([/COLOR]piece[COLOR=#009900][[/COLOR]klick[COLOR=#009900]][/COLOR][COLOR=#009900])[/COLOR] [COLOR=#009900]{[/COLOR]
[COLOR=#000066][B] case[/B][/COLOR] [COLOR=#cc0000]2[/COLOR][COLOR=#339933]:[/COLOR]
grafik[COLOR=#009900]([/COLOR]klick[COLOR=#339933],[/COLOR][COLOR=#cc0000]1[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
current [COLOR=#339933]=[/COLOR] [COLOR=#003366][B]null[/B][/COLOR][COLOR=#339933];[/COLOR]
ok [COLOR=#339933]=[/COLOR] [COLOR=#003366][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000066][B]break[/B][/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#000066][B]case[/B][/COLOR] [COLOR=#cc0000]1[/COLOR][COLOR=#339933]:[/COLOR]
[COLOR=#000066][B]if[/B][/COLOR] [COLOR=#009900]([/COLOR]current[COLOR=#339933]==[/COLOR][COLOR=#003366][B]null[/B][/COLOR][COLOR=#009900])[/COLOR][COLOR=#009900]{[/COLOR]
grafik[COLOR=#009900]([/COLOR]klick[COLOR=#339933],[/COLOR][COLOR=#cc0000]2[/COLOR][COLOR=#009900])[/COLOR][COLOR=#339933];[/COLOR]
current [COLOR=#339933]=[/COLOR] klick[COLOR=#339933];[/COLOR]
ok [COLOR=#339933]=[/COLOR] [COLOR=#003366][B]true[/B][/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR]
[COLOR=#000066][B]break[/B][/COLOR][COLOR=#339933];[/COLOR]
[COLOR=#009900]}[/COLOR]
Wenn piece[klick] = 2 ist, so ist der Stecker bereits selektiert und wird deselektiert, bei 1 umgekehrt. M.E. musst du diesen Teil anpassen. Und zwar denke ich, dass es in etwa so aussehen müsste:
Code:
if (!ok && klick != 0) {
switch(piece[klick]) {
case 2:
// das Deselektieren lassen wir so, wie es ist
grafik(klick, 1);
current = null;
ok = true;
break;
case 1:
// das if current == null wird in if current != null geaendert. Wir ueberpruefen naemlich vor dem selektieren, ob bereits ein Stecker selektiert ist.
// ist dies so, wird dieser Stecker erst deselektiert
if (current != null)
grafik(current, 1);
// nun selektieren wir den neuen Stecker
grafik (klick, 2);
current = klick;
ok = true;
}
}
Mein Code ist ungetestet. Es kann durchaus sein, dass noch ein oder zwei Flüchtigkeitsfehler drin sind. Aber es ist in etwa das, wie ich denke, muss es sein.
Gruss
Hätti