Текстовый приключенческий цикл Python

Я делаю очень простую текстовую приключенческую игру на python 3.3.4 и хотел бы знать, есть ли какой-либо возможный способ сделать это, когда ввод не соответствует a/b, он возвращается к команде печати, где задан вопрос .

Вот что у меня есть на данный момент:

import time
import sys
from random import randrange

text = "** Execute Long Intro **"

for c in text:
    sys.stdout.write(c)
    sys.stdout.flush()
    seconds = "0." + str(randrange(1, 2, 1))
    seconds = float(seconds)
    time.sleep(seconds)


time.sleep(1)


obj1 =input('\nDo you \na.) Rest on the ground \nb.) Find a way out of the jungle\n')
if obj1 in ('a'):
    print('You find a comfortable spot on the ground and drift into sleep...')
    time.sleep(.6)
    print('Zzz.\nZzz..\nZzz...')
    time.sleep(3)
    print('You wake to a strange noise, and work your way out of the jungle.') 
    time.sleep(1)

    print('You emerge out of the jungle and walk along the shoreline of a sunny beach')
    time.sleep(1)
    print('** Objective One Completed **')
    time.sleep(2)



elif obj1 == 'b':
    print('You manage to find a path out of the jungle and discover a beach,')
    time.sleep(1)
    print('** Objective One Completed **')
    time.sleep(2)

elif obj1 != ('a','b'):
    print('Uh.')

Помощь будет принята с благодарностью.


person dawsondiaz    schedule 22.02.2014    source источник


Ответы (2)


Используйте цикл while:

obj1 = input(...)

while obj1 not in ('a', 'b'):
    obj1 = input("Invalid. Enter again: ")

if obj1 == 'a':
    ...
elif obj1 == 'b':
    ...
person Christian    schedule 22.02.2014

Вы можете попробовать использовать библиотеку blessings. установите его с помощью:

pip install blessings

и использование простое:

from blessings import Terminal
term = Terminal()
print term.clear_bol
print '\t{t.yellow}action{t.normal}|{t.green}Done!{t.normal}'.format(t=term)
person Farshid Ashouri    schedule 22.02.2014
comment
Я установил благословения с помощью pip и получаю недопустимую синтаксическую ошибку, когда запускаю предоставленный вами код. - person dawsondiaz; 23.02.2014
comment
Вы поняли идею. Просто исправьте ошибку. Прочтите документы на странице благословения. Я не вижу синтаксической ошибки в коде! - person Farshid Ashouri; 24.02.2014
comment
Этот ответ не касается вопроса. - person Ctrl S; 28.09.2018
comment
На самом деле я не знаю, какого черта я написал этот ответ 4 года назад. - person Farshid Ashouri; 29.09.2018