Python :: Aufgabe #86
9 Lösungen
Stein, Papier, Schere, Echse, Spock
Anfänger - Python
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.
Lösungen:
import random
dic = {"stein" : 0, "papier" : 1, "schere" : 2, "echse" : 3, "spock" : 4}
print("\n=======---Stein, Papier, Schere, Echse, Spock---=======\n")
print("Stein schleift Schere und zerquetscht Echse.")
print("Papier bedeckt Stein und widerlegt Spock.")
print("Schere schneidet Papier und köpft Echse.")
print("Echse frisst Papier und vergiftet Spock.")
print("Spock zertrümmert Schere und verdampft Stein.\n")
print(55*"=")
while True:
while True:
wahl = input("Nun wähle! Aber wähle weise: ")
wahl = wahl.lower()
if wahl not in dic.keys():
print("Falsche Eingabe! Nochmal!\n")
else:
ai = random.choice(list(dic.keys()))
ai = ai.lower()
break
if wahl == ai:
print("{0:10}{1:10}".format("Spieler: ", wahl[0].upper()+wahl[1:]))
print("{0:10}{1:10}".format("Computer: ", ai[0].upper()+ai[1:]))
print("Unentschieden!")
elif (
(wahl == "stein" and (ai == "schere" or ai == "echse")) or
(wahl == "papier" and (ai == "stein" or ai == "spock")) or
(wahl == "schere" and (ai == "papier" or ai == "echse")) or
(wahl == "echse" and (ai == "papier" or ai == "spock")) or
(wahl == "spock" and (ai == "stein" or ai == "schere"))
):
print("{0:10}{1:10}".format("Spieler: ", wahl[0].upper()+wahl[1:]))
print("{0:10}{1:10}".format("Computer: ", ai[0].upper()+ai[1:]))
print("Du gewinnst!")
else:
print("{0:10}{1:10}".format("Spieler: ", wahl[0].upper()+wahl[1:]))
print("{0:10}{1:10}".format("Computer: ", ai[0].upper()+ai[1:]))
print("Der Computer gewinnt!")
again = input("\nNochmal (j/n): ")
if again == "J" or again == "j":
continue
else:
break
import random, time
"""
0 - rock
1 - Spock
2 - paper
3 - lizard
4 - scissors
"""
#Wandelt Nummer vom Computer in den Namen für die Ausgabe um!
def numbertoname(number):
if number==0: name="Stein"
elif number==1: name="Spock"
elif number==2: name="Papier"
elif number==3: name="Echse"
elif number==4: name="Schere"
return name
#Wandelt den Namen in die Nummer für die Berechung um!
def nametonumber(name):
if name=="Stein": number=0
elif name=="Spock": number=1
elif name=="Papier": number=2
elif name=="Echse": number=3
elif name=="Schere": number=4
return number
#Startet die Berechenung
def spiel(name):
#Gibt zugehörige Nummer zurück von der Auswahl des Spielers!
SpielerNummer=nametonumber(name)
#Berechnet die Zufällige Auswahl vom Computer
CompNummer=random.randrange(0, 5)
#Berechnet Differenz --> Wer gewinnt!
Unterschied=(SpielerNummer-CompNummer) % 5
if Unterschied == 0:
Gewinner = "Unentschieden!"
elif Unterschied == 1:
Gewinner = "Spieler gewinnt!"
elif Unterschied == 2:
Gewinner = "Spieler gewinnt!"
elif Unterschied == 3:
Gewinner = "Computer gewinnt!"
elif Unterschied == 4:
Gewinner = "Computer gewinnt!"
#Wandelt Auswahl des Computers in den Namen um!
CompName=numbertoname(CompNummer)
#Ausgabe für den Spieler
time.sleep(0.5)
print ("Spieler wählt: ", name)
print ("Computer wählt: ", CompName)
time.sleep(1)
print (Gewinner, "\n")
time.sleep(0.5)
#Anfangsausgabe als Erklärung
print ("Wilkommen zu Stein-Schere-Papier-Echse-Spock\n\n")
#Spielerklärung
print ("Kurze Erklärung, wie das Spiel funktioniert:\n ")
print ("Schere schneidet Papier")
print ("Papier bedeckt Stein")
print ("Stein zerquetscht Echse")
print ("Echse vergiftet Spock")
print ("Spock zertrümmert Schere")
print ("Schere köpft Echse")
print ("Echse frisst Papier")
print ("Papier widerlegt Spock")
print ("Spock verdampft Stein")
print ("Stein schleift Schere\n")
print ("Bitte wählen Sie einen der Namen aus:\n")
print ("0 - Stein")
print ("1 - Spock")
print ("2 - Papier")
print ("3 - Lizard")
print ("4 - Schere\n")
while True:
#Aufforderung an den Spieler eine Zahl einzugeben!
decision = int(input("Bitte geben Sie die Nummer ein: "))
#Beendet den Vorgang bei falscher Zahl!
if (decision > 4 ) or (decision < 0):
print ("Error: It has to be a number between 0 and 4")
break
#Wandelt die Zahl in den Namen um und startet die Berechnung!
name = numbertoname(decision)
spiel(name)
import random
figuren = ["Stein","Schere","Papier","Echse","Spock"]
print("Williommen bei Stein, Schere, Papier, Echse, Spock!")
run = True
while run :
n = input("figur wählen nummer eingeben: \n 1)Stein 2)Schere 3)Papier 4)Echse 5)Spock \n")
player = figuren[int(n)-1]
Gegner = random.choice(figuren)
print("Ich: ",player)
print("Gegner: ",Gegner)
if player == Gegner :
print("unentschieden")
elif player == "Stein" :
if Gegner == "Schere" or Gegner == "Echse" :
print("Gewonnen!!!")
else :
print ("verloren :( ")
elif player == "Schere" :
if Gegner == "Papier" or Gegner == "Echse" :
print("Gewonnen!!!")
else :
print ("verloren :( ")
elif player == "Papier" :
if Gegner == "Stein" or Gegner == "Spock" :
print("Gewonnen!!!")
else :
print ("verloren :( ")
elif player == "Echse" :
if Gegner == "Spock" or Gegner == "Papier" :
print("Gewonnen!!!")
else :
print ("verloren :( ")
elif player == "Spock" :
if Gegner == "Stein" or Gegner == "Schere" :
print("Gewonnen!!!")
else :
print ("verloren :( ")
ende = input("nochmal? j/n")
if ende == "n" :
run = False
import random
random.seed()
computerwahl = random.randint(0, 4)
tie = "Unentschieden!"
viktory = "Sie haben Gewonnen!"
lose = "Sie haben Verloren!"
playerwahl = input("Stein:1, Papier:2, Schere:3, Echse:4 oder Spock:5? ")
def player(playerwahl, computerwahl):
if playerwahl == 1:
player_stein(computerwahl)
elif playerwahl == 2:
player_papier(computerwahl)
elif playerwahl == 3:
player_schere(computerwahl)
elif playerwahl == 4:
player_echse(computerwahl)
elif playerwahl == 5:
player_spook(computerwahl)
else:
print "Falsche Eingabe! "
def player_stein(computerwahl):
if computerwahl == 0:
print tie
elif computerwahl == 1:
print lose
elif computerwahl == 2:
print viktory
elif computerwahl == 3:
print vikory
elif computerwahl == 4:
print lose
else:
print "Falsche Eingabe!"
def player_schere(computerwahl):
if computerwahl == 0:
print lose
elif computerwahl == 1:
print viktory
elif computerwahl == 2:
print tie
elif computerwahl == 3:
print viktory
elif computerwahl == 4:
print lose
else:
print "Falsche Eingabe!"
def player_papier(computerwahl):
if computerwahl == 0:
print viktory
elif computerwahl == 1:
print tie
elif computerwahl == 2:
print lose
elif computerwahl == 3:
print lose
elif computerwahl == 4:
print viktory
else:
print "Falsche Eingabe!"
def player_echse(computerwahl):
if computerwahl == 0:
print lose
elif computerwahl == 1:
print viktory
elif computerwahl == 2:
print lose
elif computerwahl == 3:
print tie
elif computerwahl == 4:
print viktory
else:
print "Falsche Eingabe!"
def player_spook(computerwahl):
if computerwahl == 0:
print viktory
elif computerwahl == 1:
print lose
elif computerwahl == 2:
print viktory
elif computerwahl == 3:
print lose
elif computerwahl == 4:
print tie
else:
print "Falsche Eingabe!"
if computerwahl == 0:
playerwahl
print "Gegner wählt", computerwahl +1
player(playerwahl, computerwahl)
elif computerwahl == 1:
playerwahl
print "Gegner wählt", computerwahl +1
player(playerwahl, computerwahl)
elif computerwahl == 2:
playerwahl
print "Gegner wählt", computerwahl +1
player(playerwahl, computerwahl)
elif computerwahl == 3:
playerwahl
print "Gegner wählt", computerwahl +1
player(playerwahl, computerwahl)
elif computerwahl == 4:
playerwahl
print "Gegner wählt", computerwahl +1
player(playerwahl, computerwahl)
else:
print("error")
import random
print 'Stein, Schere, Papier'
print '---------------------'
print 'Stein: Schleift Schere, zerquetscht Echse'
print 'Schere: Schneidet Papier, köpft Echse'
print 'Papier: Bedeckt Stein, widerlegt Spock'
print 'Spock: Zertrümmert Schere, verdampft Stein'
print 'Echse: Frisst Papier, vergiftet Spock'
print '\nDu kannst zwischen Stein, Schere, Papier, Echse und Spock wählen.'
while True:
a = raw_input('Waehle Deine Figur: ')
a = a.lower()
c = random.randint(0,4)
#d = ''
#e = ''
if c == 0:
d = 'Stein'
if c == 1:
d = 'Schere'
if c == 2:
d = 'Papier'
if c == 3:
d = 'Spock'
if c == 4:
d = 'Echse'
if a == 'stein':
if c == 1 or c == 4:
e = 'gewonnen'
elif c == 0:
e = 'unentschieden'
else:
e = 'verloren'
if a == 'schere':
if c == 2 or c == 4:
e = 'gewonnen'
elif c == 1:
e = 'unentschieden'
else:
e = 'verloren'
if a == 'papier':
if c == 0 or c == 3:
e = 'gewonnen'
elif c == 2:
e = 'unentschieden'
else:
e = 'verloren'
if a == 'spock':
if c == 0 or c == 1:
e = 'gewonnen'
elif c == 3:
e = 'unentschieden'
else:
e = 'verloren'
if a == 'echse':
if c == 2 or c == 3:
e = 'gewonnen'
elif c == 4:
e = 'unentschieden'
else:
e = 'verloren'
a = a.capitalize()
#print '\tDeine Figur: %r' % (a)
print 'Dein Gegner: ', d
print 'Dein Ergebnis: ', e, '!'
f = raw_input('Noch eine Runde? (j/n)> ')
if f == 'j':
continue
if f == 'n':
print 'Spiel beendet!'
break
else:
f = raw_input('Eingabe nicht verstanden. Bitte (j/n) eingeben> ')
# Bei der Eingabe gibt es keine Fehlerkontrolle - aber das kann ja der nächste
# Programmierer optimieren ;)
eingabe = raw_input("Stein, Papier, Schere, Echse, Spock - Wähle weise!: ")
eingabe = eingabe.lower()
# Folgende Listen können miteinander addiert werden und die Gewinner lassen sich
# daraus ableiten
stein = [0, -1, 1, 1, -1, "Stein", "stein"]
papier = [1, 0, -1, -1, 1, "Papier", "papier"]
schere = [-1, 1, 0, 1, -1, "Schere", "schere"]
echse = [-1, 1, -1, 0, 1, "Echse", "echse"]
spock = [1, -1, 1, -1, 0, "Spock", "spock"]
auswahl = [stein, papier, schere, echse, spock]
counter = 0
# Die Eingabe des Users wird verglichen mit den Listen und die korrekte Liste
# wird dem User zugeordnet (in der Variable a)
for i in auswahl:
if eingabe == i[6]:
a = auswahl[counter]
else:
counter += 1
# Der Computer wöhlt per Zufall eine Zahl zwischen 0 und 4 und diese
# Liste wird dem Computer zugeordnet (Variable b)
computerchoice = int(random()*100/20)
b = auswahl[computerchoice]
# Es werden nun die Listen aufsummiert und gesehen, wer gewonnen hat
for i in range(5):
if a[i]+b[i] == 1 and a[i] == 1:
print "Du hast mit %s gegen den Computer mit %s gewonnen!" % (a[5], b[5])
break
elif a[i]+b[i] == 1 and b[i] == 1:
print "Der Computer hat mit %s gegen dich und deinem Zeichen %s gewonnen :-(" % (b[5], a[5])
break
elif i == 4:
print "Ihr habt beide das gleiche Zeichen gewählt, nämlich %s" % a[5]
break
# -*- coding: utf-8 -*-
# Python2.7
import random
figur_liste = {1:"Schere", 2:"Papier", 3: "Stein", 4:"Echse", 5:"Spock"}
win = "DU HAST GEWONNEN!"
loose = "DU HAST VERLOREN!"
while True:
print "*****************"
print "REGELN:"
print "Schere schneidet Papier und köpft Echse"
print "Papier bedeckt Stein und widerlegt Spock"
print "Stein zerquetscht Echse und zerschmettert Schere"
print "Echse vergiftet Spock und frisst Papier"
print "Spock zertruemmert Schere und verdampft Stein"
print "***************** \n"
print "1: Schere 2: Papier 3: Stein 4: Echse 5: Spock \n"
d = int(input("Deine Wahl(1-5): "))
print "-> ", figur_liste[d]
print "Computer wählt:"
e = random.randrange(1, 6)
print "-> ", figur_liste[e], "\n"
#Schere
if d == 1 and (e == 2 or e == 4):
print win
elif (d == 2 or d == 4) and e == 1:
print loose
#Papier
elif d == 2 and (e == 3 or e == 5):
print win
elif (d == 3 or d == 5) and e == 2:
print loose
#Stein
elif d == 3 and (e == 4 or e == 1):
print win
elif (d == 4 or d == 1) and e == 3:
print loose
#Echse
elif d == 4 and (e == 5 or e == 2):
print win
elif (d == 5 or d == 2) and e == 4:
print loose
#Spock
elif d == 5 and (e == 1 or e == 3):
print win
elif (d == 1 or d == 3) and e == 5:
print loose
else: print "GLEICHSTAND!"
print "\n"
nchml = raw_input('Nochmal? [ j / n]: ')
if nchml == "n":
break
print "\n"
import random
def regeln():
print("Die Regeln lauten: \n Schere schneidet Papier \n Papier bedeckt Stein \n Stein zerquetscht Echse \n Echse vergiftet Spock \n Spock zertrümmert Schere \n Schere köpft Echse \n Echse frisst Papier \n Papier widerlegt Spock \n Spock verdampft Stein \n Stein zertrümmert Schere")
def eingabe():
global benutzer_auswahl
global möglichkeiten
möglichkeiten = ["Stein", "Papier", "Schere", "Echse", "Spock"]
t = 0
while t == 0:
benutzer_auswahl = input("Was wählen Sie?: (Stein/Papier/Schere/Echse/Spock) ")
if benutzer_auswahl not in möglichkeiten:
print("Nur (Stein/Papier/Schere/Echse/Spock) möglich!!!")
else:
t = 1
def kampf(benutzer_auswahl, möglichkeiten):
global computer_auswahl
global nachricht
sieg = "Sie haben gewonnen!!! :D"
verloren = "Sie haben leider verloren :("
computer_auswahl = random.choice(möglichkeiten)
print("Sie haben " + benutzer_auswahl + " gewählt. \nDer Computer hat " + computer_auswahl + " gewählt.")
if benutzer_auswahl == "Schere":
if computer_auswahl == "Papier" or computer_auswahl == "Echse":
nachricht = sieg
else:
nachricht = verloren
elif benutzer_auswahl == "Papier":
if computer_auswahl == "Stein" or computer_auswahl == "Spock":
nachricht = sieg
else:
nachricht = verloren
elif benutzer_auswahl == "Stein":
if computer_auswahl == "Echse" or computer_auswahl == "Schere":
nachricht = sieg
else:
nachricht = verloren
elif benutzer_auswahl == "Spock":
if computer_auswahl == "Schere" or computer_auswahl == "Stein":
nachricht = sieg
else:
nachricht = verloren
elif benutzer_auswahl == "Echse":
if computer_auswahl == "Spock" or computer_auswahl == "Papier":
nachricht = sieg
else:
nachricht = verloren
def ausgabe(nachricht):
print(nachricht)
regeln()
eingabe()
kampf(benutzer_auswahl, möglichkeiten)
ausgabe(nachricht)
#Stein Papier Schere Echse Spock
from random import choice
from tkinter import *
class Spiel(object):
wahl=['Stein','Papier','Schere','Echse','Spock']
def __init__(self):
self.f=Tk()
self.f.title("Stein Papier Schere :-P")
self.ich=StringVar()
self.cpu=StringVar()
self.point=StringVar()
self.layout()
self.f.mainloop()
def layout(self):
self.knoepfe=Frame(self.f)
self.knoepfe.pack(side=LEFT)
for w in Spiel.wahl:
Radiobutton(self.knoepfe,text=w,value=w,variable=self.ich,anchor=W).pack()
Button(self.knoepfe,text="Start",command=self.start,anchor=W).pack()
Button(self.knoepfe,text="Neu",command=self.neu,anchor=W).pack()
self.ausgabe=Frame(self.f)
self.ausgabe.pack(side=LEFT)
Label(self.ausgabe,textvariable=self.point,anchor=E).pack()
Label(self.ausgabe,text="Meine Wahl:",anchor=W).pack()
Label(self.ausgabe,textvariable=self.ich,anchor=W).pack()
Label(self.ausgabe,text="gegenerische Wahl:",anchor=W).pack()
Label(self.ausgabe,textvariable=self.cpu,anchor=W).pack()
self.anzeige=Label(self.f,text=" ",width=10)
self.anzeige.pack(side=BOTTOM)
def start(self):
self.cpu.set(choice(Spiel.wahl))
if self.point.get():
p=int(self.point.get())
else:
p=0
if self.ich.get()==self.cpu.get():
self.anzeige.config(text="Unentschieden")
elif self.check():
p+=1
self.point.set(str(p))
self.anzeige.config(text="Gewonnen")
else:
p-=1
self.point.set(str(p))
self.anzeige.config(text="Verloren")
def check(self):
i=self.ich.get()
c=self.cpu.get()
if i=="Schere" and c=="Papier":
return True
elif i=="Papier" and c=="Stein":
return True
elif i=="Stein" and c=="Echse":
return True
elif i=="Echse" and c=="Spock":
return True
elif i=="Spock" and c=="Schere":
return True
elif i=="Schere" and c=="Echse":
return True
elif i=="Echse" and c=="Papier":
return True
elif i=="Papier" and c=="Spock":
return True
elif i=="Spock" and c=="Stein":
return True
elif i=="Stein" and c=="Schere":
return True
else:
return False
def neu(self):
self.point.set(str(0))
x=Spiel()
