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

#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

von Fabiboy (50 Punkte)
- 07.02.2016 um 19:26 Uhr
Zeichen - Enum
Java-Code
Core - Spiellogik
Java-Code
Player
Java-Code
Computer:
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

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

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:

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
Seite 1 von 0
1