Hallo zusammen,
da das hier mein erster erstellter Thread in diesem Forum ist, bitte ich vorab um Gnade, falls trotz "Vor dem ersten Posten lesen!" lesen etwas schief gegangen ist.
Zu meinem Problem, im folgenden versuchte ich mich an der Erstellung eines Prime Games, die Regeln des Spiels sind simpel: Zufällig generierte Zahlen werden abwechselnd von Spieler 1 und 2 ausgewählt. Die ausgewählte Zahl bekommt der entsprechende Spieler auf seinem Konto gutgeschrieben, allerdings bekommt der gegnerische Spieler alle generierten Divisoren der gewählten Zahl auf sein Konto addiert.
Ich denke das habe ich relativ präzise umgesetzt. Allerdings hat mein Programm die Eigenart, bei doppelt generierten Zahlen entweder keinen Endkontostand der Spieler, oder den Integer Min Value auszugeben, was ich mir leider nicht erklären kann.
Hier die drei Klassen:
PrimeGame.java
Spieler1.java
Spieler2.java
Vorab, vielen Dank für eure Mühen!
da das hier mein erster erstellter Thread in diesem Forum ist, bitte ich vorab um Gnade, falls trotz "Vor dem ersten Posten lesen!" lesen etwas schief gegangen ist.
Zu meinem Problem, im folgenden versuchte ich mich an der Erstellung eines Prime Games, die Regeln des Spiels sind simpel: Zufällig generierte Zahlen werden abwechselnd von Spieler 1 und 2 ausgewählt. Die ausgewählte Zahl bekommt der entsprechende Spieler auf seinem Konto gutgeschrieben, allerdings bekommt der gegnerische Spieler alle generierten Divisoren der gewählten Zahl auf sein Konto addiert.
Ich denke das habe ich relativ präzise umgesetzt. Allerdings hat mein Programm die Eigenart, bei doppelt generierten Zahlen entweder keinen Endkontostand der Spieler, oder den Integer Min Value auszugeben, was ich mir leider nicht erklären kann.
Hier die drei Klassen:
PrimeGame.java
Java:
public class PrimeGame {
public static void main(String[] args) {
int[] spielfeld = new int[20];
int[] spielerPunkte = new int[2];
int gesamtWert = 0;
for (int i = 0; i < spielfeld.length; i++) {
do {
spielfeld[i] = (int) (Math.random() * 100);
} while (spielfeld[i] == 0);
}
System.out.println("Die generierten Zahlen lauten wie folgt: ");
for (int m = 0; m < spielfeld.length; m++) {
System.out.print(spielfeld[m] + " ");
gesamtWert = spielfeld[m] + gesamtWert;
}
System.out.println("\n\nGesamtwert:\t\t" + gesamtWert + " Punkte");
System.out.println("==================================");
for (int n = 0; n < spielfeld.length; n++) {
Spieler1.zahlWählenSpieler1(spielfeld, spielerPunkte);
Spieler2.zahlWählenSpieler2(spielfeld, spielerPunkte);
}
System.out.println("Spieler 1 hat:\t\t" + spielerPunkte[0] + " Punkte");
System.out.println("Spieler 2 hat:\t\t" + spielerPunkte[1] + " Punkte");
}
}
Spieler1.java
Java:
public class Spieler1 {
public static void zahlWählenSpieler1(int[] spielfeld, int[] spielerpunkte) {
int groessteZahl = 0;
int divisorenGesamt = 0;
int posGewählteZahl = 0;
do {
for (int x = 0; x < spielfeld.length; x++) {
if (groessteZahl <= spielfeld[x]) {
groessteZahl = spielfeld[x];
posGewählteZahl = x; // Damit wir wissen, welchen Arrayplatz
// wir
// nicht mehr benutzen können.
}
}
spielfeld[posGewählteZahl] = 0; // Funktioniert weil sich Methoden &
// richtiges Array Heap-Speicherplatz
// teilen (oder wie das heißt)
for (int y = 0; y < spielfeld.length; y++) {
if (spielfeld[y] != 0) {
if (groessteZahl % spielfeld[y] == 0) {
divisorenGesamt += spielfeld[y];
}
}
}
} while (groessteZahl < divisorenGesamt);
for (int z = 0; z < spielfeld.length; z++) {
if (spielfeld[z] != 0) {
if (groessteZahl % spielfeld[z] == 0) {
spielfeld[z] = 0;
}
}
}
spielerpunkte[0] += groessteZahl;
spielerpunkte[1] += divisorenGesamt;
}
}
Spieler2.java
Java:
public class Spieler2 {
public static void zahlWählenSpieler2(int[] spielfeld, int[] spielerpunkte) {
int groessteZahl = 0;
int divisorenGesamt = 0;
int posGewählteZahl = 0;
do {
for (int x = 0; x < spielfeld.length; x++) {
if (groessteZahl <= spielfeld[x]) {
groessteZahl = spielfeld[x];
posGewählteZahl = x; // Damit wir wissen, welchen Arrayplatz
// wir
// nicht mehr benutzen können.
}
}
spielfeld[posGewählteZahl] = 0; // Funktioniert weil sich Methoden &
// richtiges Array Heap-Speicherplatz
// teilen (oder wie das heißt)
for (int y = 0; y < spielfeld.length; y++) {
if (spielfeld[y] != 0) {
if (groessteZahl % spielfeld[y] == 0) {
divisorenGesamt += spielfeld[y];
}
}
}
} while (groessteZahl < divisorenGesamt);
for (int z = 0; z < spielfeld.length; z++) {
if (spielfeld[z] != 0) {
if (groessteZahl % spielfeld[z] == 0) {
spielfeld[z] = 0;
}
}
}
spielerpunkte[1] += groessteZahl;
spielerpunkte[0] += divisorenGesamt;
}
}
Vorab, vielen Dank für eure Mühen!
Zuletzt bearbeitet von einem Moderator: