Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package de.ostfalia.gdp.ws15.s9;
- import java.io.IOException;
- import java.util.Scanner;
- public class WombatRallye {
- static Wombat[] wombats = new Wombat[6];
- /*
- * Erzeugt für jeden Spieler ein Wombat und positioniert alle Wombats auf
- * dem Feld 0
- *
- * @param anzahlSpieler - Anzahl der Mitspieler
- */
- public static void init(int anzahlSpieler) {
- System.out.println(
- "Geben Sie bitte ein: 'Farbe' und \n '1' -für emsig || '2' -für gemütlich || '3' -für aggressiv");
- Scanner farbe = new Scanner(System.in);
- Scanner eigenschaft = new Scanner(System.in);
- for (int i = 0; i < anzahlSpieler; i++) {
- wombats[i] = new Wombat();
- System.out.println("Für Spieler " + (i + 1));
- wombats[i].setSpieler(i + 1);
- wombats[i].setFarbe(farbe.nextLine());
- wombats[i].setEigenschaft(eigenschaft.nextInt());
- wombats[i].setPosition(0);
- if (wombats[i].getEigenschaft() == 1 || wombats[i].getEigenschaft() == 2) {
- wombats[i].setGlückszahl(10);
- }
- wombats[i].setAussetzen(0);
- }
- farbe.close();
- eigenschaft.close();
- }
- /*
- * Führt einen Zug für ein Wombat aus, d.h. die Position des Wombats wird
- * entsprechend der Regeln verändert.
- *
- * @param anzahlSpieler - Nummer des Spielers
- *
- * @return true, falls dieses Wombat die Ziellinie überschritten hat,
- * ansonsten false
- */
- public static boolean zug(int anzahlSpieler, int länge) {
- int wurf = (int) ((Math.random() * 6) + 1);
- switch (wombats[anzahlSpieler].getEigenschaft()) {
- case 1:
- //setzen
- wombats[anzahlSpieler].setPosition((wurf > 3) ? wombats[anzahlSpieler].getPosition() + 3
- : wombats[anzahlSpieler].getPosition() + wurf);
- //prüfen ob aggressives dort
- for (int i = 0; i < anzahlSpieler; i++) {
- if (wombats[anzahlSpieler].getPosition() == wombats[i].getPosition()) {
- if (wombats[i].getEigenschaft() == 3) {
- wombats[anzahlSpieler].setPosition(wombats[anzahlSpieler].getPosition() - 6);
- wombats[i].setAussetzen(2);
- int j = 0;
- //wieder prüfen ob aggressives dort
- while (wombats[anzahlSpieler].getPosition() == wombats[j].getPosition()) {
- if (wombats[j].getEigenschaft() == 3) {
- wombats[anzahlSpieler].setPosition(wombats[anzahlSpieler].getPosition() - 6);
- wombats[j].setAussetzen(2);
- }
- j++;
- }
- }
- }
- }
- //Glückszahl
- wombats[anzahlSpieler]
- .setPosition((wombats[anzahlSpieler].getPosition() % wombats[anzahlSpieler].getGlückszahl() == 0)
- ? wombats[anzahlSpieler].getPosition() + 3 : wombats[anzahlSpieler].getPosition());
- //prüfen ob aggressives dort
- for (int i = 0; i < anzahlSpieler; i++) {
- if (wombats[anzahlSpieler].getPosition() == wombats[i].getPosition()) {
- if (wombats[i].getEigenschaft() == 3) {
- wombats[anzahlSpieler].setPosition(wombats[anzahlSpieler].getPosition() - 6);
- wombats[i].setAussetzen(2);
- int j = 0;
- //wieder prüfen ob aggressives dort
- while (wombats[anzahlSpieler].getPosition() == wombats[j].getPosition()) {
- if (wombats[j].getEigenschaft() == 3) {
- wombats[anzahlSpieler].setPosition(wombats[anzahlSpieler].getPosition() - 6);
- wombats[j].setAussetzen(2);
- }
- j++;
- }
- }
- }
- }
- break;
- case 2:
- //wie emsig
- wombats[anzahlSpieler].setPosition((wurf > 3) ? wombats[anzahlSpieler].getPosition() + 3
- : wombats[anzahlSpieler].getPosition() + wurf);
- wombats[anzahlSpieler]
- .setPosition((wombats[anzahlSpieler].getPosition() % wombats[anzahlSpieler].getGlückszahl() == 0)
- ? wombats[anzahlSpieler].getPosition() + 3 : wombats[anzahlSpieler].getPosition());
- break;
- case 3:
- //aussetzen?
- if (wombats[anzahlSpieler].getAussetzen() == 1) {
- wombats[anzahlSpieler].setPosition(wombats[anzahlSpieler].getPosition());
- wombats[anzahlSpieler].setAussetzen(0);
- }
- if (wombats[anzahlSpieler].getAussetzen() == 2) {
- wombats[anzahlSpieler].setPosition(wombats[anzahlSpieler].getPosition());
- wombats[anzahlSpieler].setAussetzen(1);
- } else {
- if (wurf > 4) {
- //setzen & aussetzen
- wombats[anzahlSpieler].setPosition(wombats[anzahlSpieler].getPosition() + wurf);
- wombats[anzahlSpieler].setAussetzen(1);
- //prüfen ob esmiges dort
- for (int i = 0; i < anzahlSpieler; i++) {
- if (wombats[anzahlSpieler].getPosition() == wombats[i].getPosition()) {
- if (wombats[i].getEigenschaft() == 1) {
- wombats[i].setPosition(wombats[i].getPosition() - 6);
- wombats[anzahlSpieler].setAussetzen(2);
- int j = 0;
- //wieder prüfen ob esmiges dort
- while (wombats[i].getPosition() == wombats[j].getPosition()) {
- if (wombats[j].getEigenschaft() == 3) {
- wombats[i].setPosition(wombats[i].getPosition() - 6);
- wombats[j].setAussetzen(2);
- }
- j++;
- }
- }
- }
- }
- } else {
- //setzen
- wombats[anzahlSpieler].setPosition(wombats[anzahlSpieler].getPosition() + wurf);
- //prüfen ob esmiges dort
- for (int i = 0; i < anzahlSpieler; i++) {
- if (wombats[anzahlSpieler].getPosition() == wombats[i].getPosition()) {
- if (wombats[i].getEigenschaft() == 1) {
- wombats[i].setPosition(wombats[i].getPosition() - 6);
- wombats[anzahlSpieler].setAussetzen(2);
- int j = 0;
- //wieder prüfen ob esmiges dort
- while (wombats[i].getPosition() == wombats[j].getPosition()) {
- if (wombats[j].getEigenschaft() == 3) {
- wombats[i].setPosition(wombats[i].getPosition() - 6);
- wombats[j].setAussetzen(2);
- }
- j++;
- }
- }
- }
- }
- }
- }
- break;
- }
- return (wombats[anzahlSpieler].getPosition() >= länge) ? true : false;
- }
- /*
- * Simuliert eine Runde in der Wombat Ralley, d.h. jedes Wombat zieht
- * einmal.
- *
- * @return sieger - null, solange noch kein Sieger feststeht.
- */
- public static Wombat simulateRunde(int anzahlSpieler, int länge) {
- int i = 0;
- boolean finish = false;
- while (!finish && i < anzahlSpieler - 1) {
- finish = zug(i, länge);
- i++;
- }
- return (!finish) ? null : wombats[i];
- }
- /*
- * Simuliert ein Spiel in der Wombat Ralley, d.h. es werden so viele Runden
- * erzeugt, bis ein Wombat gewinnt
- *
- * @param anzahlSpieler - Anzahl der Spieler
- *
- * @param spielfelder - Anzahl der Spielfelder
- *
- * @return züge - Anzahl der Züge, bis das Spiel gewonnen wurde
- */
- private static int simulateSpiel(int anzahlSpieler, int spielfelder) {
- int züge = 0;
- while (simulateRunde(anzahlSpieler, spielfelder) == null) {
- züge++;
- }
- // Alle Wombats wieder auf Position 0 setzen
- for (int i = 0; i < anzahlSpieler; i++) {
- wombats[i].setPosition(0);
- }
- return züge;
- }
- public static void main(String[] args) throws IOException {
- Scanner scanner = new Scanner(System.in);
- System.out.println("Wombat Rallye");
- System.out.println("Geben Sie bitte eine Anzahl von Spielern von 3-6 ein:");
- int anzahlSpieler = scanner.nextInt();
- if (anzahlSpieler < 3 || anzahlSpieler > 6) {
- do {
- System.out.println("Anzahl der Spieler beachten!");
- System.out.println("Geben Sie bitte eine Anzahl von Spielern von 3-6 ein:");
- anzahlSpieler = scanner.nextInt();
- } while (anzahlSpieler < 3 || anzahlSpieler > 6);
- }
- System.out.println("Geben Sie bitte die Länge des Spielfeldes ein:");
- int länge = scanner.nextInt();
- System.out.println("Geben Sie bitte die Anzahl der Simulationen ein:");
- int simulationen = scanner.nextInt();
- // Initialisierung
- init(anzahlSpieler);
- // Simulationen ausführen
- int züge = 0;
- for (int i = 0; i < simulationen; i++) {
- züge += simulateSpiel(anzahlSpieler, länge);
- }
- // Durchschnitt
- double durchschnitt = züge / simulationen;
- double aggressiv = züge / simulationen;
- double emsig = züge / simulationen;
- System.out.println("Die Wombat-Rallye war " + länge + " Spielfelder lang.");
- System.out.println("Es waren " + anzahlSpieler + " Wombats am Start.");
- System.out.println(
- "Durchschnittlich wurden " + (int) durchschnitt + " Runden gespielt, bis der Sieger feststand.");
- System.out.printf("Das aggressive Wombat hat %.2f Prozent der Spiele gewonnen. \n", aggressiv);
- System.out.printf("Das emsige, kleine Wombat hat %.2f Prozent der Spiele gewonnen.", emsig);
- scanner.close();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement