Как стать автором
Поиск
Написать публикацию
Обновить

Текстовый квест на языке python

Я собирался сделать текстовый квест на языке python, ранее не занимаясь этим (опыта в использовании python у меня нет) по заранее сделанному учеником 11 класса текстовому квесту.

Моей задачей было сделать такую же программу на ту же тему, но изменить сюжет и структуру программы.

Я подумал, что это будет легко - просто посмотрю, как кто-то сделал это так, перемещу эту часть вон туда, а ту вот сюда и совмещу с третей.

Тут то как раз таки и начались проблемы с не знанием операторов, значений символов и уровневых-логических зависимостей.

Вот код текстовой игры про подземелье ученика 11 класса:

Спойлер
print ("Dungeon quest")
print ("*********************************************************")
print ("Вы просыпаетесь ,в незнакомой комнате ,с похмелья у вас сильно болит голова ")
print ("нажмите ,|1| чтобы осмотреться")
a =int(input())
while a!=1 :
   a=int(input())
print ("*********************************************************")
print ("*Вы осматриваете комнату*")
print ("Вокруг темная , сырая комната , состоящая из заплесневелых холодных камней , в конце комнаты находится дверь , рядом с ней стоит единственный источник света - факел , он стоит на металлической подставке , закрепленной на стене.")
print ("В комнате , неподалеку от вас ,есть небольшой старинный столик , на нем стоит потухшая свеча и лежит пистолет")
print ("*********************************************************")
print ("нажмите ,|1| чтобы продолжить")
a =int(input())
while a!=1 :
   a =int(input())
print ("*********************************************************")
print ("О НЕТ !!! КАК ЖЕ Я СРАЗУ НЕ ЗАМЕТИЛ-подумали про себя вы")
print ("на вашу ногу в кандалы , от них идет цепь к стене")
print ("Ну нет уж , так не пойдет , нужно выбираться отсюда!- подумали вы")
print ("*********************************************************")
print ("нажмите ,|1| чтобы продолжить")
a =int(input())
while a!=1 :
   a =int(input())
print ("*********************************************************")
print ("Варианты действий")
print ("*********************************************************")
print ("попробовать выдернуть цепь из стены - для действия нажмите |1|")
print ("позвать на помощь - для действия нажмите |2|")
print ("осмотреться вокруг и поискать что-нибудь в карманах - для действия нажмите |3|")
print ("цепь не такая и толстая , может попробовать прокусить??? - для действия нажмите |4|")
print ("*********************************************************")
b=int(input())
r=0
while b!=3 :
   while b>4 or b<=0 :
       print ("Не , ну ты издеваешься ???")
       b=int(input())
   while b==1 :
       print ('Ха-ха , хорошая попытка ,может еще попробуешь???')
       b=int(input())
   while b==2 :
       print ('Вы прокричали охриплым голосом *ПОМОГИТЕ!* , но никто не ответил , какая жалость!')
       b=int(input())
       if b==2 :
           print ('ну да , может в этот раз поможет?')
   while b==4 :
       if r==1:
           print ("Зубов к сожалению не осталось")
           b=int(input())
       elif r==0 :
           print ('Эх блин , почти получилось')
           r+=1
print ("*********************************************************")
print ("*Вы осмотрелись вокруг и ничего не нашли*")
print ("В карманах тоже ничего")
print ("хотя нет, что это в ботинке?")
print ("*Вы находите шпильку в ботинке*") 
print ("Может попробовать вскрыть замок?")
print ("*********************************************************")
print ("нажмите ,|1| чтобы попробовать вскрыть замок")
a =int(input())
while a!=1 :
   a =int(input())
