Оптимизируйте код
print('Добро пожаловать в игру Лабиринт')
print('Чтобы выбрать куда направится,введите одно слово из заключенных в кавычки')
room = 1
while room > 0:
if room == 1:
print('Вы находитесь в пещере на развилке. Вы можете пойти «налево», «направо» или «прямо».')
direction = input()
while direction != 'налево' and direction != 'прямо' and direction != 'направо':
direction = input()
if direction == 'налево':
print('Вы пошли налево.')
room = 2
elif direction == 'прямо':
print('Вы увидели пирата,который прятал своё сокровище.')
room = -1
elif direction == 'направо':
print('Вы зашли в тёмную комнату,через некоторое время вы упали к тоннелям')
room = -1
elif room == 2:
print('Вы выберете «левый» или «правый»? Или повернёте «назад»?')
direction = input()
while direction != 'левый' and direction != 'правый' and direction != 'назад':
direction = input()
if direction == 'левый':
print('Вы вернулись в тёмную комнату')
room = -1
elif direction == 'правый':
print('Вы смело вошли в правый тоннель. Но за ней вас поджидал пират,который вас убил')
room = -2
elif direction == 'назад':
print('Вы отправились к начальной развилке.')
room = 1
Код задачи (работающий), просто улучшите код, т.к. я думаю что слишком переусложнил его и можно сделать намного проще
Ответы (1 шт):
Автор решения: Stanislav Volodarskiy
→ Ссылка
Всегда мечтал написать текстовую игру. Вы всё сделали правильно. Можно отделить данные от кода. Код во всех комнатах одинаков, отличаются только текстовые сообщения, выбираемые действия и номера комнат. Соберите комнаты в единый словарь, который описывает весь игровой мир. Функция navigate в цикле выводит приглашение и вводит ответ пользователя. Если ответ соответствует ключу словаря actions, то печатается реакция и функция возвращает номер следующей комнаты:
def navigate(prompt, actions):
while True:
print(prompt)
direction = input()
if direction in actions:
message, next_room = actions[direction]
print(message)
return next_room
rooms = {
1: (
'Вы находитесь в пещере на развилке. Вы можете пойти «налево», «направо» или «прямо».',
{
'налево': ('Вы пошли налево.', 2),
'прямо': ('Вы увидели пирата, который прятал своё сокровище.', -1),
'направо': ('Вы зашли в тёмную комнату, через некоторое время вы упали к тоннелям', -1)
}
),
2: (
'Вы выберете «левый» или «правый»? Или повернёте «назад»?',
{
'левый': ('Вы вернулись в тёмную комнату.', -1),
'правый': ('Вы смело вошли в правый тоннель. Но за ней вас поджидал пират,который вас убил', -2),
'назад': ('Вы отправились к начальной развилке.', 1)
}
)
}
print('Добро пожаловать в игру Лабиринт')
print('Чтобы выбрать куда направится,введите одно слово из заключенных в кавычки')
room = 1
while room in rooms:
prompt, actions = rooms[room]
room = navigate(prompt, actions)
