Hallo allemaal,
Ik ben bezig met het maken van Vier Op Een Rij in Java. Op dit moment werkt eigenlijk het meeste prima, alleen de controle of er een winnaar is werkt niet. Ik heb de volgende code geschreven om te kijken of een speler wint in het horizontale vlak.
LET OP: Ik wil dat niet per se vaststaat dat iemand wint wanneer hij 4 'marks' op een rij heeft (vandaar de CONNECT constante). Stel dat ik CONNECT verander in 5, dan zou de code nog steeds moeten werken.
Wat klopt er niet aan deze code? Hij werkt namelijk niet goed.
Bij voorbaat dank!
EDIT: De bovenstaande code werkt wanneer ik vanaf kolom 1 t/m kolom 4 een bepaalde mark plaats. Als ik vervolgens probeer om van 2 t/m 5 een bepaalde mark te plaatsen, denkt de code dat ik bij kolom 4 (dat is dus pas 3 marks vanaf 2) al gewonnen heb. Hetzelfde geldt voor alle andere mogelijkheden, behalve van kolom 7 t/m kolom 4 (dus van rechts naar links).
Ik ben bezig met het maken van Vier Op Een Rij in Java. Op dit moment werkt eigenlijk het meeste prima, alleen de controle of er een winnaar is werkt niet. Ik heb de volgende code geschreven om te kijken of een speler wint in het horizontale vlak.
LET OP: Ik wil dat niet per se vaststaat dat iemand wint wanneer hij 4 'marks' op een rij heeft (vandaar de CONNECT constante). Stel dat ik CONNECT verander in 5, dan zou de code nog steeds moeten werken.
Code:
private static final int CONNECT = 4;
private int height = 6;
private int width = 7;
public boolean winHorizontal(Mark mark) {
boolean result = false;
for (int row = 0; row < height; row++) {
int count = 0;
for (int column = 0; column < width - CONNECT + 1; column++) {
for (int next = 0; next < CONNECT; next++) {
if (board[row][column + next] == mark) {
count++;
if (count >= CONNECT) {
result = true;
break;
}
} else {
count = 0;
}
}
}
}
return result;
}
Wat klopt er niet aan deze code? Hij werkt namelijk niet goed.
Bij voorbaat dank!
EDIT: De bovenstaande code werkt wanneer ik vanaf kolom 1 t/m kolom 4 een bepaalde mark plaats. Als ik vervolgens probeer om van 2 t/m 5 een bepaalde mark te plaatsen, denkt de code dat ik bij kolom 4 (dat is dus pas 3 marks vanaf 2) al gewonnen heb. Hetzelfde geldt voor alle andere mogelijkheden, behalve van kolom 7 t/m kolom 4 (dus van rechts naar links).
Laatst bewerkt: