BotHenneEasy und BotFuchsEasy funktionieren

pull/5/head
Nico Piehl 2022-12-03 19:15:18 +01:00
parent 5f34fce221
commit 18e57c9319
10 changed files with 82 additions and 39 deletions

View File

@ -2,6 +2,6 @@ package domain;
public abstract class Bot { public abstract class Bot {
public abstract String zugBestimmen(); public abstract String zugBestimmen(Spiel spiel, Spielfigur spielfigur);
} }

View File

@ -1,19 +1,51 @@
package domain; package domain;
import java.util.ArrayList;
import java.util.Random;
public class BotEasyFuchs extends Bot { public class BotEasyFuchs extends Bot {
public BotEasyFuchs() {
}
@Override @Override
public String zugBestimmen(Spiel spiel, Spielfigur fuchs) {
String zug;
char[][] spielbrettArray = spiel.getSpielbrettArray();
ArrayList<String> 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') {
return "Ich bins der Einfache Fuchs Bot"; spielfigurExistiert.add(i + "," + k);
}
} }
if(spielfigurExistiert.size() == 2) {
break;
}
}
int altY, altX, neuY = 0, neuX = 0;
Random rand = new Random();
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;
}
} }

View File

@ -5,40 +5,43 @@ import java.util.Random;
public class BotEasyHenne extends Bot { public class BotEasyHenne extends Bot {
// muss dann vielleicht noch an die neue Schreibweise des Arrays angepasst werden
@Override @Override
public String zugBestimmen(Spiel spiel, Hennen henne) { public String zugBestimmen(Spiel spiel, Spielfigur henne) {
String zug; String zug;
char[][] spielbrettArray = Spiel.getSpielbrettArray(); char[][] spielbrettArray = spiel.getSpielbrettArray();
ArrayList<String> spielfigurExistiert = new ArrayList<>(); ArrayList<String> spielfigurExistiert = new ArrayList<>();
for(int i = 0; i < spielbrettArray.length; i++ ) for(int i = 0; i < spielbrettArray.length; i++ )
{ {
for(int k = 0; k < spielbrettArray[i].length; k++ ){ for(int k = 0; k < spielbrettArray[i].length; k++ ){
if(spielbrettArray[i][k] == 'X') { 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 { do {
Random rand = new Random();
String random = spielfigurExistiert.get(rand.nextInt(spielfigurExistiert.size())); String random = spielfigurExistiert.get(rand.nextInt(spielfigurExistiert.size()));
// System.out.println(random);
int var1 = random.charAt(1) - '0'; altY = Character.getNumericValue(random.charAt(0));
int var2 = random.charAt(3) - '0'; altX = Character.getNumericValue(random.charAt(2));
int var3 = rand.nextInt(((var1 + 1) - (var1 - 1)) + 1) + (var1 - 1);
int var4 = var2;
if(var3 == var1) { do {
var4 = var2 - 1; neuY = altY;
neuX = rand.nextInt(((altX + 1) - (altX - 1)) + 1) + (altX - 1);
if(neuX == altX) {
neuY = altY - 1;
} }
zug = "(" + var1 + "," + var2 + ") (" + var3 + "," + var4 + ")"; } while (neuX == 0 || neuX == 10 || neuY == -1 || neuY == 9);
// System.out.println(zug);
} while(Hennen.isValidMove(zug) == false); zug = altY + "," + altX + " " + neuY + "," + neuX;
} while(henne.isValidMove(altY, altX, neuY, neuX, spiel) == false);
return zug; return zug;
} }
} }

View File

@ -7,7 +7,7 @@ public class BotHardFuchs extends Bot {
} }
@Override @Override
public String zugBestimmen() { public String zugBestimmen(Spiel spiel, Spielfigur spielfigur) {
return "Ich bins der Harte Fuchs Bot"; return "Ich bins der Harte Fuchs Bot";
} }

View File

@ -7,7 +7,7 @@ public class BotHardHenne extends Bot {
} }
@Override @Override
public String zugBestimmen() { public String zugBestimmen(Spiel spiel, Spielfigur spielfigur) {
return "Ich bins der Harte Hennen Bot"; return "Ich bins der Harte Hennen Bot";
} }

View File

@ -7,7 +7,7 @@ public class BotMediumFuchs extends Bot {
} }
@Override @Override
public String zugBestimmen() { public String zugBestimmen(Spiel spiel, Spielfigur spielfigur) {
return "Ich bins der Mittlere Fuchs Bot"; return "Ich bins der Mittlere Fuchs Bot";
} }

View File

@ -7,7 +7,7 @@ public class BotMediumHenne extends Bot {
} }
@Override @Override
public String zugBestimmen() { public String zugBestimmen(Spiel spiel, Spielfigur spielfigur) {
return "Ich bins der Mittlere Hennen Bot"; return "Ich bins der Mittlere Hennen Bot";
} }

View File

@ -53,8 +53,8 @@ public class Spiel {
spielbrettArray[2][1] = ' '; spielbrettArray[2][1] = ' ';
spielbrettArray[2][2] = ' '; spielbrettArray[2][2] = ' ';
spielbrettArray[2][3] = ' '; spielbrettArray[2][3] = ' ';
spielbrettArray[2][4] = 'X'; spielbrettArray[2][4] = '\u25A1';
spielbrettArray[2][5] = 'X'; spielbrettArray[2][5] = '\u25A1';
spielbrettArray[2][6] = '\u25A1'; spielbrettArray[2][6] = '\u25A1';
spielbrettArray[2][7] = ' '; spielbrettArray[2][7] = ' ';
spielbrettArray[2][8] = ' '; spielbrettArray[2][8] = ' ';
@ -90,7 +90,7 @@ public class Spiel {
spielbrettArray[5][5] = 'X'; spielbrettArray[5][5] = 'X';
spielbrettArray[5][6] = 'X'; spielbrettArray[5][6] = 'X';
spielbrettArray[5][7] = 'X'; spielbrettArray[5][7] = 'X';
spielbrettArray[5][8] = '\u25A1'; spielbrettArray[5][8] = 'X';
spielbrettArray[5][9] = 'X'; spielbrettArray[5][9] = 'X';
spielbrettArray[6][0] = '2'; spielbrettArray[6][0] = '2';
@ -108,7 +108,7 @@ public class Spiel {
spielbrettArray[7][1] = ' '; spielbrettArray[7][1] = ' ';
spielbrettArray[7][2] = ' '; spielbrettArray[7][2] = ' ';
spielbrettArray[7][3] = ' '; spielbrettArray[7][3] = ' ';
spielbrettArray[7][4] = '\u25A1'; spielbrettArray[7][4] = 'X';
spielbrettArray[7][5] = 'X'; spielbrettArray[7][5] = 'X';
spielbrettArray[7][6] = 'X'; spielbrettArray[7][6] = 'X';
spielbrettArray[7][7] = ' '; spielbrettArray[7][7] = ' ';

View File

@ -149,8 +149,18 @@ public class Spielsystem {
return neueKoordinaten; return neueKoordinaten;
} }
// Noch falsche Ausgabe vom Zug (Array statt wie bei Eingabe vom Spieler) <---------------------------------------------------------------------
public String yourMove() { 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) { public void myMove(String zug) {

View File

@ -178,7 +178,6 @@ public class UI {
System.out.println(); System.out.println();
System.out.println("Die KI hat folgenden Zug gemacht: " + zug); System.out.println("Die KI hat folgenden Zug gemacht: " + zug);
spielsystem.myMove(zug);
zugHenne = false; zugHenne = false;
zugFuchs = true; zugFuchs = true;
} }
@ -243,7 +242,6 @@ public class UI {
System.out.println(); System.out.println();
System.out.println("Die KI hat folgenden Zug gemacht: " + zug); System.out.println("Die KI hat folgenden Zug gemacht: " + zug);
spielsystem.myMove(zug);
zugHenne = true; zugHenne = true;
zugFuchs = false; zugFuchs = false;
} }