Hey, ich hab folgendes Programm siehe Bild. Ich versuche es dauernd in mehrere Unterklassen einzuteilen, nur will das Programm nicht funktionieren. Ich wollte das Programm in eine Main-Klasse, Feld-Klasse, Spieler Klasse, Logik Klasse und Computer gegner einteilen. Habe es mit Vererbung probiert, will aber nicht funktionieren Sind die Vorgeschlagen Klasse so wie ich die einteilen wollte eventuell nicht so gut gewählt? Ich habe hier jetzt nur die Zwei Klassen gepostet sodass das Spiel funktioniert mit einer Main und eine Spiellogik klasse.
Main-Klasse
Spiellogik Klasse
Main-Klasse
Java:
public class Main {
public static void main(String[] args) {
System.out.println("Koordinaten : \n\n00 |01 |02 \n-----------\n10 |11 |12 \n-----------\n20 |21 |22 \n-----------\n");
Scanner sc = new Scanner(System.in);
Spiellogik spiel = new Spiellogik();
for (int i = 0;i<3;i++) //Feld mit Leerzeichen füllen
{
for (int j = 0;j<3;j++)
spiel.feldflaeche [i][j]=" ";
}// for() ende
System.out.println("Drücke 1 für Spiel Spieler gegen Computer \nDrücke 2 für 1vs1");
int n=sc.nextInt();
switch(n)
{
case 1:
{
while(spiel.count<=9)
{
if(spiel.count%2!=0)
{
spiel.player= 'X';
System.out.println("\nGeben Sie die x und y koordinaten ein ");
System.out.println("Spieler "+spiel.player+" ist am Zug\n");
spiel.setzen();
}
else spiel.botO();
}//while()ende
}//case 1 zuEnde
case 2:
{
while(spiel.count<=9)
{
if(spiel.count%2!=0) spiel.player = 'X';
else spiel.player = 'O';
System.out.println("\nGeben Sie die x und y koordinaten ein ");
System.out.println("Spieler "+spiel.player+" ist am Zug\n");
spiel.setzen();
}// while() ende
}// case 2 ende
}//switch ende
if (spiel.count>9)System.out.println("\n Spiel ist vorbei! \n");
}// main() ende
}
Spiellogik Klasse
Java:
import java.util.Scanner;
public class Spiellogik {
public String [][] feldflaeche;
public static int count = 1;
public static char player;
public Spiellogik() {
feldflaeche = new String [3][3];
}
public void print() { // Feld drucken
int i = 0;
do {
int j = 0;
System.out.print(feldflaeche[i][j]+"|");
System.out.print(feldflaeche[i][j +1]+ "|");
System.out.println(feldflaeche[i][j+2]);
System.out.println("-----------");;
i++;
}while(i<3);
}
/**
* Methode Random Computergegner setzten
*/
public void botO() //
{
player = 'O'; System.out.println("\n__________________________________________\n");
int arr[]={00,01,02,10,11,12,20,21,22};
int r = (int)(Math.random()*8);
int xy=arr[r],x,y;
x=xy/10;y=xy%10;
if(arr[r]!=-1)
{
if (feldflaeche[x][y]==" ")
{feldflaeche[x][y]=" O ";arr[r]=-1;count++;print();isWin();}
}
}
public void setzen() { //Spieler setzen Methode
Scanner scan = new Scanner(System.in);
int xy = scan.nextInt(),x,y;
y=xy%10;xy=xy/10;x=xy%10;
if (feldflaeche[x][y]==" ")
{feldflaeche[x][y]=" "+player+" ";count++;print();isWin();} //
else System.out.println("\n Fläche ist belegt\n");
}// if end
public void isWin() //Logik gewinner ermitteln
{
switch(player)
{
case 'X':
{
String s = " X X X ";
if((feldflaeche[0][0]+feldflaeche[0][1]+feldflaeche[0][2]).equals(s))
{System.out.println("X hat Gewonnen!"); count=10;}
if((feldflaeche[1][0]+feldflaeche[1][1]+feldflaeche[1][2]).equals(s))
{System.out.println("X hat Gewonnen!"); count=10;}
if((feldflaeche[2][0]+feldflaeche[2][1]+feldflaeche[2][2]).equals(s))
{System.out.println("X hat Gewonnen!"); count=10;}
if((feldflaeche[0][0]+feldflaeche[1][0]+feldflaeche[2][0]).equals(s))
{System.out.println("X hat Gewonnen!"); count=10;}
if((feldflaeche[0][1]+feldflaeche[1][1]+feldflaeche[2][1]).equals(s))
{System.out.println("X hat Gewonnen!"); count=10;}
if((feldflaeche[0][2]+feldflaeche[1][2]+feldflaeche[2][2]).equals(s))
{System.out.println("X hat Gewonnen!"); count=10;}
if((feldflaeche[0][0]+feldflaeche[1][1]+feldflaeche[2][2]).equals(s))
{System.out.println("X hat Gewonnen! "); count=10;}
if((feldflaeche[0][2]+feldflaeche[1][1]+feldflaeche[2][0]).equals(s))
{System.out.println("X hat Gewonnen! "); count=10;}
}// case 'X' ende
break;
case 'O':
{
String s =" O O O ";
if((feldflaeche[0][0]+feldflaeche[0][1]+feldflaeche[0][2]).equals(s))
{System.out.println("O hat Gewonnen!"); count=10;}
if((feldflaeche[1][0]+feldflaeche[1][1]+feldflaeche[1][2]).equals(s))
{System.out.println("O hat Gewonnen!"); count=10;}
if((feldflaeche[2][0]+feldflaeche[2][1]+feldflaeche[2][2]).equals(s))
{System.out.println("O hat Gewonnen!"); count=10;}
if((feldflaeche[0][0]+feldflaeche[1][0]+feldflaeche[2][0]).equals(s))
{System.out.println("O hat Gewonnen!"); count=10;}
if((feldflaeche[0][1]+feldflaeche[1][1]+feldflaeche[2][1]).equals(s))
{System.out.println("O hat Gewonnen!"); count=10;}
if((feldflaeche[0][2]+feldflaeche[1][2]+feldflaeche[2][2]).equals(s))
{System.out.println("O hat Gewonnen!"); count=10;}
if((feldflaeche[0][0]+feldflaeche[1][1]+feldflaeche[2][2]).equals(s))
{System.out.println("O hat Gewonnen!"); count=10;}
if((feldflaeche[0][2]+feldflaeche[1][1]+feldflaeche[2][0]).equals(s))
{System.out.println("O hat Gewonnen!"); count=10;}
}// case 'O' ende
}// switch() ende
}// isWin() ende
}
Zuletzt bearbeitet von einem Moderator: