Hallo ihr Lieben!
Ich arbeite momentan an einem kleinen Vier Gewinnt, was auch soweit funktioniert, ausser das es nicht stoppt wenn 4 in einer Linie/Spalte/Diagonalen sind.
Ich verzweifele grade buchstäblich & hoffe dass ihr mir irgendwie helfen könnt was hier dran falsch ist.
danke schonmal im Voraus!
}
Ich arbeite momentan an einem kleinen Vier Gewinnt, was auch soweit funktioniert, ausser das es nicht stoppt wenn 4 in einer Linie/Spalte/Diagonalen sind.
Ich verzweifele grade buchstäblich & hoffe dass ihr mir irgendwie helfen könnt was hier dran falsch ist.
Java:
public class Spielbrett
{
Coin[][] spielbrett;;
public Spielbrett ()
{
spielbrett = new Coin[7][6];
}
public boolean istvoll()
{
for (int i = 0; i < spielbrett.length; i++ )
{
if (spielbrett[i][0] == null)
{
return false;
}
}
return true;
}
public void spielbrettausgabe()
{
System.out.println();
for(int i = 0; i<=5; i++)
{
System.out.print("| ");
for(int j = 0; j<=6; j++)
{
Coin coin = spielbrett[j][i];
if(coin == null)
System.out.print("_");
else
coin.coinausgabe();
System.out.print(" | ");
}
System.out.println();
}
System.out.println("-----------------------------");
System.out.println(" 1 2 3 4 5 6 7");
System.out.println();
}
public boolean coinsetzenfeld(int spalte, Spieler aktuellerspieler)
{
System.out.println(spalte);
for(int zeile=5;zeile>=0;zeile--)
{
if(spielbrett[spalte-1][zeile]==null)
{
Coin coin = new Coin(aktuellerspieler);
spielbrett[spalte-1][zeile]=coin;
return true;
}
}
return false;
}
public Spieler gewinner(int spalte)
{
int zeile = 0;
while (spielbrett[spalte-1][zeile] == null)
{
zeile++;
}
Coin coin = spielbrett [spalte-1] [zeile];
return coin.getspieler();
}
public boolean gewinnzug ()
{
if (gewinnzeile (spielbrett)) return true;
if (gewinnspalte (spielbrett)) return true;
return false;
}
public boolean gewinnzeile(Coin[][] s)
{
Coin[][] spielbrett = new Coin[7][6];
spielbrett= s;
for (int zeile=0; zeile<6; zeile++)
{int summe=1;
for (int spalte=0; spalte<4; spalte++)
{
if((spielbrett[zeile][spalte])==(spielbrett[zeile][spalte+1])
&& spielbrett[zeile][spalte] != null
&& spielbrett[zeile][spalte+1] != null)
{summe=summe+1;
if(summe>=4)
{return true;}}
else {summe=1;}
}
}
return false;
}
static void gewinnzeile(char[][] spielbrett, int spalte, int zeile, char zeichen) {
// nach links
int go = zeile - 1; // mit dem Punkt links neber dem gesetzten beginne
// ich
int i = 1; // der gesetzte Punkt = 1 Treffer
while (go >= 0) {
if (spielbrett[spalte][go] != zeichen)
break;
go--;
i++;
}
}
private boolean gewinnspalte(Coin[][] s)
{
Coin[][] spielbrett = new Coin[7][6];
spielbrett=s;
for (int spalte=0; spalte<4;spalte++)
{int summe=1;
for (int zeile=0; zeile<6; zeile++)
{
if((spielbrett[zeile][spalte])==(spielbrett[zeile+1][spalte])
&& spielbrett[zeile][spalte] != null
&& spielbrett[zeile+1][spalte] != null)
{summe=summe+1;
if(summe==4)
{return true;}
System.out.println( "gewinnt in der Spalte!");
}
else {summe=1;}
}
}
return false;
}
danke schonmal im Voraus!
}