Fehler in FOR
-
Hallo,
ich versuche das Spiel 4 Gewinnt zu programmieren, dieser Abschnitt hier soll einer Prüfung der Diagonalen vornehmen(in eine Richtung).
Das ganze wird grafisch dargestellt, welches alles kein Problem ist.Das einzige Problem ist die Prüfung, ich setze die Steine dieser Prüft entweder nicht richtig, oder sagt mir an stellen das ich Gewonnen habe, obwohl es nicht so ist....kann mir einer helfen?
danke
//Hat Spieler eine Diagonale 1 Komplett besetzt? private boolean checkDiagonal1(byte p){ int x = 0; int hilf_c =0; int hilf_r =0; for (byte r=0;r<rows;r++){ for (byte c=0;c<columns;c++){ hilf_c=c; hilf_r=r; for (;hilf_c<columns;hilf_c++){ for (;hilf_r<rows;hilf_r++){ if (b[hilf_r][hilf_r]!=p) break; x++; //Abfang ob 4 Steine belegt sind. if (x == 4) { System.out.println("Gewonnen"); return true;}; } } } } return false; }
-
Ich weiß nicht ob es (nur) daran liegt, aber du solltest x immer da wieder auf 0 setzen, wo du die Hilfsvariablen setzt. Sonst wird das ja immer weiter hochgezählt.
Desweiteren prüfst du keine Diagonalen sondern nur Spalten (durch die innere For-Schleife).
-
Hi, wie kann ich das denn machen das er eine diagonale prüft?
-
kannst du mal den ansatz kommentieren o.ä. checks da grad nicht durch...
aber wieso prüfst du nicht nach dem ablegen ob ein stein (deiner farbe) angrenzt
und läufst dann nur die diagonale entlang (in beide richtungen) und guckst wielang die gerade ist ?
-
Ich wollte mit den beiden inneren FOR- Schleifen die Püfung der Diagonale ablaufen lassen, also die Diagonale "aufbauen", ich denke genau das geht in beiden inneren Schleifen nicht.
Kann mir einer da sagen wie ich diese Diagonale machen kann? die schleifen aussehen müsse?
mfg
-
http://en.wikipedia.org/wiki/Flood_fill
könnte für diesen anwendungsfall helfen