Guest User

LemGen

a guest
Nov 7th, 2019
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 7.91 KB | None | 0 0
  1. # /usr/bin/python
  2. # coding: utf-8
  3. # Bademus Arcarius. В помощь графоману
  4. # "Карманный компьютер фантаста" Станислава Лема
  5.  
  6. import random
  7.  
  8.  
  9. def addtoout(output, add):
  10.     output = output + add
  11.     return output
  12.  
  13.  
  14. def flip_coin():
  15.     return random.choice([True, False])
  16.  
  17.  
  18. main_flag = True
  19. print(
  20.     "Генератор сюжетов научной фантастики, которую не одобряет Станислав Лем.")
  21. while main_flag:
  22.     output = ""
  23.     end_flag = False
  24.     while end_flag == False:
  25.         beginning = random.choice(
  26.             ["Земля ", "Учёные ", "Земля подвергается нашествию "])
  27.         output = addtoout(output, beginning)
  28.         if beginning == "Земля ":
  29.             fast_death = random.choice([
  30.                 "сгорает ", "замерзает ", "падает на Солнце ",
  31.                 "сталкивается с огромной кометой "
  32.             ])
  33.             output = addtoout(output, fast_death)
  34.             fast_death_end = random.choice(
  35.                 ["и все гибнут. КОНЕЦ", "и почти все гибнут. КОНЕЦ"])
  36.             output = addtoout(output, fast_death_end)
  37.             end_flag = True
  38.             break
  39.         elif beginning == "Учёные ":
  40.             discover = random.choice(["открывают ", "создают "])
  41.             output = addtoout(output, discover)
  42.         #учёные или нашествие (общий путь) ->
  43.         invader = random.choice([
  44.             "инопланетян ", "насекомых ", "роботов ", "рептилий ",
  45.             "множества различных странных вещей "
  46.         ])
  47.         output = addtoout(output, invader)
  48.         size = random.choice(["маленького размера", "огромного размера"])
  49.         output = addtoout(output, size)
  50.         output = addtoout(output, ", которые ")
  51.         if flip_coin():
  52.             first_div_end_good = "ведут себя дружелюбно. КОНЕЦ"
  53.             output = addtoout(output, first_div_end_good)
  54.             end_flag = True
  55.             break
  56.         #не ведут себя дружелюбно ->
  57.         first_div = random.choice([
  58.             "воспринимают нас как пищу, ", "желают наших женщин, ",
  59.             "ведут себя дружелюбно, но никто их не понимает, ",
  60.             "отлично понимают нас, ", "не понимают нас, "
  61.         ])
  62.         output = addtoout(output, first_div)
  63.         if first_div == "воспринимают нас как пищу, ":
  64.             if flip_coin():
  65.                 first_div_end_death = "и съедают нас. КОНЕЦ"
  66.                 output = addtoout(output, first_div_end_death)
  67.                 end_flag = True
  68.                 break
  69.         elif first_div == "желают наших женщин, ":
  70.             if flip_coin():
  71.                 first_div_end_women = "похищают их и исчезают. КОНЕЦ"
  72.                 output = addtoout(output, first_div_end_women)
  73.                 end_flag = True
  74.                 break
  75.         #не съедают и не похищают ->
  76.         #радиоактивны или нет
  77.         if flip_coin():
  78.             output = addtoout(output, "и ещё к тому же радиоактивны, ")
  79.         second_div = random.choice([
  80.             "при этом они могут быть уничтожены ",
  81.             "при этом они не могут быть уничтожены "
  82.         ])
  83.         output = addtoout(output, second_div)
  84.         if second_div == "при этом они могут быть уничтожены ":
  85.             deliverance = random.choice([
  86.                 "атомной бомбой, ", "армией, флотом или авиацией, ",
  87.                 "толпой с вилами и факелами, "
  88.             ])
  89.             output = addtoout(output, deliverance)
  90.             output = addtoout(output,
  91.                               "и сим уничтожаются ко всеобщей радости. КОНЕЦ")
  92.             end_flag = True
  93.             break
  94.         #не могут быть уничтожены ->
  95.         deliverance = random.choice([
  96.             "атомной бомбой, ", "армией, флотом или авиацией, ",
  97.             "толпой с вилами и факелами, "
  98.         ])
  99.         output = addtoout(output, deliverance)
  100.         death = flip_coin()
  101.         if death:
  102.             final_death = random.choice([
  103.                 "и поэтому они съедают нас. КОНЕЦ",
  104.                 "и поэтому они убивают нас. КОНЕЦ",
  105.                 "и поэтому они устанавливают диктатуру. КОНЕЦ",
  106.                 "но они умирают от чёрной оспы. КОНЕЦ"
  107.             ])
  108.             output = addtoout(output, final_death)
  109.             end_flag = True
  110.             break
  111.         else:
  112.             science = flip_coin()
  113.             if science:
  114.                 output = addtoout(output,
  115.                                   "но учёные изобретают новое оружие, ")
  116.                 science_works = flip_coin()
  117.                 if science_works:
  118.                     science_good_end = random.choice([
  119.                         "которое их убивает. КОНЕЦ",
  120.                         "которое превращает их в мерзкие глыбы. КОНЕЦ"
  121.                     ])
  122.                     output = addtoout(output, science_good_end)
  123.                     end_flag = True
  124.                     break
  125.                 else:
  126.                     final_death = random.choice([
  127.                         "и поэтому они съедают нас. КОНЕЦ",
  128.                         "и поэтому они убивают нас. КОНЕЦ",
  129.                         "и поэтому они устанавливают диктатуру. КОНЕЦ",
  130.                         "но они умирают от чёрной оспы. КОНЕЦ"
  131.                     ])
  132.                     output = addtoout(output, final_death)
  133.                     end_flag = True
  134.                     break
  135.             else:
  136.                 femme_fatale = flip_coin()
  137.                 if femme_fatale:
  138.                     femme_fatale_end = "но влюбляются в красивую девушку, женятся и живут долго и счастливо. КОНЕЦ"
  139.                     output = addtoout(output, femme_fatale_end)
  140.                     end_flag = True
  141.                     break
  142.                 else:
  143.                     final_good_choice = random.choice([
  144.                         "но один хитрый парень убеждает их, что люди ОК ",
  145.                         "но священник рассказывает им о Боге "
  146.                     ])
  147.                     final_good_end = random.choice([
  148.                         "и они улетают. КОНЕЦ", "и они умирают. КОНЕЦ",
  149.                         "и они превращаются в мерзкие глыбы. КОНЕЦ"
  150.                     ])
  151.                     output = addtoout(output, final_good_choice)
  152.                     output = addtoout(output, final_good_end)
  153.                     end_flag = True
  154.                     break
  155.         end_flag = True
  156.     print(output)
  157.     input_flag = input(
  158.         "Нажмите ENTER для генерации ещё одного сюжета или введите 1 для выхода: "
  159.     )
  160.     if input_flag == "1":
  161.         main_flag = False
Advertisement
Add Comment
Please, Sign In to add comment