Java :: Aufgabe #99 :: Lösung #5

10 Lösungen Lösungen öffentlich
#99

Stein, Papier, Schere, Echse, Spock

Anfänger - Java von Energy - 24.09.2015 um 15:22 Uhr
Programmiere das Spiel Stein, Papier, Schere, Echse, Spock, sodass man selbst eine Figur auswählen kann und der Computer eine zufällige Figur auswählt. Ermittele dann, wer diese Partie gewonnen hat.
#5
vote_ok
von Fabiboy (50 Punkte) - 07.02.2016 um 19:26 Uhr
Zeichen - Enum
Quellcode ausblenden Java-Code
public enum Zeichen {

	Stein("Papier", "Spock"), 
	Papier("Schere", "Echse"), 
	Schere("Spock", "Stein"), 
	Echse("Schere", "Stein"), 
	Spock("Papier","Echse");

	private final String[] enemys;
	
	private Zeichen(String... enemys){
		this.enemys = enemys;
	}
	
	public String[] getEnemys(){
		return enemys;
	}
	
}


Core - Spiellogik

Quellcode ausblenden Java-Code
import java.util.Scanner;

public class Core {

	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		System.out.println("Bitte gebe deinen Spielernamen an...");
		String name = "Dumbledore";
		name = scan.nextLine();

		Player[] player = { new Player(name), new Computer("Computer") };
		String input = "any";
		while(!input.equalsIgnoreCase("quit")) {
			Player.showAuswahl();
			boolean abbruch = false;
			
			for (Player pl : player) {
				System.out.println(pl.toString());
			}
			
			for (Player pl : player) {
				int choice = pl.choose();
				if (choice == -1)
					abbruch = true;
				pl.setHand(choice);
			}
			
			if(abbruch){
				abbruch = false;
				continue;
			}
			for (Player pl : player) {
				System.out.printf("%s hat %s gewählt. ", pl.getName(),pl.getHand());
			}
			System.out.println();
			Player winner = whoWins(player[0], player[1]);
			if (winner == null) {
				System.out.println("Es gibt keinen Gewinner!");
			} else {
				System.out.printf("%s hat diese Runde gewonnen. %s hat einen Punkt bekommen.\n",winner.getName(), winner.getName());
				winner.addPoint();
			}
			System.out.println("Spiel beenden: quit | Spiel weiterführen: AnyKey");
			input=scan.next();
		}

		if (player[0].getPoints() == player[1].getPoints()) {
			System.out.println("Gleichstand. Niemand hat gewonnen.");
		} else if (player[0].getPoints() < player[1].getPoints()) {
			System.out.println(player[1].getName() + " hat das Spiel gewonnen.");
		} else {
			System.out.println(player[0].getName() + " hat das Spiel gewonnen.");
		}
	}

	public static Player whoWins(Player p1, Player cmp) {
		if (p1.getHand() == cmp.getHand()) {
			return null;
		} else {
			for (String enemy : p1.getHand().getEnemys()) {
				if (enemy.equals(cmp.getHand().toString())) {
					return cmp;
				} else {
					return p1;
				}
			}
			return null;
		}
	}

}


Player

Quellcode ausblenden Java-Code
import java.util.Scanner;


public class Player {

	private static Zeichen[] Auswahl = 
			{ Zeichen.Echse, Zeichen.Papier,
			Zeichen.Schere, Zeichen.Spock, Zeichen.Stein };
	private int points = 0;
	private Zeichen Hand = null;
	private String name;

	public Player(String name) {
		this.name = name;
	}

	public String getName() {
		return name;
	}

	public int getPoints() {
		return points;
	}

	public void addPoint() {
		points++;
	}

	public Zeichen getHand() {
		return Hand;
	}

	public void setHand(int auswahl) {
		if (auswahl < 0 || auswahl > 4) {
			Hand = null;
			System.out.println("Die Runde wird ausgesetzt, du hast keine gültige Ziffer eingegeben...");
		} else {
			Hand = Auswahl[auswahl];
		}
	}

	public static void showAuswahl() {
		System.out.println("Wähle eines der folgenden Zeichen...:");
		for (int i = 0; i < 5; i++) {
			System.out.printf("%d: %s \n", i, Auswahl[i]);
		}
	}

	public int choose() {
		Scanner in = new Scanner(System.in);
		try {
			return in.nextInt();
		} catch (Exception e) {
			return -1;
		}
		
	}

	public String toString() {
		return String.format("%s hat %d Punkte.", name, points);
	}
}


Computer:

Quellcode ausblenden Java-Code
import java.util.Random;


public class Computer extends Player{
	
	public Computer(String name) {
		super(name);
	}

	public int choose() {
		Random n = new Random();
		return(n.nextInt(4));
	}
}

Kommentare:

Für diese Lösung gibt es noch keinen Kommentar

Bitte melden Sie sich an um eine Kommentar zu schreiben.
Kommentar schreiben