Schere, Stein, Papier Spiel - Logikfrage

Jack159

Bekanntes Mitglied
Ich code gerade ein Schere, Stein, Papier Spiel und frage mich gerade, wie ich dem Programm sagen soll, dass z.B. Schere stärker als Papier ist?
Momentan fällt mir nur die Möglichkeit ein, dass ich für jeden Möglichen Fall eine If-Anweisung erstelle. Also sowas wie "Wenn User hat Schere und Computer hat Papier, dann User gewinnt". Aber da gibts doch sicherlich eine besseren Weg^^ Mir fällt nur irgendwie keiner ein...
 

faetzminator

Gesperrter Benutzer
Ich würde mir merken, gegen was etwas gewinnen würde. Dies würde ich mit einem enum machen. Dann kann man auch ganz simpel z.B. das OBI-Hörnchen (nie Werner 4 gesehen ;) ?) nachträglich hinzufügen.
 

Asgar13

Bekanntes Mitglied
0 Schere
1 Stein
2 Papier

1. If für gleichheit
2. If für größer
3. If für gegner 0 und du 2/ andersrum

sind doch nicht so viele.

EDIT: Juhu, das OBI-HÖRNCHEN. Was noch fehlt OBI-HÖRNCHEN VS. RÖHRICH
 
M

Marcinek

Gast
SCNR

Schere Stein Papier Echse Spock

---

Ich glaube es ist ein normaler gerichteter Graph

wenn es eine Verbindung von A nach B gibt, dann schlägt A B
 

Volvagia

Top Contributor
Ich würde die 3 Dinge zu Klassen machen, ein Interface mit einer Methode implementeren, und das ganze so aussehen lassen:

Java:
GameObject userWahl = new Schere();
GameObject compWahl = new Stein();
////
if(userWahl.equals(compWahl))
{
	//Unentschieden
	return;
}
if(userWahl.gewinntGegen(compWahl))
{
	//Gewonnen
	return;
}
//Verloren

Dann kannst du später spielend einen Brunnen einbauen. :eek:
 
S

SlaterB

Gast
eine Enum bietet sich an mit Methode boolean beats(other),
darin reicht es bei Kreisbeziehung, die ordinal() zu vergleichen, nur beim letzen Element noch Sonderfall
 

faetzminator

Gesperrter Benutzer
eine Enum bietet sich an mit Methode boolean beats(other),
darin reicht es bei Kreisbeziehung, die ordinal() zu vergleichen, nur beim letzen Element noch Sonderfall

Da ginge aber auch [c](this.ordinal() + 1) % Types.values().length == other.ordinal()[/c].

Ich würde halt eine List<Types> verwenden. Mit immer noch der gleichen Begründung: Nur weil das "klassische" Schere, Stein, Papier "im Kreis herum" funktioniert, sollte man sich nicht auf das beschränken.
 

Ähnliche Java Themen

Neue Themen


Oben