Also versuche ich Python zu lernen und ich habe ein Programm geschrieben, das im Wesentlichen entwickelt wurde, um ein Spiel mit dem Benutzer und einem Computer zu spielen.Mein Programm erzeugt Ungültigkeitsanweisung in einer Schleife. Ich weiß nicht, wie ich es beheben kann
dieses Spiel Mechanik sind:
Es gibt zwei Spieler: der Benutzer und der Computer, der alternative dreht, bis einer von ihnen erreicht 100 Punkte oder höher.
• Der Benutzer ist immer der erste Spieler.
• Wenn ein Spieler am Ende seines Zuges 100 Punkte oder mehr erreicht, endet das Spiel sofort und der andere Spieler erhält keinen weiteren Zug.
• Eine Runde besteht aus folgendem: Der Spieler würfelt einen 6-seitigen Würfel.
o Wenn sie eine 1 würfeln, erhalten sie 1 Punkt und ihr Zug ist beendet. Selbst wenn ein Spieler angesammelte Punkte aus vorherigen Würfen hat, wenn er eine 1 würfelt, ist sein Ergebnis für diesen Zug 1 Punkt und sein Zug ist beendet.
o Wenn sie eine andere Zahl würfeln, wird der Roll-Punktestand zum Turn-Total addiert.
o Dann haben sie die Option, weiter zu rollen oder zu halten. Es gibt keine Einschränkung wie oft ein Spieler in einem Zug rollen darf.
• Halten: Wenn ein Spieler hält, erhält er die aktuelle Runde und sein Zug endet. Wenn zum Beispiel ein Spieler eine 3, 4 und 2 würfelt, dann entscheidet er zu halten, erhält er 9 Punkte.
• Wenn der Spieler den Benutzer ist, sie die Möglichkeit, zu bestimmten, ob sie möchten
weiter rollen oder halten Sie nach jeder sie das Werkzeug Zeit rollen und bekommen keine 1.
• Wenn der Spieler ist der Computer, sie werden immer weiter rollen, bis sie insgesamt
den Wert 10 oder höher erreichen.
Das Problem mit dem Code ist es erzeugt eine unendliche Druckanweisung, wenn der Code ausgeführt wird. Ich habe es auf die Boolesche Anweisung in der Hauptfunktion heruntergearbeitet, wo ich is_user_turn = True gesetzt habe. Ich habe den Code durchsortiert, aber es gibt etwas, das ich nicht sehe, und brauche Hilfe, es zu reparieren. Hier
ist der Code:
import random
def welcome():
print("Welcome to Jeopordy")
def print_current_player(is_user_turn):
if (is_user_turn == True):
print("It is now human's turn")
if (is_user_turn == False):
print("It is now computer's turn")
def roll_die():
roll = random(1,6)
return roll
def take_turn(is_user_turn,Computer_Hold):
turn_total = 0
if(is_user_turn == True):
while(is_user_turn == True):
roll = roll_die()
if(roll == 1):
return 1
turn_total = turn_total + roll
print("Your turn total is 1")
is_user_turn = False
else:
print("You rolled a ",roll)
turn_total = turn_total + roll
print("Your turn total is ",turn_total)
play = input("Do you want to roll gain (Y/N)?")
if(play == 'N' or play == 'n'):
is_user_turn = False
return turn_total
else:
is_user_turn == True
if(is_user_turn == False):
while(is_user_turn == False):
roll = roll_die()
while(turn_total <= Computer_Hold):
if(roll + turn_total <= Computer_Hold):
print("You rolled a ", roll)
turn_total = turn_total + roll
print("Your turn total is ",turn_total)
return turn_total
def report_points(userscore,computerscore):
print("computer: ",computerscore)
print("user: ",userscore)
def get_next_player(is_user_turn):
if(is_user_turn == True):
is_user_turn = False
return is_user_turn
else:
is_user_turn = True
return is_user_turn
def main():
Game_End_Points = 100
Computer_Hold = 10
is_user_turn = True
userscore = 0
computerscore = 0
welcome()
while(userscore <= Game_End_Points and computerscore <= Game_End_Points):
print_current_player(is_user_turn)
if(get_next_player(is_user_turn) == True):
userscore = userscore + take_turn(is_user_turn,Computer_Hold)
report_points(userscore,computerscore)
get_next_player(is_user_turn)
elif(get_next_player(is_user_turn) == False):
computerscore = computerscore + take_turn(is_user_turn,Computer_Hold)
report_points(userscore,computerscore)
get_next_player(is_user_turn)
main()
Willkommen bei StackOverflow. Bitte lesen und befolgen Sie die Buchungsrichtlinien in der Hilfe. [Minimales, vollständiges, überprüfbares Beispiel] (http://stackoverflow.com/help/mcve) gilt hier. Wir können Ihnen nicht effektiv helfen, bis Sie Ihren MCVE-Code veröffentlicht und das Problem genau beschrieben haben. Wir sollten in der Lage sein, Ihren gesendeten Code in eine Textdatei einzufügen und das beschriebene Problem zu reproduzieren. – Prune
Wir brauchen nicht diesen Hintergrund und Ihr gesamtes Programm. Bitte schneiden Sie Ihre Frage ab. Sie haben das Problem eingegrenzt - großartig! Einfach diesen Teil posten! – Blorgbeard
Sie haben nur einen Fehler in der Einrückung der 8 Zeilen nach der While-Schleife. Sie sollten Teil der While-Schleife sein. – justhalf