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

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

05.11.2018, 20:27. Показов 144581. Ответов 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
 Аватар для Рыжий Лис
5973 / 3735 / 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
2696 / 1602 / 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
2696 / 1602 / 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
Ответ Создать тему
Новые блоги и статьи
Запрет удаления строк ТЧ документа при определенном условии
Maks 19.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "Аккумуляторы", разработанного в конфигурации КА2. У данного документа есть ТЧ, в которой в зависимости от прав доступа. . .
Модель заражения группы наркоманов
alhaos 17.04.2026
Условия задачи сформулированы тут Суть: - Группа наркоманов из 10 человек. - Только один инфицирован ВИЧ. - Колются одной иглой. - Колются раз в день. - Колются последовательно через. . .
Мысли в слух. Про "навсегда".
kumehtar 16.04.2026
Подумалось тут, что наверное очень глупо использовать во всяких своих установках понятие "навсегда". Это очень сильное понятие, и я только начинаю понимать край его смысла, не смотря на то что давно. . .
My Business CRM
MaGz GoLd 16.04.2026
Всем привет, недавно возникла потребность создать CRM, для личных нужд. Собственно программа предоставляет из себя базу данных клиентов, в которой можно фиксировать звонки, стадии сделки, а также. . .
Знаешь почему 90% людей редко бывают счастливыми?
kumehtar 14.04.2026
Потому что они ждут. Ждут выходных, ждут отпуска, ждут удачного момента. . . а удачный момент так и не приходит.
Фиксация колонок в отчете СКД
Maks 14.04.2026
Фиксация колонок в СКД отчета типа Таблица. Задача: зафиксировать три левых колонки в отчете. Процедура ПриКомпоновкеРезультата(ДокументРезультат, ДанныеРасшифровки, СтандартнаяОбработка) / / . . .
Настройки VS Code
Loafer 13.04.2026
{ "cmake. configureOnOpen": false, "diffEditor. ignoreTrimWhitespace": true, "editor. guides. bracketPairs": "active", "extensions. ignoreRecommendations": true, . . .
Оптимизация кода на разграничение прав доступа к элементам формы
Maks 13.04.2026
Алгоритм из решения ниже реализован на нетиповом документе, разработанного в конфигурации КА2. Задачи, как таковой, поставлено не было, проделанное ниже исключительно моя инициатива. Было так:. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru