Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.84/762: Рейтинг темы: голосов - 762, средняя оценка - 4.84
2 / 2 / 0
Регистрация: 25.10.2018
Сообщений: 51

Текстовый квест на питоне

05.11.2018, 20:27. Показов 143206. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Напишите небольшой текстовый квест. Пользователю сообщается, что его персонаж находится в комнате, из которой есть несколько ходов (не менее трёх). Он должен выбрать, в какой из них пойти. В любом из ходов (хотя бы в одном) может быть ещё развилка. Таким образом игрок выбирает ход один или два раза и приходит к какому-то концу — хорошему или нет (для каждого варианта прохождения лабиринта должно быть своё уникальное окончание). Пользователь может выбирать вариант, набрав его номер или слово — на ваше усмотрение, но обязательно дайте ему инструкцию, как сделать выбор. Если пользователь вводит неверный вариант, программа сообщает об ошибке и завершает работу.

Пример работы такой программы:

Вы находитесь в пещере на развилке. Вы можете пойти "налево", "направо" или "прямо". Введите одно из слов в кавычках для выбора.
налево
Вы направились налево. Через некоторое время вы дошли до двух дверей. Вы выберете "левую" или "правую"? правую
Вы смело открыли правую дверь. Но за ней вас подстерегала гигантская подземная жаба, которая проглотила вас целиком!
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
05.11.2018, 20:27
Ответы с готовыми решениями:

Текстовый квест, работа с БД
Доброго времени суток, я пишу текстовый квест на python и для хранения текста использовал txt и csv но, понял что это не практично и не...

Текстовый квест, работа с csv
Хорошое время для написания квеста, тк мне отказывали с моими извращенскими просьбами написать текст-квест полностьб в py-файлах, то я...

Текстовый файл в питоне
Можете помочь, пожалуйста. Имеются два текстовых файла одинакового размера, элементами которых являются отдельные буквы. Получить третий...

8
2 / 2 / 0
Регистрация: 05.11.2018
Сообщений: 55
05.11.2018, 22:43
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
print('Добро пожаловать в Квест.')
print('Вы очнулись в незнакомом помещение')
print('Перед вами 3 двери с номерами: 1, 2 или 3.')
print('Дверь из которой можно выбраться - не крайняя, в какую пройдете?')
otv1 = input()
if otv1 == '3':
    print('Пройдя в эту дверь, она захлопнулась. Выхода нет. Game over.')
elif otv1 == '1':
    print('Вы прошли в пропасть')
if otv1 == '2':
    print('Вы в следующей комнате')
    print('Выход отсюда возможен через 2 двери.')
    print('Дверь справа под номером 1, дверь слева под номером 2,')
    print('над дверью слева написано: выход в двери под номером 2.')
    print('Выход справа или слева?')
    otv2 = input()
    if otv2 == 'справа':
        print('Вы смело открыли правую дверь. Но за ней вас подстерегала ')
        print('гигантская подземная жаба, которая проглотила вас целиком!')
    elif otv2 == 'слева':
        print('Вы на улице!')
0
0 / 0 / 0
Регистрация: 27.12.2019
Сообщений: 3
27.12.2019, 23:25
Я конечно понимаю, что поздновато, но все же

Я уже несколько месяцев мучаюсь с таким квестом, и хочу чтобы при ответе пользователя на заданный вопрос (сейчас это "какую дверь выберешь") он не мог написать какой-то дичи по типу"овмтлмьлиьвшьт"

Как это сделать?
0
Просто Лис
Эксперт Python
 Аватар для Рыжий Лис
5972 / 3734 / 1099
Регистрация: 17.05.2012
Сообщений: 10,791
Записей в блоге: 9
28.12.2019, 08:17
Python
1
2
3
4
5
while True:
    s = input()
    if s in ('слева', 'справа'):
        break
    print('не знаю такого действия. Введи ещё раз')
2
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
28.12.2019, 09:04
I_AM_THE_DANGER, если выбор дверей обозначить цифрами, то можно реализовать через msvcrt.

Небольшой пример с мини-игрой по нахождению нужной двери.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# -*- coding: utf-8 -*-
 
import msvcrt
 
doors = {
    "1": False,
    "2": {
        "1": False,
        "2": False,
        "3": {
            "1": False,
            "2": True
            }
        },
    "3": {
        "1": False,
        "2": False,
        "3": False
        }
    }
 
print(f"Какую дверь выбрать: {list(doors.keys())}?")
while not isinstance(doors, bool):
    if msvcrt.kbhit():
        key = chr(ord(msvcrt.getch()))
        if key in doors:
            doors = doors[key]
            if isinstance(doors, dict):
                print(f"Какую дверь выбрать: {list(doors.keys())}?")
print("Вы выбрались!" if doors else "Вы застряли!")
1
0 / 0 / 0
Регистрация: 24.04.2020
Сообщений: 1
24.04.2020, 19:20
Я усовершенствовал код пользователя AntonPr (Спасибо ещё и пользователю Рыжий Лис, он меня подтолкнул на правильное решение), теперь, когда вы случайно введёте не то слово, или неправильный ответ, вы сможете без проблем продолжить квест на том самом месте, где его запороли:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
while True:
    print('Добро пожаловать в Квест.')
    print('Вы очнулись в незнакомом помещение')
    print('Перед вами 3 двери с номерами: 1, 2 или 3.')
    print('Дверь из которой можно выбраться - не крайняя, в какую пройдете?')
    s = input()
    if s == '1':
        print('Вы прошли в пропасть')
        continue
    elif s == '3':
        print('Пройдя в эту дверь, она захлопнулась. Выхода нет. Game over.')
        continue
    if s == '2':
        print('Вы в следующей комнате')
        print('Выход отсюда возможен через 2 двери.')
        print('Дверь справа под номером 1, дверь слева под номером 2,')
        print('над дверью слева написано: выход в двери под номером 2.')
        print('Выход справа или слева?')
    if s in ('1', '2', '3'):
        break
    print('не знаю такого действия. Введи ещё раз')
while s == '2':
    d = input()
    if d == 'справа':
        print('Вы смело открыли правую дверь. Но за ней вас подстерегала ')
        print('гигантская подземная жаба, которая проглотила вас целиком!')
        continue
    elif d == 'слева':
        print('Вы на улице!')
    if s in ('слева', 'справа'):
        break
        print('не знаю такого действия. Введи ещё раз')
    print('не знаю такого действия. Введи ещё раз')
0
0 / 0 / 0
Регистрация: 28.10.2020
Сообщений: 1
28.10.2020, 13:48
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
a = 0
b = 0
c = 0
d = 0
e = 0
print(' вы стоите на развилке, перед вами три двери, в какую пойдете: 1(каменная дверь), 2(старая обшарпанная дверь) или 3(обычная деревянная межкомнатная дверь)? (ответ цифрой)')
a = input()
if a == '1':
    print(' вы выбрали каменную дверь, но за ней вас ждали еще 2 двери, в какую пойдете: 1 или 2? (ответ цифрой)')
    b = input()
    if b == '1':
        print('вы не увидели ничего ,кроме кромешной тьмы, но не мешкая ни секунды ступили туда, правда там был обрыв и пролетев более десятка метров вы успешно распластались на полу усеянного сталагмитами, вы, конечно не выжили')
    else:
        print('за этой дверью вы почуствовали слабый ветер, похоже там выход! Вы пробежали вглубь тоннеля и увидели свет! Пройдя еще немного вы поняли что это выход... правда пройдя еще чуть-чуть вы поняли что диаметром этот выход около 10 см и вы вряд ли туда пролезите, что ж, можно вернуться и попробовать найти другой выход, хотя нет, дверь закрылась и вряд ли вы ее теперь откроете, прийдется вам остаться здесь до конца своих дней, хотя попробуйте покричать в это отверстие, вдруг вас услышат, вы умерли от голода')
elif a == '2':
    print('вы выбрали обшарпанную старую дверь, за которой был какой-то непонятный каменный зал с каменными плитами на полу, всего 3 ряда по 3 плиты, нужно выбрать правильный путь, куда же вы наступите? какой то здесь потолок слишком неестественный (1 ,2 или 3 плиту)')
    c = input()
    if c == '1':
        print('увы плита провалилась и вы упали в пропасть')
    elif c == '2':
        print('вроде все впорядке, куда дальше?(1 ,2 ,3)')
        d = input()
        if d == '1':
            print('пока все хорошо, куда дальше?(1 ,2 ,3)')
            e = input()
            if e == '1':
                print('ура, вы прошли и с вами ничего не случилось! а вот лестница, поднявшись по которой вы видите что тут еще и дверь, открыв которую вы понимаете ,что это выход! а еще вы понимаете ,что не надо было наступать на цифру 1 два раза так как у вас в ноге ядовитый дротик и вы, на самом деле лежите на плите не в силах двинуться и быстро умираете')
            elif e == '2':
                print('пожалуй, это было правильное решение, ведь ничего не произошло и вы наконец выбрались! плиты и двери позади, а теперь вы скоро выйдете отсюда... или нет? видимо здесь нету двери, ведущей наружу, а вот же кнопка! вы нажимаете и слышите щелчок и звук движения камней. вы ждете пока откроется потайной люк или дверь но ничего не происходит, обернувшись вы видите как потолок начинает обваливаться, вот что было с потолком, вы, кстати были раздавлены')
            elif e == '3':
                print('вы решили что если цифра 2 и 1 были то теперь должна быть тройка, но топор, отсекший вам голову это опроверг')
            else :
                print('вы сделали неправильный выбор, мы уже выехали за вами')
        elif d == '2':
            print('не стоило два раза подряд выбирать одно и то же число, то же вам сказали шипы, выскочившие из пола, только на своем языке, на языке боли')
        elif d == '3':
            print('это мог бы быть правильный ответ но это не так, ведь, пол под вами провалился и вы попали в комнату с голодным львом, никто не знает как он тут оказался и как он еще жив но увы вы были съедены им')
        else:
            print('вы сделали неправильный выбор, мы уже выехали за вами')
    elif c == '3':
        print('вы решили наступить на плиту с номером 3 в 1 ряду но увы это был не правильный выбор, вы бы и не поверили, но это вам уже доказал десяток стрел, внезапно вылетевший откуда-то и отправивший вас в другой мир')
    else:
        print('вы сделали неправильный выбор, мы уже выехали за вами')
elif a == '3':
    print('вы решили зайти в обычную деревянную межкомнатную дверь, за ней вы увидели комнату , напоминающую обычную комнату в доме, а пройдя дальше вы увидели человека, пишущего программу к этому квесту, который дописывал эту строчку, так что вы не стали ему мешать и просто вышли из дома и пошли своей дорогой, конец')
0
Модератор
Эксперт Python
 Аватар для Fudthhh
2695 / 1601 / 513
Регистрация: 21.02.2017
Сообщений: 4,210
Записей в блоге: 1
28.10.2020, 14:50
kostya_sokolov2, твой код как минимум скролится, во вторых ты ничего нового не добавил, смысл сюда выкладывать?
0
1 / 1 / 0
Регистрация: 08.11.2020
Сообщений: 3
08.11.2020, 17:26
Код завершается если ответ не соответствует критериям
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
print('Вы находитесь в пещере на развилке. Вы можете пойти "налево", "направо" или "прямо".'
      ' Введите одно из слов в кавычках для выбора.')
room = input()
if room not in ('налево', 'направо', 'прямо'):
    exit(0)
elif room == 'налево':
    print('вы пошли налево, перед вами две двери, в какую вы пойдете(введите номер двери)?')
    door = input()
    if door not in ('1', '2'):
        exit(0)
    elif door == '1':
        print('Вы вышли из подземелья!')
    elif door == '2':
        print('Вы проволились в огромную яму и умерли с голода')
