BotHenneEasy und BotFuchsEasy funktionieren
parent
5f34fce221
commit
18e57c9319
|
@ -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);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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] = ' ';
|
||||||
|
|
|
@ -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) {
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue