2015-10-25 4 views
-5

Я новичок в программировании на python, и я пытаюсь выполнить простую игру в командной строке. В основном, в командной строке запрашивается число от 1 до 3, пользователь дает номер, затем команда сравнивает его со случайным числом и решает, проходит ли победитель или нет, если он пропустит предмет отверстия, повторяется до тех пор, пока он не пропустит номер , Моя проблема заключается в обновлении случайного числа для следующей фазы! Мне нужно новое случайное число за каждый раз, когда командная строка сравнивает его с номером пользователя.Невозможно возобновить случайное число на python

Вот мой код:

#!/usr/bin/env python 

#ChooseADoor 

from random import randint 
import time 
import sys 
print("Welcome mortal, to the Choose a door game...") 
Score = 0 
StrScore = str(Score) 

#DeathDoor = 0 
#DeathDoor = randint(1,3) 



tutorialRequired = input("Would you like to go through the tutorial? (YES/NO): ") 

if tutorialRequired == "YES": 
    print("""Alright mortal, you were kidnaped and you wake up in a room. 
There are 3 doors, two of them let you continue, 
one of them gives you a painful death... 
Yeah, sorry about that... 
    """) 
    ready = input("Ready mortal? (YES/NO): ") 
    if ready =="YES": 
     print("Starting game in 3...") 
     time.sleep(1) 
     print("2...") 
     time.sleep(1) 
     print("1...") 
     time.sleep(1) 
     print("GO!") 
     time.sleep(1) 
    else: 
     print("Goodbye mortal.") 
     sys.exit() 
else: 
    print("""Alright smarty pants let's see if you live to tell your story... 
    """) 
    ready = input("Ready mortal? (YES/NO): ") 
    if ready =="YES": 
     print("Starting game in 3...") 
     time.sleep(1) 
     print("2...") 
     time.sleep(1) 
     print("1...") 
     time.sleep(1) 
     print("GO!") 
     time.sleep(1) 
    else: 
     print("Goodbye mortal.") 
     sys.exit() 


while Score < 10: 

    print("Three doors ahed... ") 
    door = input("Pick one (1, 2, 3): ") 
    doorNum = int(door) 


    if door in ("123"): 
     DeathDoor = 0 
     DeathDoor = randint(1,3) 

     if DeathDoor == door: 

      print("End of line, mortal.") 
      print("You passed", StrScore, ("doors until the endo of your miserable life...")) 

      break 
     else: 
      RandomNum = 0 
      RandomNum = randint(1,3) 
      if RandomNum == 1: 
       print("You're safe for now, mortal. Go on.") 
       DeathDoor = 0 
       Score = (Score + 1) 
       StrScore = str(Score) 
       print("Score: " + StrScore) 
      elif RandomNum == 2: 
       print(" Beginner's luck. Let's see if you laugh next time mortal.") 
       DeathDoor = 0 
       Score = (Score + 1) 
       StrScore = str(Score) 
       print("Score: " + StrScore) 
      elif RandomNum == 3: 
       print(" Keep the fireworks, they may be useful for your funeral. Go on.") 
       DeathDoor = 0 
       Score = (Score + 1) 
       StrScore = str(Score) 
       print("Score:" + StrScore) 

    else: 
     print("Don't try to fool me,") 
     print("goodbye mortal.") 
     StrScore = str(Score) 
     print("You passed " + StrScore + (" doors until the endo of your miserable life...")) 
     time.sleep(1) 
     sys.exit() 

StrScore = str(Score) 
print("Congratulations mortal, you live. For now.")) 

Что я делаю неправильно?

ответ

0

Вы фактически получаете новое случайное число в каждом цикле. Ваша задача здесь:

... 
if DeathDoor == door: 
... 

Вы сравниваете целое число в строку, которая всегда дает False. Правильный путь

if DeathDoor == int(door) 

Также сброс RandomNum и DeathDoor к нулю ненужным.

Поскольку вы только начинаете изучать Python, вам следует рассмотреть возможность чтения https://www.python.org/dev/peps/pep-0008/ руководства по стилю Python. Если вы будете следовать правилам в руководстве с самого начала, ваш код будет намного легче понять (не только для других, но и для вас).

+0

спасибо! Да, я также думал, что мой код был немного беспорядок, но я просто не знал, что было правильно, спасибо за ссылку тоже! –

Смежные вопросы