if room == 'направо':
    print('Вы пошли направо, перед вами две двери, в какую вы пойдете(введите номер двери)?')
    door = input()
    if door not in ('1', '2'):
        exit(0)
    elif door == '1':
        print('Вы нашли ультра редкий предмет ничего')
    elif door == '2':
        print('Вы нашли сокровища')
if room == 'прямо':
    print('Вы пошли прямо, перед вами две двери, в какую вы пойдете(введите номер двери)')
    door = input()
    if door not in ('1', '2'):
        exit(0)
    elif door == '1':
        print('Перед вами две двери какую выберите?')
        door = input()
        if door not in ('1', '2'):
            exit(0)
        elif door == '1':
            print('Вы нашли комнату с никогда не спящим существом по имени программист')
        elif door == '2':
            print('Вы нашли самопишущую клавиатуру')
    elif door == '2':
        print('Вы нашли комнату с человеком который сейчас сидит и пишет этот код')
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
08.11.2020, 17:26
Помогаю со студенческими работами здесь

Текстовый квест
Привет всем. Нужно переделать текстовый квест с алгоритмического языка на php. С чего начать? Как сделать текстовое поле,в котором будут...

Текстовый квест
Общая архитектура текстового квеста Не понимаю как её реализовать, нужна система вывода текста на экран, как это сделать? А также...

Текстовый квест
Здраствуйте уважаемые, задался желанием слепить текстовый квест на коленке, но возникла проблема как это вообще сделать)) ...

Текстовый квест
Доброго времени суток господа. Возникла не большая заминка, задали написать текстовую игру на подобие квеста, минимум из 5 действий. К...

Текстовый квест
Вечер добрый. Такое дело: я совсем новичок, захотелось написать простенький текстовый КВЕСТ (пока что без веток сюжета, тк сейчас чисто в...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Воспроизведение звукового файла с помощью SDL3_mixer при касании экрана Android
8Observer8 26.01.2026
Содержание блога SDL3_mixer - это библиотека я для воспроизведения аудио. В отличие от инструкции по добавлению текста код по проигрыванию звука уже содержится в шаблоне примера. Нужно только. . .
Установка Android SDK, NDK, JDK, CMake и т.д.
8Observer8 25.01.2026
Содержание блога Перейдите по ссылке: https:/ / developer. android. com/ studio и в самом низу страницы кликните по архиву "commandlinetools-win-xxxxxx_latest. zip" Извлеките архив и вы увидите. . .
Вывод текста со шрифтом TTF на Android с помощью библиотеки SDL3_ttf
8Observer8 25.01.2026
Содержание блога Если у вас не установлены Android SDK, NDK, JDK, и т. д. то сделайте это по следующей инструкции: Установка Android SDK, NDK, JDK, CMake и т. д. Сборка примера Скачайте. . .
Использование SDL3-callbacks вместо функции main() на Android, Desktop и WebAssembly
8Observer8 24.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
моя боль
iceja 24.01.2026
Выложила интерполяцию кубическими сплайнами www. iceja. net REST сервисы временно не работают, только через Web. Написала за 56 рабочих часов этот сайт с нуля. При помощи perplexity. ai PRO , при. . .
Модель сукцессии микоризы
anaschu 24.01.2026
Решили писать научную статью с неким РОманом
http://iceja.net/ математические сервисы
iceja 20.01.2026
Обновила свой сайт http:/ / iceja. net/ , приделала Fast Fourier Transform экстраполяцию сигналов. Однако предсказывает далеко не каждый сигнал (см ограничения http:/ / iceja. net/ fourier/ docs ). Также. . .
http://iceja.net/ сервер решения полиномов
iceja 18.01.2026
Выкатила http:/ / iceja. net/ сервер решения полиномов (находит действительные корни полиномов методом Штурма). На сайте документация по API, но скажу прямо VPS слабенький и 200 000 полиномов. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru