Hallo liebe Leute,
Ich brauche unbedingt Hilfe bei einem Java-Projekt für die Uni, das ich schon bald abgeben muss.
Ich mache zum ersten Mal ein Java-Programm und es lief bis jetzt auch ganz gut, aber jetzt komme ich absolut nicht weiter. Ich weiß nämlich nicht, wo der Fehler liegt, dass vier Steine in einer Reihe manchmal nicht erkannt werden.
Wenn ihr den ganzen Quelltext sehen wollt, wäre es lieb, mir eure E-mail-Adresse zu geben, dann schick ich euch das ganze Programm. Die Logik kann ich schonmal hier reinstellen, vielleicht ist da ja schon der Fehler drin.
Vielen Dank für eure Hilfe!
Anna
Ich brauche unbedingt Hilfe bei einem Java-Projekt für die Uni, das ich schon bald abgeben muss.
Ich mache zum ersten Mal ein Java-Programm und es lief bis jetzt auch ganz gut, aber jetzt komme ich absolut nicht weiter. Ich weiß nämlich nicht, wo der Fehler liegt, dass vier Steine in einer Reihe manchmal nicht erkannt werden.
Wenn ihr den ganzen Quelltext sehen wollt, wäre es lieb, mir eure E-mail-Adresse zu geben, dann schick ich euch das ganze Programm. Die Logik kann ich schonmal hier reinstellen, vielleicht ist da ja schon der Fehler drin.
Vielen Dank für eure Hilfe!
Anna
Code:
public boolean vierFinden (int y, int x, int spieler)
{
boolean b1 = vierFindenX(y, x, spieler);
boolean b2 = vierFindenY(y, x, spieler);
boolean b3 = vierFindenD1(y, x, spieler);
boolean b4 = vierFindenD2(y, x, spieler);
return (b1 || b2 || b3 || b4);
}
// Diese Methode soll das Spielfeld danach durchsuchen, ob 4 in einer Reihe sind.
// aufteilen in 4 Methoden - vertikal, horizontal, diagonal nach rechts unten und links oben
boolean vierFindenX(int y, int x, int spieler)
{
// nach links
int start = x - 1; // mit dem Punkt links neber dem gesetzten beginne
// ich
int treffer = 1; // der gesetzte Punkt = 1 Treffer
while (start >= 0)
{
if (spielfeld[y][start].gibSpieler() != spieler)
break;
start--;
treffer++;
}
// nach rechts
start = x + 1;
while (start < spielfeld.length)
{
if (spielfeld[y][start].gibSpieler() != spieler)
break;
start++;
treffer++;
}
return (treffer > 3);
}
boolean vierFindenY (int y, int x, int spieler)
{
// nach oben
int start = y - 1;
int treffer = 1;
while (start >= 1)
{
if (spielfeld[start][x].gibSpieler() != spieler)
break;
start--;
treffer++;
}
//nach unten
start = y + 1;
treffer = 1;
while (start < spielfeld.length)
{
if (spielfeld[start][x].gibSpieler() != spieler)
break;
start++;
treffer++;
}
return (treffer > 3);
}
boolean vierFindenD1(int x, int y, int spieler)
// von links unten nach rechts oben -> richtig.
{
int start = x + 1;
int start2 = y - 1;
int treffer = 1;
while ((start < spielfeld.length) && (start2 >=1))
{
if (spielfeld[start2][start].gibSpieler() != spieler)
break;
start++;
start2--;
treffer++;
}
// von rechts oben nach links unten -> richtig
start = x - 1;
start2 = y + 1;
while ((start >= 0) && (start2 < spielfeld.length))
{
if (spielfeld[start2][start].gibSpieler() != spieler)
break;
start--;
start2++;
treffer++;
}
return (treffer > 3);
}
boolean vierFindenD2 (int x, int y, int spieler)
{
//von links oben nach rechts unten
int start = x + 1;
int start2 = y + 1;
int treffer = 1;
while ((start < spielfeld.length) && (start2 < spielfeld.length))
{
if (spielfeld [start2] [start].gibSpieler() != spieler)
break;
start++;
start2++;
treffer++;
}
//von rechts unten nach links oben
start = x - 1;
start2 = y - 1;
while ((start >= 0 && start2 >= 1))
{
if (spielfeld [start2] [start].gibSpieler() != spieler)
break;
start--;
start2--;
treffer++;
}
return (treffer > 3);
}
public void beenden(int x, int y, int spieler)
{
if(vierFinden(x, y, spieler))
{ // Hat jmd gewonnen?
for( y=0; y<1; y++) // y liegt unter 1.
{
for (x=0; x<7; x++)
{
spielfeld[y][x].removeActionListener(this); // this = für jedes einzelne Feld
spielfeld[y][x].setBackground(Color.WHITE);
}
}
System.out.println("Spieler "+spieler+" hat gewonnen");
}
}