print ("*********************************************************")
print("Мини игра")
print("Для того чтобы вскрыть замок вы должны вводить степени двойки, пока замок не скроется")
print("Начинаем с 2^1")
print ("*********************************************************")
i=0
while True :
   a =int(input())
   if a==2 :
       b=int(input())
   else :
       print ("Вы не вскрыли замок , придется начинать сначала")
       continue
   if b==4 :
       c=int(input())
   else :
       print ("Вы не вскрыли замок , придется начинать сначала")
       continue
   if c==8 :
       d=int(input())
   else :
       print ("Вы не вскрыли замок , придется начинать сначала")
       continue
   if d==16 :
       e=int(input())
   else :
       print ("Вы не вскрыли замок , придется начинать сначала")
       continue
   if e==32 :
       h=int(input())
   else :
       print ("Вы не вскрыли замок , придется начинать сначала")
       continue
   if h==64 :
       break
   else :
       print ("Вы не вскрыли замок , придется начинать сначала")
       continue
print("Поздравляю , вы вскрыли замок!")
print ("*********************************************************")
print("*В коридоре послышались тяжелые , медленные шаги , направленные в левую сторону*")
print("*Вы освободились и встали на ноги*")
print ("*********************************************************")
print ("Варианты действий")
print ("*********************************************************")
print ("попробовать открыть дверь - для действия нажмите |1|")
print ("посмотреть в замочную скважину - для действия нажмите |2|")
print ("взять револьвер- для действия нажмите |3|")
print ("*********************************************************")
b=int(input())
while  b!=3 :
   while b>3 or b<=0 :
       print ("Не , ну ты издеваешься ???")
       b=int(input())
   while b==1 :
       print ('Дверь закрыта')
       b=int(input())
   while b==2 :
       print ('Вы увидели пустой , темный, узкий коридор, вы заметили ,что с справа чуть светлее')
       b=int(input())
   if b==3 :
       break
print ("*Вы взяли револьвер и проверили барабан , там 1 патрон*")
print ("*********************************************************")
print ("Варианты действий")
print ("*********************************************************")
print ("Попробовать прострелить замок - для действия нажмите |1|")
print ("застрелиться - для действия нажмите |2| ")
print ("*********************************************************")
a=int(input())
while a>2 or a<=0 :
       print ("Не , ну ты издеваешься ???")
       a=int(input())
while a==2:
   print ("Вы застрелились")
   print ("Game over ")
   print ("| Сделал Бобров Максим из 11Б |")
   raise SystemExit
if a==1:
 print ("Вы прострелили замок ")
 print ("О нет ! *вы слышите угрожающий рев и шаги слева в вашу сторону*")
print ("*********************************************************")
print ("Варианты действий")
print ("Побежать влево - для действия нажмите |1|")
print ("Побежать вправо- для действия нажмите |2|")
a=int(input())
while a>2 or a<0 :
       print ("Не , ну ты издеваешься ???")
       a=int(input())
while a==1:
   print ("Вас съел огр")
   print ("Game over ")
   print ("| Сделал Бобров Максим из 11Б |")
   raise SystemExit
print ("Вы побежали направо")
print ("*Вы слышите , как за вами бегут , и вот вот догонят*")
print ("О нет ! Впереди запертая деревянная дверь")
print ("*********************************************************")
print ("Варианты действий")
print ("*********************************************************")
print ("Накостылять этому дурачку - для действия нажмите |1|")
print ("Бежать дальше и попробовать выбить дверь - для действия нажмите |2| ")
print ("*********************************************************")
b=int(input())
while b>2 or b<0 :
   print ("Пока ты думал , тебя съел огр, доигрался!")
   print ("Game over ")
   print ("| Сделал Бобров Максим из 11Б |")
   raise SystemExit
