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; package domain;
import java.util.ArrayList;
import java.util.Random;
public class BotEasyHenne extends Bot { public class BotEasyHenne extends Bot {
public BotEasyHenne() { // muss dann vielleicht noch an die neue Schreibweise des Arrays angepasst werden
}
@Override @Override
public String zugBestimmen() { 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"); System.out.println("Fuchsmethode aufgerufen");
return false; 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"); System.out.println("Hennenmethode aufgerufen");
return false; // return false;
return true;
} }
} }

View File

@ -5,24 +5,65 @@ import java.util.HashMap;
public class Spiel { public class Spiel {
private String spielname; private String spielname;
private HashMap<Integer, Character> spielbrett = new HashMap<>(); 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) { public Spiel(String spielname) {
this.spielname = spielname; this.spielname = spielname;
this.spielbrett = generiereSpielbrett(); // this.spielbrett = generiereSpielbrett();
// this.spielbrettArray = generiereSpielbrettArray();
Spiel.spielbrettArray = generiereSpielbrettArray();
} }
public void printBoard() { public void printBoard() {
int zähler = 0; // int zähler = 0;
for (int i = 0; i < spielbrett.size(); i++) { // for (int i = 0; i < spielbrett.size(); i++) {
if (zähler == 9) { // if (zähler == 9) {
System.out.println(spielbrett.get(i)); // System.out.println(spielbrett.get(i));
zähler = 0; // zähler = 0;
} else { // } else {
System.out.print(spielbrett.get(i) + " "); // System.out.print(spielbrett.get(i) + " ");
zähler++; // 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();
} }
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 //Erstellung Anfangsspielbrett mithilfe von Unicode Zeichen

View File

@ -1,9 +1,12 @@
package domain; package domain;
public abstract class Spielfigur { 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) { public void moveSpielfigur(String zug) {
} }

View File

@ -11,23 +11,73 @@ import domain.Fuchs;
import domain.Hennen; import domain.Hennen;
import domain.Spiel; import domain.Spiel;
import domain.Spielfigur; import domain.Spielfigur;
import ui.UI;
public class Spielsystem { public class Spielsystem {
private String spielname; private String spielname;
private Spiel spiel; private Spiel spiel;
private Spielfigur henne; private Spielfigur henne;
private Spielfigur fuchs; private Spielfigur fuchs;
private Spielfigur spieler;
private Spielfigur computer;
private Bot ki; private Bot ki;
private boolean aktiverSpieler;
public Spielsystem(String spielname) throws Exception { public Spielsystem(String spielname) throws Exception {
this.spiel = new Spiel(spielname); this.spiel = new Spiel(spielname);
this.henne = new Hennen(); this.henne = new Hennen();
this.fuchs = new Fuchs(); 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() { public String getSpielname() {
return spielname; 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() { public Spielfigur getHenne() {
return henne; return henne;
@ -57,39 +107,51 @@ public class Spielsystem {
// true = Spieler1 | false = Spieler2 // true = Spieler1 | false = Spieler2
return true; return true;
} }
// public boolean isValidMove(String zug) { // vorerst wird es ignoriert das static verlangt wird
// return this.isValidMove(zug); public boolean isValidMove(String zug) {
// } if(aktiverSpieler == true) {
return spieler.isValidMove(zug);
} else {
return computer.isValidMove(zug);
}
}
public String yourMove() { public String yourMove() {
return "H"; return ki.zugBestimmen();
} }
public void myMove(String zug) { 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) { public void start(boolean werBeginnt, int kiLevel) {
if (kiLevel == 0 && spielerwahl == 1) {
if (kiLevel == 0 && computer instanceof Hennen) {
ki = new BotEasyHenne(); ki = new BotEasyHenne();
} else if ( kiLevel == 1 && spielerwahl == 1) { } else if ( kiLevel == 1 && computer instanceof Hennen) {
ki = new BotMediumHenne(); ki = new BotMediumHenne();
} else if (kiLevel == 2 && spielerwahl == 1) { } else if (kiLevel == 2 && computer instanceof Hennen) {
ki = new BotHardHenne(); ki = new BotHardHenne();
} else if (kiLevel == 0 && spielerwahl == 2) { } else if (kiLevel == 0 && computer instanceof Fuchs) {
ki = new BotEasyFuchs(); ki = new BotEasyFuchs();
} else if ( kiLevel == 1 && spielerwahl == 2) { } else if ( kiLevel == 1 && computer instanceof Fuchs) {
ki = new BotMediumFuchs(); ki = new BotMediumFuchs();
} else if (kiLevel == 2 && spielerwahl == 2) { } else if (kiLevel == 2 && computer instanceof Fuchs) {
ki = new BotHardFuchs(); ki = new BotHardFuchs();
}else { }else {
//Fehleingabe //Fehleingabe
} }
// UI.start(werBeginnt, kiLevel);
} }
} }

View File

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

View File

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