Ich habe mich bei coursera.org im Kurs "An Introduction to Interactive Programming in Python" eingeschrieben und gestern das erste Mini-Projekt (Schere-Stein-Papier-Schere-Echse-Spock) abgegeben. Heute habe ich mein Programm nochmal überarbeitet und auf Python 3 umgeschrieben. Ich würde mich über Anmerkungen zum Code und Verbesserungsvorschläge freuen (besonders ob das Ganze PEP-8 konform ist).
Das Spiel ist Abwandlung von Schere-Stein-Papier, textbasiert und wird gegen den Computer gespielt.
Der Kurs basiert auf Python 2, aber ich probiere alles auch in Python 3 aus, um die Unterschiede besser zu verstehen und beide anwenden zu können.
Code: Alles auswählen
# Rock-Paper-Scissors-Lizard-Spock
# A simple text-base game against the computer
# Change order of names because it's easier to evaluate the winner
"""
0 - rock
1 - Spock
2 - paper
3 - lizard
4 - scissors
"""
# import modules
import random
import time
# helper functions
def number_to_name(number):
""" Converts the computer's choice into names """
if number == 0:
name = "Rock"
elif number == 1:
name = "Spock"
elif number == 2:
name = "Paper"
elif number == 3:
name = "Lizard"
elif number == 4:
name = "Scissors"
else:
print ("Error: It has to be a number between 0 and 4")
return name
def name_to_number(name):
""" Converts the player's choice into numbers """
if name == "Rock":
number = 0
elif name == "Spock":
number = 1
elif name == "Paper":
number = 2
elif name == "Lizard":
number = 3
elif name == "Scissors":
number = 4
else:
print ("Error: Eather choose Rock, Spock, Paper, Lizard or Scissors.")
return number
def rpsls(name):
""" Function to evaluate the winner """
# Convert name to player_number using name_to_number
player_number = name_to_number(name)
# Compute random guess for comp_number using random.randrange()
comp_number = random.randrange(0, 5)
# Compute difference of player_number and comp_number module five
difference = (player_number - comp_number) % 5
# Use if/elif/else to determine winner
if difference == 0:
winner = "Player and computer tie!"
elif difference == 1:
winner = "Player wins!"
elif difference == 2:
winner = "Player wins!"
elif difference == 3:
winner = "Computer wins!"
elif difference == 4:
winner = "Computer wins!"
else:
print ("Unknown Error detected")
# Convert comp_number to name using number_to_name
comp_name = number_to_name(comp_number)
# print results
print ("Player chooses", name)
time.sleep(0.5)
print ("Computer chooses", comp_name)
print (winner, "\n")
# Print out decisions for the player
print ("Welcome to Rock-Paper-Scissors-Lizard-Spock")
print ("Please choose one of the following names:\n")
print ("0 - Rock")
print ("1 - Spock")
print ("2 - Paper")
print ("3 - Lizard")
print ("4 - Scissors\n")
while True:
decision = int(input("Enter your decision: "))
# End the game if a wrong number is entered
if (decision > 4 ) or (decision < 0):
print ("Error: It has to be a number between 0 and 4")
break
# Convert the entered number to name using number_to_name
name = number_to_name(decision)
rpsls(name)