Guten Tag,
es ist das folgende Spiel vorgegeben:
Ich muss die Klasse Player so umschreiben, dass es eine abstracte Oberklasse ist und die Klasse Unterklassen hat. PlayerType1, PlayerType2 und PlayerType3.
Jeweils in einer Klasse muss eine Strategie programmiert werden:
Type1 :
Spieler des Typs 1 schliessen vorzugsweise zwei möglichst weit auseinanderliegende Klappen, d.h., 8 = 1+7 ist besser als 8 = 3+5, und dieses wiederum besser als 8 = 8.
Type2 :
Spieler des Typs 2 schliessen vorzugsweise zwei möglichst nahe beieinander liegende Klappen, d.h., 8 = 3+5 ist besser als 8 = 1+7, und dieses wiederum besser als 8 = 8.
Type3 :
Spieler des Typs 3 schliessen vorzugsweise nur eine Klappe und sonst möglichst weit auseinander liegende Klappen, d.h., 8 = 8 ist besser als 8 = 1+7, und dieses wiederumbesser als 8 = 3+5.
Jetzt hab ich die drei Unterklassen erstellt. Die erste Strategieklasse sieht so aus.
Das Spiel soll bis 20 Spielern funktionieren. Der erste Spieler heißt A, zweiter B, usw.
Kann mir bitte jemand einen Ansatz geben, was ich als nächstes machen kann/soll. Danke schon mal.
es ist das folgende Spiel vorgegeben:
Java:
class Player {
String name;
Player successor;
Player(String name) {
this.name = name;
System.out.println("Spieler " + name + " nimmt teil");
}
String getName() {
return name;
}
void setSuccessor(Player successor) {
this.successor = successor;
System.out.println("Der Nachfolger von " + name + " ist "
+ successor.getName());
}
void play(boolean[] box) {
int i1 = (int) (Math.random() * 6) + 1;
int i2 = (int) (Math.random() * 6) + 1;
System.out.println(name + " wuerfelt " + i1 + " und " + i2);
int sum = i1 + i2;
boolean successful = false;
for (int b1 = 1; b1 <= sum / 2 && !successful; b1++) {
int b2 = sum - b1;
if (!box[b1] && b2 < box.length && !box[b2] && b1 != b2) {
box[b1] = true;
box[b2] = true;
System.out.println("Schliesse " + b1 + " und " + b2);
successful = true;
}
}
if (!successful && sum < box.length && !box[sum]) {
box[sum] = true;
System.out.println("Schliesse " + sum);
successful = true;
}
if (successful) {
successor.play(box);
} else {
System.out.println(name + " hat verloren");
}
}
}
Java:
class SomeGame {
static final int N = 9;
public static void main(String[] args) {
boolean[] box = new boolean[N+1]; // box[0] wird nicht genutzt
for (int i = 1; i <= N; ++i) {
box[i] = false; // kennzeichnet geoeffnet
}
Player susi = new Player("Susi");
Player fritz = new Player("Fritz");
Player egon = new Player("Egon");
susi.setSuccessor(fritz);
fritz.setSuccessor(egon);
egon.setSuccessor(susi);
susi.play(box);
}
}
Ich muss die Klasse Player so umschreiben, dass es eine abstracte Oberklasse ist und die Klasse Unterklassen hat. PlayerType1, PlayerType2 und PlayerType3.
Jeweils in einer Klasse muss eine Strategie programmiert werden:
Type1 :
Spieler des Typs 1 schliessen vorzugsweise zwei möglichst weit auseinanderliegende Klappen, d.h., 8 = 1+7 ist besser als 8 = 3+5, und dieses wiederum besser als 8 = 8.
Type2 :
Spieler des Typs 2 schliessen vorzugsweise zwei möglichst nahe beieinander liegende Klappen, d.h., 8 = 3+5 ist besser als 8 = 1+7, und dieses wiederum besser als 8 = 8.
Type3 :
Spieler des Typs 3 schliessen vorzugsweise nur eine Klappe und sonst möglichst weit auseinander liegende Klappen, d.h., 8 = 8 ist besser als 8 = 1+7, und dieses wiederumbesser als 8 = 3+5.
Jetzt hab ich die drei Unterklassen erstellt. Die erste Strategieklasse sieht so aus.
Java:
public class PlayerType1 extends Player{
PlayerType1(String name){
super(name);
}
}
Das Spiel soll bis 20 Spielern funktionieren. Der erste Spieler heißt A, zweiter B, usw.
Kann mir bitte jemand einen Ansatz geben, was ich als nächstes machen kann/soll. Danke schon mal.