Nico Piehl 2022-11-28 16:31:49 +01:00
commit 9725f74097
9 changed files with 208 additions and 61 deletions

BIN
.DS_Store vendored

Binary file not shown.

View File

@ -1,14 +1,44 @@
package domain;
import java.util.ArrayList;
import java.util.Random;
public class BotEasyHenne extends Bot {
public BotEasyHenne() {
}
// muss dann vielleicht noch an die neue Schreibweise des Arrays angepasst werden
@Override
public String zugBestimmen() {
return "Ich bins der Einfache Hennen Bot";
String zug;
char[][] spielbrettArray = Spiel.getSpielbrettArray();
ArrayList<String> spielfigurExistiert = new ArrayList<>();
for(int i = 0; i < spielbrettArray.length; i++ )
{
for(int k = 0; k < spielbrettArray[i].length; k++ ){
if(spielbrettArray[i][k] == 'X') {
spielfigurExistiert.add("(" + i + "," + k + ")");
}
}
}
do {
Random rand = new Random();
String random = spielfigurExistiert.get(rand.nextInt(spielfigurExistiert.size()));
// System.out.println(random);
int var1 = random.charAt(1) - '0';
int var2 = random.charAt(3) - '0';
int var3 = rand.nextInt(((var1 + 1) - (var1 - 1)) + 1) + (var1 - 1);
int var4 = var2;
if(var3 == var1) {
var4 = var2 - 1;
}
zug = "(" + var1 + "," + var2 + ") (" + var3 + "," + var4 + ")";
// System.out.println(zug);
} while(Hennen.isValidMove(zug) == false);
return zug;
}
}

View File

@ -6,7 +6,9 @@ public class Fuchs extends Spielfigur {
}
public boolean isValidMove(String zug) {
// public boolean isValidMove(String zug) {
public static boolean isValidMove(String zug) {
System.out.println("Fuchsmethode aufgerufen");
return false;
}

View File

@ -6,8 +6,12 @@ public class Hennen extends Spielfigur {
}
public boolean isValidMove(String zug) {
// generell sehr fehleranfällig, mit Regex Filter Struktur vom String vorgeben
public static boolean isValidMove(String zug) {
// public boolean isValidMove(String zug) {
System.out.println("Hennenmethode aufgerufen");
return false;
// return false;
return true;
}
}

View File

@ -6,24 +6,65 @@ public class Spiel {
private String spielname;
private HashMap<Integer, Character> spielbrett = new HashMap<>();
// private char[][] spielbrettArray = new char[10][10];
private static char[][] spielbrettArray = new char[10][10];
public Spiel(String spielname) {
this.spielname = spielname;
this.spielbrett = generiereSpielbrett();
// this.spielbrett = generiereSpielbrett();
// this.spielbrettArray = generiereSpielbrettArray();
Spiel.spielbrettArray = generiereSpielbrettArray();
}
public void printBoard() {
int zähler = 0;
for (int i = 0; i < spielbrett.size(); i++) {
if (zähler == 9) {
System.out.println(spielbrett.get(i));
zähler = 0;
} else {
System.out.print(spielbrett.get(i) + " ");
zähler++;
}
}
// int zähler = 0;
// for (int i = 0; i < spielbrett.size(); i++) {
// if (zähler == 9) {
// System.out.println(spielbrett.get(i));
// zähler = 0;
// } else {
// System.out.print(spielbrett.get(i) + " ");
// zähler++;
// }
// }
// System.out.println();
for ( int zeile = 0; zeile < spielbrettArray.length; zeile++ )
{
System.out.print("Zeile " + zeile + ": ");
for ( int spalte=0; spalte < spielbrettArray[zeile].length; spalte++ )
System.out.print( spielbrettArray[zeile][spalte] + " ");
System.out.println();
}
}
public char[][] generiereSpielbrettArray() {
spielbrettArray[0][0] = ' ';
spielbrettArray[0][1] = '0';
spielbrettArray[0][2] = '1';
spielbrettArray[0][3] = '2';
spielbrettArray[0][4] = '3';
spielbrettArray[0][5] = '4';
spielbrettArray[0][6] = '5';
spielbrettArray[0][7] = '6';
spielbrettArray[0][8] = '7';
spielbrettArray[0][9] = '8';
spielbrettArray[1][0] = '0';
spielbrettArray[1][1] = ' ';
spielbrettArray[1][2] = 'X';
spielbrettArray[1][3] = 'X';
spielbrettArray[1][4] = 'X';
spielbrettArray[1][5] = ' ';
return spielbrettArray;
}
// public char[][] getSpielbrettArray() {
public static char[][] getSpielbrettArray() {
return spielbrettArray;
}
//Erstellung Anfangsspielbrett mithilfe von Unicode Zeichen
public HashMap<Integer, Character> generiereSpielbrett() {

View File

@ -2,7 +2,10 @@ package domain;
public abstract class Spielfigur {
public abstract boolean isValidMove(String zug);
// public abstract boolean isValidMove(String zug);
public static boolean isValidMove(String zug) {
return false;
}
public void moveSpielfigur(String zug) {

View File

@ -11,13 +11,17 @@ import domain.Fuchs;
import domain.Hennen;
import domain.Spiel;
import domain.Spielfigur;
import ui.UI;
public class Spielsystem {
private String spielname;
private Spiel spiel;
private Spielfigur henne;
private Spielfigur fuchs;
private Spielfigur spieler;
private Spielfigur computer;
private Bot ki;
private boolean aktiverSpieler;
public Spielsystem(String spielname) throws Exception {
this.spiel = new Spiel(spielname);
@ -25,10 +29,56 @@ public class Spielsystem {
this.fuchs = new Fuchs();
}
public void spielerBestimmen(int spielerwahl) {
if(spielerwahl == 1) {
spieler = new Fuchs();
} else if(spielerwahl == 2) {
spieler = new Hennen();
} else {
//Scheiße
}
}
public void computerBestimmen(int spielerwahl) {
if(spielerwahl == 2) {
computer = new Fuchs();
} else if(spielerwahl == 1) {
computer = new Hennen();
} else {
//Scheiße
}
}
public void setAktivenSpieler(boolean überprüfung) {
if(überprüfung == true) {
// aktiverSpieler ist der Spieler
aktiverSpieler = true;
} else {
// aktiverSpieler ist der Computer
aktiverSpieler = false;
}
}
public String getSpielname() {
return spielname;
}
public boolean getSpielfigurComputer() {
if(computer instanceof Hennen) {
return true;
} else {
return false;
}
}
public boolean getSpielfigurSpieler() {
if(spieler instanceof Hennen) {
return true;
} else {
return false;
}
}
public Spielfigur getHenne() {
return henne;
}
@ -58,38 +108,50 @@ public class Spielsystem {
return true;
}
// public boolean isValidMove(String zug) {
// return this.isValidMove(zug);
// }
// vorerst wird es ignoriert das static verlangt wird
public boolean isValidMove(String zug) {
if(aktiverSpieler == true) {
return spieler.isValidMove(zug);
} else {
return computer.isValidMove(zug);
}
}
public String yourMove() {
return "H";
return ki.zugBestimmen();
}
public void myMove(String zug) {
}
// public void moveSpielfigur(String zug) {
//
// }
public void moveSpielfigur(String zug) {
if(aktiverSpieler == true) {
spieler.moveSpielfigur(zug);
} else {
computer.moveSpielfigur(zug);
}
}
public void kiGenerieren(int spielerwahl, int kiLevel) {
if (kiLevel == 0 && spielerwahl == 1) {
public void start(boolean werBeginnt, int kiLevel) {
if (kiLevel == 0 && computer instanceof Hennen) {
ki = new BotEasyHenne();
} else if ( kiLevel == 1 && spielerwahl == 1) {
} else if ( kiLevel == 1 && computer instanceof Hennen) {
ki = new BotMediumHenne();
} else if (kiLevel == 2 && spielerwahl == 1) {
} else if (kiLevel == 2 && computer instanceof Hennen) {
ki = new BotHardHenne();
} else if (kiLevel == 0 && spielerwahl == 2) {
} else if (kiLevel == 0 && computer instanceof Fuchs) {
ki = new BotEasyFuchs();
} else if ( kiLevel == 1 && spielerwahl == 2) {
} else if ( kiLevel == 1 && computer instanceof Fuchs) {
ki = new BotMediumFuchs();
} else if (kiLevel == 2 && spielerwahl == 2) {
} else if (kiLevel == 2 && computer instanceof Fuchs) {
ki = new BotHardFuchs();
}else {
//Fehleingabe
}
// UI.start(werBeginnt, kiLevel);
}
}

View File

@ -2,9 +2,9 @@ package infrastructure;
public class Persistenz {
public static void main(String[] args) {
// TODO Auto-generated method stub
// public static void main(String[] args) {
// // TODO Auto-generated method stub
}
// }
}

View File

@ -119,6 +119,9 @@ public class UI {
int spielerwahl = Integer.parseInt(sc.nextLine());
System.out.println();
spielsystem.spielerBestimmen(spielerwahl);
spielsystem.computerBestimmen(spielerwahl);
boolean werBeginnt = werBeginnt();
System.out.println("Auf welchen Schwierigkeitsgrad wollen Sie spielen?");
@ -130,13 +133,15 @@ public class UI {
int kiLevel = Integer.parseInt(sc.nextLine());
System.out.println();
start(werBeginnt, spielerwahl, kiLevel);
spielsystem.start(werBeginnt, kiLevel);
}
private void start(boolean werBeginnt, int spielerwahl, int kiLevel) {
public void start(boolean werBeginnt, int kiLevel) {
boolean zugFuchs = false;
boolean zugHenne = false;
boolean spielfigurComputer = spielsystem.getSpielfigurComputer();
boolean spielfigurSpieler = spielsystem.getSpielfigurSpieler();
boolean erfolgreicherZug;
String zug;
@ -146,8 +151,6 @@ public class UI {
zugFuchs = true;
}
spielsystem.kiGenerieren(spielerwahl, kiLevel);
System.out.println("Das Spiel wurde gestartet!");
if (kiLevel == 0) {
System.out.println("Sie haben den Schwierigkeitsgrad -easy- ausgewählt");
@ -164,22 +167,23 @@ public class UI {
do {
// Zug Henne KI
if (zugHenne == true && spielerwahl == 1) {
if (zugHenne == true && spielfigurComputer == true) {
spielsystem.setAktivenSpieler(false);
System.out.println("Die Hennen sind am Zug:");
System.out.println("Die KI macht Ihren Zug");
System.out.println();
zug = spielsystem.getBot().zugBestimmen();
//System.out.println(zug);
//Kontrolle des Zuges sollte im Bot gemacht werden
//erfolgreicherZug = spielsystem.getHenne().isValidMove(zug);
zug = spielsystem.yourMove();
System.out.println();
System.out.println("Die KI hat folgenden Zug gemacht: " + zug);
spielsystem.getHenne().moveSpielfigur(zug);
spielsystem.moveSpielfigur(zug);
zugHenne = false;
zugFuchs = true;
}
// Zug Henne Spieler
else if (zugHenne == true && spielerwahl == 2) {
else if (zugHenne == true && spielfigurSpieler == true) {
spielsystem.setAktivenSpieler(true);
System.out.println("Die Hennen sind am Zug:");
System.out.println("Spieler Sie sind dran");
do {
@ -188,7 +192,7 @@ public class UI {
System.out.print("> ");
zug = sc.nextLine();
System.out.println();
erfolgreicherZug = spielsystem.getHenne().isValidMove(zug);
erfolgreicherZug = spielsystem.isValidMove(zug);
if (erfolgreicherZug == false) {
System.out.println("Ihre Zugeingabe: -" + zug + "- war leider kein valider Zug!");
@ -203,7 +207,8 @@ public class UI {
}
// Zug Fuchs Spieler
else if (zugFuchs == true && spielerwahl == 1) {
else if (zugFuchs == true && spielfigurSpieler == false) {
spielsystem.setAktivenSpieler(true);
System.out.println("Die Füchse sind am Zug:");
System.out.println("Spieler Sie sind dran");
do {
@ -212,7 +217,7 @@ public class UI {
System.out.print("> ");
zug = sc.nextLine();
System.out.println();
erfolgreicherZug = spielsystem.getFuchs().isValidMove(zug);
erfolgreicherZug = spielsystem.isValidMove(zug);
if (erfolgreicherZug == false) {
System.out.println("Ihre Zugeingabe: -" + zug + "- war leider kein valider Zug!");
@ -227,16 +232,16 @@ public class UI {
}
// Zug Fuchs KI
else if (zugFuchs == true && spielerwahl == 2) {
else if (zugFuchs == true && spielfigurComputer == false) {
spielsystem.setAktivenSpieler(false);
System.out.println("Die Füchse sind am Zug:");
System.out.println("Die KI macht Ihren Zug");
System.out.println();
zug = spielsystem.getBot().zugBestimmen();
//System.out.println(zug);
//Kontrolle des Zuges sollte im Bot gemacht werden
//erfolgreicherZug = spielsystem.getFuchs().isValidMove(zug);
zug = spielsystem.yourMove();
System.out.println();
System.out.println("Die KI hat folgenden Zug gemacht: " + zug);
spielsystem.getFuchs().moveSpielfigur(zug);
spielsystem.moveSpielfigur(zug);
zugHenne = true;
zugFuchs = false;
}