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
