Ich bin neu im Programmieren, aber ich habe mir selbst Python für ein paar Monate gelehrt. Ich habe ein Wortratespielprogramm geschrieben. Das Programm macht folgende Dinge:Python - Wortratespiel scheitert an Wörtern mit Wiederholungszeichen
- Es wählt ein Wort aus einer vordefinierten Satz von Wörtern, die ich
dictionary
genannt habe. - Es erklärt die Regeln des Spiels.
- Es teilt dem Benutzer mit, wie viele Buchstaben das Wort enthält, und stellt jeden Buchstaben mit einem Unterstrich dar.
- Es fordert den Benutzer, einen Brief zu erraten.
- Es teilt dem Benutzer mit, dass die Schätzung korrekt ist, und druckt dann die Unterstriche erneut, ersetzt jedoch den entsprechenden Unterstrich durch die korrekte Schätzung. Was ich meine ist, wenn das Wort "PYTHON" ist und der Benutzer "H" schätzt, wird es
["_", "_", "_", "H", "_", "_"]
drucken. - Wenn andererseits die Schätzung nicht im Wort ist, wird es dem Benutzer sagen und dann die Unterstriche erneut drucken. Was ich meine ist, wenn die nächste Schätzung des Benutzers 'Z' ist, wird es sagen "Dieser Buchstabe ist nicht im Wort" und dann erneut
["_", "_", "_", "H", "_", "_"]
erneut drucken, so dass der Benutzer verfolgen kann, wo er/sie ist. - Schließlich, sobald alle Buchstaben erraten worden sind, gratuliert es dem Benutzer und beendet das Spiel.
Hier ist der Code:
import random
dictionary = ("CROWS", "GOAT", "MONKEY", "COW", "HORSE", "SNAKE")
answer = random.choice(dictionary)
answer_length = len(answer)
victory = True
print("""
I have chosen a word. Your job is to guess it. I will help you
keep track.
""")
print("The word I have chosen is {} letters long.\n".format(answer_length))
underscores = []
for character in answer:
underscores.append("_")
print(underscores)
while victory:
guess = input("\nPlease guess a letter: ").strip().capitalize()
def pos(guess):
position = 0
for letter in answer:
if letter != guess:
position += 1
else:
print("Correct!")
break
return position
def update_board(x):
global underscores
if guess in answer:
underscores[x] = guess
else:
print("This letter is not in the word")
return underscores
def winner():
global underscores
global victory
if "_" not in underscores:
print("YOU HAVE WON!")
victory = False
x = pos(guess)
print(update_board(x))
winner()
Nun, das Problem, das ich habe, ist dies: Das Programm funktioniert gut, vorgesehen, dass das Wort der Computer aus dem Wörterbuch jeder hat nicht wählt wiederholte Buchstaben darin. Sie werden feststellen, dass die Wörter im Wörterbuch alle aus einzigartigen Zeichen bestehen. Wenn das Wörterbuch jedoch das Wort "CHICKEN" enthält, könnte das Programm auf Probleme stoßen.
Stellen Sie sich vor der Computer wählte "CHICKEN", und dann erraten Sie den Buchstaben "C". Das Programm zurückkehren würde:
Correct!
["C", "_", "_", "_", "_", "_", "_"]
Außerdem, wenn Sie C wieder erraten, es ist einfach wieder
Correct!
["C", "_", "_", "_", "_", "_", "_"]
drucken. Im Idealfall möchte ich, dass das erste Mal, dass der Benutzer "C" erraten hat, ["C", "_", "_", "C", "_", "_", "_"]
zurückgegeben wird. Im Moment funktioniert das Spiel nur, wenn alle Wörter im Wörterbuch keine wiederkehrenden Zeichen haben.
Jede Hilfe, die Sie zur Verfügung stellen könnten, wäre sehr willkommen. Vielen Dank!
Ihre pos() gibt nur die erste passende Position des Briefes (die for-Schleife bricht sofort auf Spiel). Es könnte stattdessen ein Array von übereinstimmenden Positionen zurückgeben. Dann könnte update_board über dieses Array iterieren und Unterstriche in diesen Indizes ersetzen. – Vasan