if b==1 :
   print ('Перед вами стоит большой , орг')
   print ("*********************************************************")
   print("Мини игра")
   print("Для того чтобы ударить гора вы должны написать степень 3 ")
   print("Начинаем с 3^2")
   while True :
       a =int(input())
       if a==9 :
           print ("Вы нанесли удар , продолжайте")
           b=int(input())
       else :
           print ("Вас убил огр")
           print ("Game over ")
           print ("| Сделал Бобров Максим из 11Б |")
           raise SystemExit
       if b==27 :
           print ("Вы нанесли удар , продолжайте")
           c=int(input())
       else :
           print ("Вас съел огр")
           print ("Game over ")
           print ("| Сделал Бобров Максим из 11Б |")
           raise SystemExit
       if c==81 :
           print ("Вы нанесли удар , продолжайте")
           d=int(input())
       else :
           print ("Вас съел огр")
           print ("Game over ")
           print ("| Сделал Бобров Максим из 11Б |")
           raise SystemExit
       if d==243 :
           print ("Вы нанесли удар , продолжайте")
           e=int(input())
       else :
           print ("Вас съел огр")
           print ("Game over ")
           print ("| Сделал Бобров Максим из 11Б |")
           raise SystemExit
       if e==729 :
           print("Поздравляю , вы отметелили его !")
           print ("*********************************************************")
           print ("Вы выходите из подземелья ")
           print ("Вы выиграли !")
           print ("| Сделал Бобров Максим из 11Б |")
       else :
           print ("Вас съел огр")
           print ("Game over ")
           print ("| Сделал Бобров Максим из 11Б |")
           raise SystemExit
if a==2:
   print ("Вы побежали , прямо на дверь")
   print ("нажмите ,|1| чтобы попытаться выбить ее")
   a =int(input())
   if a!=1 :
       print ("Вас съел огр")
       print ("Game over ")
       print ("| Сделал Бобров Максим из 11Б |")
   if a==1 :
       print ("Вы выбили дверь и выбрались наружу")
       print ("Вы убежали и орг отстал")
       print ("Вы выиграли !")
       print ("| Сделал Бобров Максим из 11Б |")

А вот мое начало кода, на котором все в принципе-то и застопорилось:

Спойлер
print ("Dungeon raid")
print ("*************************************************")
print ("Вы - матерый воин Гатс, жаждущий славы и богатства")
print ("Недавно вами было взято задание - отправиться в жуткое подземелье ради спасения похищенной злым некромантом дочери графа Паулето")
print ("Вам предстоит подготовить свое снаряжение и собрать рюкзак перед дорогой, взяв то, что поможет вам в борьбе со зловещим некромантом")
print ("Нажмите |1| чтобы начать выбор экипировки")
a =int(input())
while a!=1 :
   a=int(input())
print ("*************************************************")
print ("Варианты действий")
print ("*********************************************************")
print ("Взять с собой тяжелый серебрянный двуручный меч - для действия нажмите |1|")
print ("Надеть на себя волшебный мифриловый доспех - для действия нажмите |2|")
print ("Положить в рюкзак лечебную эссенцию регерации жизни - для действия нажмите |3|")
print ("Взять с собой связку отмычек - для действия нажмите |4|")
print ("Засунуть в рюкзак лом - для действия нажмите |5|")
print ("Положить в голенища своих сапог два легких стальных ножа - для действия нажмите |6|")
print ("*********************************************************")
b=int(input())
if b>6 or b<=0 :
       print ("Сосредоточьтесь на сборе экипировки!")
if b==1 :
       print ("Этот меч мог бы показаться для кого то тяжелым - но только не для вас")
if b==2 :
       print ("Надев доспех вы ощущаете небольшую тяжесть и скованность движений, но решаете, что защита важнее")
if b==3 :
       print ("Ваша уверенность в успех рейда повысилась, ведь есть страховка в виде лечебного зелья")
if b==4 :
       print ("Немалую пользу может принести столь малый груз")
if b==5 :
       print ('Хоть лом и тяжел, но вы видете в нем помощника в будущих препядствиях')
if b==6 :
      print ('Вы не ассасин - но ножи никогда не бывают лишними')
print ("*********************************************************")
print ("Хотите ли вы взять что-то еще?")
print ("Нажмите |1| если хотите продолжить сбор снаряжения")
print ("Нажмите |2| если вы уже полностью готовы к походу")
a =int(input())
if a==1 :  
 c =int(input())
 c!=b
 if с>6 or с<=0 :
       print ("Сосредоточьтесь на сборе экипировки!")
       print("Подводит память? Вы уже взяли это!")
 if с>6 or с<=0 :
       print ("Сосредоточьтесь на сборе экипировки!")
 if с==1 :
       print ("Этот меч мог бы показаться для кого то тяжелым - но только не для вас")
 if с==2 :
       print ("Надев доспех вы ощущаете небольшую тяжесть и скованность движений, но решаете, что защита важнее")
 if с==3 :
       print ("Ваша уверенность в успех рейда повысилась, ведь есть страховка в виде лечебного зелья")
 if с==4 :
       print ("Немалую пользу может принести столь малый груз")
 if с==5 :
       print ('Хоть лом и тяжел, но вы видете в нем помощника в будущих препядствиях')
 if с==6 :
      print ('Вы не ассасин - но ножи никогда не бывают лишними')
if a==2 :
 print ("*************************************************")
 print ("Вы наконец-то собрались в дорогу")

В чем проблема?

Вот мой план создания игры:

Я предположил, если я обозначу каждый вариант из 6 за новую переменную b-c-a-d-f-g-e и напишу в условиях к каждому новому выбору что-то типа:

с не равно b - > далее d не равно b и c и тд., то получится далее запомнить выборы игрока и составить на их основе условие прохождения дальше или конца игры по типу:

Если игрок выбрал числа в такой то ситуации, что это числа 3-4-5 в любом порядке - > то он проходит, если нет - > проигрышь.

-------

Но даже тогда остается проблема того, что каждый раз к выбору представлены 6 вариантов, а не 6 - уже выбранные.

-------

К тому же, проблема еще в том, когда я пытаюсь ввести 3-ю переменную c (а отвечает за шаги, а b - первая переменная из 6 выборов) - > мне компилятор выдает ошибку такого рода, что я как-будто не могу ввести c и ее значения нет в программе, хотя я вроде бы указал ввод данных для c.

a =int(input())
if a==1 :  
 c =int(input())
 c!=b
 if с>6 or с<=0 :
       print ("Сосредоточьтесь на сборе экипировки!")
 if с==1 :
       print ("Этот меч мог бы показаться для кого то тяжелым - но только не для вас")
------весь код есть выше-----
if a==2 :
 print ("*************************************************")
 print ("Вы наконец-то собрались в дорогу")

Короче говоря, если кто-то дочитал до этого момента и хоть что-то понял + хочет и может помочь - > пожалуйста, помогите.

А то я с часу до 8 думу думаю и пытаюсь как-то с операторами что-то придумать: while, if, else - хоть как-то что-то понятно, но с операторами While True,Elif, continue и break - вообще мрак полный.

Благо разобрался, что != значит не равно, а == равно.

Я читал информацию в интернете, но ее так много и примеры совсем другие, что полезной инфы для себя я нашел очень мало.

Основные проблемы это:

1) Как сделать так, чтобы программа не предлагала к выбору уже ранее выбранный из 6 возможных вариантов выбор;

2) Как сделать так, чтобы программа запомнила все "цифры выбора" игрока и использовала дальше в программе как условие прохождения-не прохождения игры дальше;

3) Как ввести эту клятую третью переменную "С", в ситуации, когда нужно ввести сперва "A" -> а потом, если "А" == 1, то нужно ввести "С" и проверить ее на условия, а если "А" == 2, то просто продолжить чтение текста программы.

Теги:
Хабы:
Данная статья не подлежит комментированию, поскольку её автор ещё не является полноправным участником сообщества. Вы сможете связаться с автором только после того, как он получит приглашение от кого-либо из участников сообщества. До этого момента его username будет скрыт псевдонимом.