From 18e57c93192e08ab01cde33284873ddc3470d054 Mon Sep 17 00:00:00 2001 From: 2211320 <2211320@stud.hs-mannheim.de> Date: Sat, 3 Dec 2022 19:15:18 +0100 Subject: [PATCH] BotHenneEasy und BotFuchsEasy funktionieren --- src/domain/Bot.java | 2 +- src/domain/BotEasyFuchs.java | 48 ++++++++++++++++++++++++++++------ src/domain/BotEasyHenne.java | 41 +++++++++++++++-------------- src/domain/BotHardFuchs.java | 2 +- src/domain/BotHardHenne.java | 2 +- src/domain/BotMediumFuchs.java | 2 +- src/domain/BotMediumHenne.java | 2 +- src/domain/Spiel.java | 8 +++--- src/facade/Spielsystem.java | 12 ++++++++- src/ui/UI.java | 2 -- 10 files changed, 82 insertions(+), 39 deletions(-) diff --git a/src/domain/Bot.java b/src/domain/Bot.java index 658edbf..911607f 100644 --- a/src/domain/Bot.java +++ b/src/domain/Bot.java @@ -2,6 +2,6 @@ package domain; public abstract class Bot { - public abstract String zugBestimmen(); + public abstract String zugBestimmen(Spiel spiel, Spielfigur spielfigur); } diff --git a/src/domain/BotEasyFuchs.java b/src/domain/BotEasyFuchs.java index 4725516..6e95806 100644 --- a/src/domain/BotEasyFuchs.java +++ b/src/domain/BotEasyFuchs.java @@ -1,19 +1,51 @@ package domain; +import java.util.ArrayList; +import java.util.Random; + public class BotEasyFuchs extends Bot { - public BotEasyFuchs() { - - } - @Override + public String zugBestimmen(Spiel spiel, Spielfigur fuchs) { + String zug; + char[][] spielbrettArray = spiel.getSpielbrettArray(); + ArrayList spielfigurExistiert = new ArrayList<>(); - public String zugBestimmen() { + for(int i = 0; i < spielbrettArray.length; i++ ) + { + for(int k = 0; k < spielbrettArray[i].length; k++ ){ + if(spielbrettArray[i][k] == 'O') { + spielfigurExistiert.add(i + "," + k); + } + } + if(spielfigurExistiert.size() == 2) { + break; + } + } + int altY, altX, neuY = 0, neuX = 0; + Random rand = new Random(); - return "Ich bins der Einfache Fuchs Bot"; + do { + String random = spielfigurExistiert.get(rand.nextInt(spielfigurExistiert.size())); + + altY = Character.getNumericValue(random.charAt(0)); + altX = Character.getNumericValue(random.charAt(2)); + + do { + // neuY = rand.nextInt(((altY + 1) - (altY - 1)) + 1) + (altY - 1); + // neuX = rand.nextInt(((altX + 1) - (altX - 1)) + 1) + (altX - 1); + + neuY = rand.nextInt(9); + neuX = rand.nextInt(9) + 1; + + } while (neuX == 0 || neuX == 10 || neuY == -1 || neuY == 9); + + zug = altY + "," + altX + " " + neuY + "," + neuX; + + } while(fuchs.isValidMove(altY, altX, neuY, neuX, spiel) == false); + + return zug; } - - } diff --git a/src/domain/BotEasyHenne.java b/src/domain/BotEasyHenne.java index dae4272..5db4f0d 100644 --- a/src/domain/BotEasyHenne.java +++ b/src/domain/BotEasyHenne.java @@ -5,40 +5,43 @@ import java.util.Random; public class BotEasyHenne extends Bot { - // muss dann vielleicht noch an die neue Schreibweise des Arrays angepasst werden @Override - public String zugBestimmen(Spiel spiel, Hennen henne) { + public String zugBestimmen(Spiel spiel, Spielfigur henne) { String zug; - char[][] spielbrettArray = Spiel.getSpielbrettArray(); + char[][] spielbrettArray = spiel.getSpielbrettArray(); ArrayList 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 + ")"); + spielfigurExistiert.add(i + "," + k); } } } + int altY, altX, neuY = 0, neuX = 0; + Random rand = new Random(); + 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); + + altY = Character.getNumericValue(random.charAt(0)); + altX = Character.getNumericValue(random.charAt(2)); + + do { + neuY = altY; + neuX = rand.nextInt(((altX + 1) - (altX - 1)) + 1) + (altX - 1); + + if(neuX == altX) { + neuY = altY - 1; + } + } while (neuX == 0 || neuX == 10 || neuY == -1 || neuY == 9); + + zug = altY + "," + altX + " " + neuY + "," + neuX; + + } while(henne.isValidMove(altY, altX, neuY, neuX, spiel) == false); return zug; } - } diff --git a/src/domain/BotHardFuchs.java b/src/domain/BotHardFuchs.java index 6d7b863..bf80003 100644 --- a/src/domain/BotHardFuchs.java +++ b/src/domain/BotHardFuchs.java @@ -7,7 +7,7 @@ public class BotHardFuchs extends Bot { } @Override - public String zugBestimmen() { + public String zugBestimmen(Spiel spiel, Spielfigur spielfigur) { return "Ich bins der Harte Fuchs Bot"; } diff --git a/src/domain/BotHardHenne.java b/src/domain/BotHardHenne.java index 666151b..814def8 100644 --- a/src/domain/BotHardHenne.java +++ b/src/domain/BotHardHenne.java @@ -7,7 +7,7 @@ public class BotHardHenne extends Bot { } @Override - public String zugBestimmen() { + public String zugBestimmen(Spiel spiel, Spielfigur spielfigur) { return "Ich bins der Harte Hennen Bot"; } diff --git a/src/domain/BotMediumFuchs.java b/src/domain/BotMediumFuchs.java index f9702fb..888ff52 100644 --- a/src/domain/BotMediumFuchs.java +++ b/src/domain/BotMediumFuchs.java @@ -7,7 +7,7 @@ public class BotMediumFuchs extends Bot { } @Override - public String zugBestimmen() { + public String zugBestimmen(Spiel spiel, Spielfigur spielfigur) { return "Ich bins der Mittlere Fuchs Bot"; } diff --git a/src/domain/BotMediumHenne.java b/src/domain/BotMediumHenne.java index 53b0de7..b942f90 100644 --- a/src/domain/BotMediumHenne.java +++ b/src/domain/BotMediumHenne.java @@ -7,7 +7,7 @@ public class BotMediumHenne extends Bot { } @Override - public String zugBestimmen() { + public String zugBestimmen(Spiel spiel, Spielfigur spielfigur) { return "Ich bins der Mittlere Hennen Bot"; } diff --git a/src/domain/Spiel.java b/src/domain/Spiel.java index 9809a42..2756853 100644 --- a/src/domain/Spiel.java +++ b/src/domain/Spiel.java @@ -53,8 +53,8 @@ public class Spiel { spielbrettArray[2][1] = ' '; spielbrettArray[2][2] = ' '; spielbrettArray[2][3] = ' '; - spielbrettArray[2][4] = 'X'; - spielbrettArray[2][5] = 'X'; + spielbrettArray[2][4] = '\u25A1'; + spielbrettArray[2][5] = '\u25A1'; spielbrettArray[2][6] = '\u25A1'; spielbrettArray[2][7] = ' '; spielbrettArray[2][8] = ' '; @@ -90,7 +90,7 @@ public class Spiel { spielbrettArray[5][5] = 'X'; spielbrettArray[5][6] = 'X'; spielbrettArray[5][7] = 'X'; - spielbrettArray[5][8] = '\u25A1'; + spielbrettArray[5][8] = 'X'; spielbrettArray[5][9] = 'X'; spielbrettArray[6][0] = '2'; @@ -108,7 +108,7 @@ public class Spiel { spielbrettArray[7][1] = ' '; spielbrettArray[7][2] = ' '; spielbrettArray[7][3] = ' '; - spielbrettArray[7][4] = '\u25A1'; + spielbrettArray[7][4] = 'X'; spielbrettArray[7][5] = 'X'; spielbrettArray[7][6] = 'X'; spielbrettArray[7][7] = ' '; diff --git a/src/facade/Spielsystem.java b/src/facade/Spielsystem.java index 58eb656..cab59c1 100644 --- a/src/facade/Spielsystem.java +++ b/src/facade/Spielsystem.java @@ -149,8 +149,18 @@ public class Spielsystem { return neueKoordinaten; } + // Noch falsche Ausgabe vom Zug (Array statt wie bei Eingabe vom Spieler) <--------------------------------------------------------------------- public String yourMove() { - return ki.zugBestimmen(); + String zug = ki.zugBestimmen(spiel, computer); + + int neueStartY = Character.getNumericValue(zug.charAt(0)); + int neueStartX = Character.getNumericValue(zug.charAt(2)); + int neueZielY = Character.getNumericValue(zug.charAt(4)); + int neueZielX = Character.getNumericValue(zug.charAt(6)); + + computer.moveSpielfigur(neueStartY, neueStartX, neueZielY, neueZielX, spiel); + + return zug; } public void myMove(String zug) { diff --git a/src/ui/UI.java b/src/ui/UI.java index 2c1cd72..fbfbb04 100644 --- a/src/ui/UI.java +++ b/src/ui/UI.java @@ -178,7 +178,6 @@ public class UI { System.out.println(); System.out.println("Die KI hat folgenden Zug gemacht: " + zug); - spielsystem.myMove(zug); zugHenne = false; zugFuchs = true; } @@ -243,7 +242,6 @@ public class UI { System.out.println(); System.out.println("Die KI hat folgenden Zug gemacht: " + zug); - spielsystem.myMove(zug); zugHenne = true; zugFuchs = false; }