コード例 #1
0
 def kickEnemy(self):
   if self.state != GameLoop.STATE_BATTLE:
     print(cl.y("Чё машешь копытами? Ищи мудака которого будешь пинать!"))
   else:
     my_strikes = self.person.getStrikesAccuracy()
     first_strike = True
     for p in my_strikes:
       if not first_strike:
         print(cl.g("Из-за большой ловкости ты можешь пнуть ещё раз"))
       first_strike = False
       if prob(p):
         strike = random.randint(self.person.getMinStrike(), self.person.getMaxStrike())
         doubleStrike = prob(50)
         if doubleStrike:
           strike = self.person.getMaxStrike() * 2
           print(cl.g("Точный удар!!!"))
         strike -= self.enemy.eff_shield()
         if strike < 0:
           strike = 0
         new_enemy_health = self.enemy.current_health - strike
         self.enemy.current_health = new_enemy_health
         print(cl.g("Ты пнул врага на {0}з. У него осталось {1}".format(strike, new_enemy_health)))
         if self.enemy.isDead():
           print(cl.g("Враг сдох."))
           self.finishBattle()
           return
       else:
         print(cl.r("Ты промазал"))
     enemy_strikes = self.enemy.getStrikesAccuracy()
     first_strike = True
     for p in enemy_strikes:
       if not first_strike:
         print(cl.r("Из-за большой ловкости враг может пнуть ещё раз"))
       first_strike = False
       if prob(p):
         strike = random.randint(self.enemy.getMinStrike(), self.enemy.getMaxStrike())
         doubleStrike = prob(50)
         if doubleStrike:
           strike = self.enemy.getMaxStrike() * 2
           variants = [0, 1, 2]
           v = random.choice(variants)
           if v == 0:
             print(cl.r("Враг:Сдохни урод!!!"))
           elif v == 1:
             print(cl.r("Враг:Получи гнида!!"))
           else:
             print(cl.r("Тебе не хило врезали!"))
         strike -= self.person.eff_shield()
         if strike < 0:
           strike = 0
         new_person_health = self.person.current_health - strike
         self.person.current_health = new_person_health
         print(cl.r("Он пнул тебя на {0}з. У тебя осталось {1}".format(strike, new_person_health)))
         if self.person.isDead():
           print(cl.r("Ты сдох."))
           self.exitGame()
           return
       else:
         print(cl.g("Враг промазал"))
コード例 #2
0
 def startNewGame(self):
   random.seed()
   default_name = cl.w("Раз") + cl.y("дол") + cl.r("бай")
   self.person = Person(Type.POTSAN, default_name)
   input(cl.w("Год 2xxx от Р.Х."))
   print(cl.w("Последний день ты пришел в универ"))
   print(cl.w("Ты по-страшному косил и забивал"))
   print(cl.w("Ты ещё мог сдать все задания, которые ты взял у друзей"))
   input(cl.w("Но тут..."))
   input(cl.y("Ректор: Ах ты урод, чёртов забивала. Вали из универа!"))
   input(cl.g("Ты: А типа чё?"))
   input(cl.y("Ректор: Ты отчислен мудак!!! Как ты был лохом так и останешься."))
   input(cl.r("Это слышали все и ты из пацана превратился в опущенного.") + "\n")
   print(cl.w("Ты не можешь стерпеть такой наезд, однако ректор офигительно крутой."))
   input(cl.w("Ты решил доказать свою крутизну всему миру (в твоем понимании - Городу)."))
   person_selected = False
   first_time = True
   while not person_selected:
     if first_time:
       print(cl.w("Выбери кем ты будешь:"))
     else:
       print(cl.w("А теперь выбирай:"))
     print(cl.w("0-Пацан"))
     print(cl.w("1-Отморозок"))
     print(cl.w("2-Гопник"))
     print(cl.w("3-Вор"))
     if first_time:
       print(cl.w("4-Чё за батва?"))
     val = input(cl.w(""))
     if first_time and val == "4":
       print(cl.lb("Пацан - это нормальный тип. (Бонус - Гёлфренд, Клуб)"))
       print(cl.lb("Отморозок - тупой корявый мудак. (Бонус - Самолечение царапин)"))
       print(cl.lb("Гопник - гоп он и ест гоп. (Бонус - Притон)"))
       print(cl.lb("Вор - везучий ублюдок. (Бонус - Воровство, Барыги)"))
       first_time = False
     else:
       if val == "1":
         self.person = Person(Type.OTMOROZOK, default_name)
       elif val == "2":
         self.person = Person(Type.GOPNIK, default_name)
         self.pr_discovered = True
       elif val == "3":
         self.person = Person(Type.VOR, default_name)
         self.bmar_discovered = True
       else: # По-умолчанию - пацан
         self.person = Person(Type.POTSAN, default_name)
         self.girl_discovered = True
         self.kl_discovered = True
       person_selected = True
   name = input(cl.g("А зовут тебя:"))
   if name != "":
     self.person.name = name
   print(cl.lb("Ты стоишь у дверей университета."))
   print(cl.lb("Отсюда ты начинаешь свой нелёгкий путь гопника."))
   print(cl.w("Доказать свою крутизну ты можешь, отпинывая разных мудаков."))
   print(cl.w("Тебе придётся поработать над собой, чтобы стать крутым."))
   print(cl.w("Введи ") + cl.y("i") + cl.w(" чтобы посмотреть команды, введи ") +
         cl.y("help") + cl.w(" чтобы узнать чё за ботва"))
コード例 #3
0
 def goToGirlfriend(self):
   if not self.girl_discovered:
     print(cl.r("У тебя пока нет девчонки"))
   else:
     if self.person.money < 12:
       print(cl.y("Ну не пойдёшь же как придурок без ничего"))
     else:
       print(cl.g("Ты пришёл к своей подруге."))
       print(cl.y("Ты купил ей чё-то, потратив 12 рублей."))
       print(cl.g("Ты расслабился, отдохнул и снова можешь творить свои гоповские дела."))
       self.person.money -= 12
       self.person.current_health = self.person.getMaxHealth()
コード例 #4
0
ファイル: person.py プロジェクト: HapKoM/opengopnik
 def enemyStr(self):
     result = cl.g("Это {0} {1} уровня - {2}\n".format(
         str(self.person_type), str(self.level), self.levelStr()))
     result += cl.w("Сл:") + self.eff_strength_s() + cl.w(
         " Лв:") + self.eff_agility_s() + cl.w(
             " Жв:") + self.eff_vitality_s() + cl.w(
                 " Уд:") + self.eff_luck_s() + "\n"
     weaponstr = "Урон {0}-{1}".format(self.getMinStrike(),
                                       self.getMaxStrike())
     if (len(self.weapons) > 0):
         weaponstr += "    "
         for w in self.weapons:
             weaponstr += str(w)
             weaponstr += " "
         weaponstr = cl.lb(weaponstr)
     else:
         weaponstr = cl.w(weaponstr)
     weaponstr += "\n"
     result += weaponstr
     healthstr = "Здоровье {0}/{1}".format(self.current_health,
                                           self.getMaxHealth())
     if self.broken_leg:
         healthstr += cl.r(" Сломана нога")
     if self.broken_jaw:
         healthstr += cl.r(" Сломана челюсть")
     healthstr += "\n"
     if self.current_health > (self.getMaxHealth() * 2 / 3):
         result += cl.g(healthstr)
     elif self.current_health > (self.getMaxHealth() * 1 / 3):
         result += cl.y(healthstr)
     else:
         result += cl.r(healthstr)
     strikes = self.getStrikesAccuracy()
     accstr = ""
     if len(strikes) == 1:
         accstr = "Точность {0}%\n".format(strikes[0])
     elif len(strikes) == 2:
         accstr = "Точность 90%,   Второй удар {0}%\n".format(strikes[1])
     else:
         accstr = "Точность 90% - {1} ударов, Точность {2} удара {3}%\n".format(
             len(strikes) - 1, len(strikes), strikes[len(strikes) - 1])
     result += cl.w(accstr)
     if (self.eff_shield() > 0):
         shieldstr = "Броня {0}".format(self.eff_shield())
         shieldstr += "    "
         for s in self.shields:
             shieldstr += str(s)
             shieldstr += " "
         shieldstr += "\n"
         result += cl.w(shieldstr)
     return result
コード例 #5
0
 def party(self):
   if self.person.money < 15:
     print(cl.r("Не хватает"))
   else:
     self.person.money -= 15
     self.person.agility += 1
     print(cl.g("Ты прокачиваешь ловкость"))
     print(cl.b("Ловкость +1"))
コード例 #6
0
 def repair(self):
   if self.person.money < 7:
     return
   print("Ого! Да тебя не иначе как грузовик откатал!")
   print(cl.g("Твои переломы залечены."))
   self.person.broken_jaw = False
   self.person.broken_leg = False
   self.person.money -= 7
コード例 #7
0
 def spyForCheaters(self):
   if self.person.money < 22:
     print(cl.r("Не хватает"))
   else:
     self.person.money -= 22
     self.person.luck += 1
     print(cl.g("Ты прокачиваешь удачу"))
     print(cl.b("Удача +1"))
コード例 #8
0
 def trainSkill(self):
   if self.person.money < 10:
     print(cl.r("Не хватает"))
   else:
     self.person.money -= 10
     self.person.increaseExp(10)
     print(cl.g("Ты тренируешься"))
     print(cl.b(" +10 качков опыта"))
コード例 #9
0
 def trainShield(self):
   if self.person.money < 20:
     print(cl.r("Не хватает"))
   else:
     self.person.money -= 20
     self.person.shield += 1
     print(cl.g("Ты прокачиваешь пресс"))
     print(cl.b("Броня +1"))
コード例 #10
0
 def trainVitality(self):
   if self.person.money < 20:
     print(cl.r("Не хватает"))
   else:
     self.person.money -= 20
     self.person.vitality += 1
     print(cl.g("Ты прокачиваешь выносливость"))
     print(cl.b("Выносливость +1"))
コード例 #11
0
 def trainStrength(self):
   if self.person.money < 20:
     print(cl.r("Не хватает"))
   else:
     self.person.money -= 20
     self.person.strength += 1
     print(cl.g("Ты прокачиваешь силу"))
     print(cl.b("Сила +1"))
コード例 #12
0
 def buyJawShield(self):
   if self.person.money < 30:
     print(cl.r("Не хватает"))
   else:
     if self.person.jaw_shield:
       print(cl.y("У тебя есть эта штучка"))
     else:
       self.person.money -= 30
       self.person.jaw_shield = True
       print(cl.g("Ты купил защиту"))
コード例 #13
0
 def goToHospital(self):
   if not self.rep_discovered:
     print(cl.y("Сначала найди где находится эта больница"))
   else:
     print(cl.w("Ты пришёл на ремонт, к ветеринару напиши ") + cl.y("w") + cl.w(" чтобы уйти"))
     if self.person.current_health >= self.person.getMaxHealth():
       print("Док: вали отсюда ты здоров")
       return
     else:
       print("Док: не волнуйся всё зарастёт как на собаке")
     price_1 = "3"
     price_2 = "7"
     if self.person.money < 3:
       price_1 = cl.r("3")
     if self.person.money < 7:
       price_2 = cl.r("7")
     print(cl.g("h") + cl.w(" - за ") + price_1 + cl.w(" рубля тебя залатают"))
     print(cl.g("r") + cl.w(" - за ") + price_2 + cl.w(" рублей починят переломы"))
     self.state = GameLoop.STATE_HOSPITAL
コード例 #14
0
 def greetings(self):
   lines = [
     "┌─── ┌───┐ ┌───┐ ╷   ╷ ╷   ╷ ╷   ╷",
     "│    │   │ │   │ │   │ │   │ │  ╱ ",
     "│    │   │ │   │ │   │ │   │ │ ╱  ",
     "│    │   │ │   │ ├───┤ │  ╱│ │╱   ",
     "│    │   │ │   │ │   │ │ ╱ │ │╲   ",
     "│    │   │ │   │ │   │ │╱  │ │ ╲  ",
     "│    │   │ │   │ │   │ │   │ │  ╲ ",
     "╵    └───┘ ╵   ╵ ╵   ╵ ╵   ╵ ╵   ╵",
     "                      Версия 2.00 ",
   ]
   print(cl.grey(lines[0]))
   print(cl.b(lines[1]))
   print(cl.g(lines[2]))
   print(cl.cyan(lines[3]))
   print(cl.r(lines[4]))
   print(cl.magenta(lines[5]))
   print(cl.y(lines[6]))
   print(cl.w(lines[7]))
   print(cl.g(lines[8]))
コード例 #15
0
 def drinkBeer(self):
   if self.person.current_health >= self.person.getMaxHealth():
     print(cl.y("Блин только тупить не надо - и так здоровья до фига."))
     return
   if self.person.broken_jaw:
     print(cl.r("Ты не можешь пить из-за сломаной челюсти."))
     return
   if self.person.beer > 0:
     add_health = self.person.getMaxHealth() - self.person.current_health
     if add_health > 5:
       add_health = 5
     self.person.current_health += add_health
     self.person.beer -= 0.5
     if self.person.beer < 0:
       self.person.beer = 0
     print(cl.g("Пиво прибавляет {0}з. Здоровья:{1}/{2}. Осталось {3}л. пива".format(
       add_health, self.person.current_health, self.person.getMaxHealth(), round(self.person.beer, 1))))
   else:
     print(cl.r("Пива нету"))
コード例 #16
0
  def meetGod(self):
    def meetGodImpl(person):
      '''Реализация случайного благославления'''
      choice = random.choice([0, 1, 2, 3, 4, 5, 6])
      god_say = ""
      if choice == 0:
        god_say += cl.b("Да увеличится, офигенно, твоя понтовость среди гопоты!\n")
        god_say += cl.b("Получи 100!")
        person.pont += 100
      elif choice == 1:
        god_say += cl.b("Да увеличится твоя понтовость!")
        person.increaseExp(self.person.nextLevelSkill() - person.skill)
      elif choice == 2:
        god_say += cl.b("Да увеличится твоя сила!")
        person.strength += 1
        person.current_health = person.getMaxHealth()
      elif choice == 3:
        god_say += cl.b("Да возрастут твои силы жизненные!")
        person.vitality += 1
        person.current_health = person.getMaxHealth()
      elif choice == 4:
        god_say += cl.b("Да уменьшится твоя корявость!")
        person.agility += 1
      elif choice == 5:
        god_say += cl.b("Накладываю на тебя защиту!")
        person.shield += 1
      elif choice == 6:
        god_say += cl.b("Дарю тебе феньку!")
        variants = [artefacts.GodSaveRing(), artefacts.GodHelpRing(), artefacts.MegaRing(), artefacts.GodForgiveRing()]
        artefact = random.choice(variants)
        if artefact.description != "":
          god_say += "\n" + cl.b(artefact.description)
        person.artefacts.append(artefact)
      input(god_say)

    input(cl.w("Бродя по окрестностям с самыми грязными намерениями..."))
    input(cl.w("Ты наткнулся на храм Божий."))
    if self.church_visited_ctr == 0:
      input(cl.w("Раз такая батва..."))
      input(cl.w("Надо типа помолиться Господу Богу..."))
      input(cl.w("Как делают новые руссские."))
      input(cl.g("\"Господи, Братан, прости грешника\". - Начал было ты..."))
      input(cl.b("Громовой голос: \"Да пошёл ты нахрен!\""))
      input(cl.g(" - Эээ.. типа.. а чё?.."))
      input(cl.b(" - \"а чё?\" блин! ") + self.person.name + cl.b("-" + str(self.person.person_type) + " чёртов!"))
      input(cl.g("Ну.."))
      input(cl.b("Ладна насылаю на тебя, типа, \"моё благославление\""))
      meetGodImpl(self.person)
      print(cl.b("А теперь вали отсюда и никогда здесь не появляйся!"))
      print("")
      print(cl.w("Ты идёшь дальше"))
      print(cl.w("Ничё не происходит"))
    elif self.church_visited_ctr == 1:
      input(cl.w("В прошлый раз Бог сказал чтобы ты не осквернял своей рожей святой храм"))
      input(cl.w("Но надо бы типа помолиться о прощении"))
      input(cl.g("\"Господи, Братан, прости грешника опять\"."))
      input(cl.b("Бог: \"Да блин, упорный чудак!\""))
      input(cl.b("Ладно насылаю на тебя, типа, \"моё благославление\" снова"))
      meetGodImpl(self.person)
    else:
      input(cl.b("Бог: \"А ты опять.\""))
      input(cl.b("Ну ладно насылаю на тебя \"благославление\""))
      meetGodImpl(self.person)
      print(cl.b("А теперь проваливай!"))
    self.church_visited_ctr += 1
コード例 #17
0
ファイル: person.py プロジェクト: HapKoM/opengopnik
 def __str__(self):
     result = cl.g("Ты {0} {1} уровня - {2}\n".format(
         str(self.person_type), str(self.level), self.levelStr()))
     result += cl.g("А зовут тебя: ")
     result += self.name
     result += "\n"
     result += cl.y(
         "Сейчас у тебя {0} опыта, а для прокачки надо {1}\n".format(
             self.skill, self.nextLevelSkill()))
     result += cl.w("Сл:") + self.eff_strength_s() + cl.w(
         " Лв:") + self.eff_agility_s() + cl.w(
             " Жв:") + self.eff_vitality_s() + cl.w(
                 " Уд:") + self.eff_luck_s() + "\n"
     simple_artefacts_str = cl.w("Феньки:")
     simple_artefacts_count = 0
     power_artefacts_str = cl.w("Мощные феньки:")
     power_artefacts_count = 0
     for a in self.artefacts:
         if a.is_powerful:
             power_artefacts_count += 1
             power_artefacts_str += cl.b(" {0}".format(str(a)))
         else:
             simple_artefacts_count += 1
             simple_artefacts_str += cl.b(" {0}".format(str(a)))
     if simple_artefacts_count > 0:
         result += simple_artefacts_str
         result += "\n"
     if power_artefacts_count > 0:
         result += power_artefacts_str
         result += "\n"
     if self.mobile:
         result += cl.lb("У тебя есть мобильник\n")
     if self.sun_glass:
         result += cl.lb("У тебя есть тёмные очки\n")
     if self.tattoo:
         result += cl.lb("На тебе зоновская наколка\n")
     weaponstr = "Урон {0}-{1}".format(self.getMinStrike(),
                                       self.getMaxStrike())
     if (len(self.weapons) > 0):
         weaponstr += "    "
         for w in self.weapons:
             weaponstr += str(w)
             weaponstr += " "
         weaponstr = cl.lb(weaponstr)
     else:
         weaponstr = cl.w(weaponstr)
     weaponstr += "\n"
     result += weaponstr
     healthstr = "Здоровье {0}/{1}".format(self.current_health,
                                           self.getMaxHealth())
     if self.jaw_shield:
         healthstr += cl.b(" Зубная защита")
     if self.broken_leg:
         healthstr += cl.r(" Сломана нога")
     if self.broken_jaw:
         healthstr += cl.r(" Сломана челюсть")
     healthstr += "\n"
     if self.current_health > (self.getMaxHealth() * 2 / 3):
         result += cl.g(healthstr)
     elif self.current_health > (self.getMaxHealth() * 1 / 3):
         result += cl.y(healthstr)
     else:
         result += cl.r(healthstr)
     strikes = self.getStrikesAccuracy()
     accstr = ""
     if len(strikes) == 1:
         accstr = "Точность {0}%\n".format(strikes[0])
     elif len(strikes) == 2:
         accstr = "Точность 90%,   Второй удар {0}%\n".format(strikes[1])
     else:
         accstr = "Точность 90% - {1} ударов, Точность {2} удара {3}%\n".format(
             len(strikes) - 1, len(strikes), strikes[len(strikes) - 1])
     result += cl.w(accstr)
     if (len(self.shields) > 0):
         shieldstr = "Броня {0}".format(self.shield)
         shieldstr += "    "
         for s in self.shields:
             shieldstr += str(s)
             shieldstr += " "
         shieldstr += "\n"
         result += cl.w(shieldstr)
     if (self.pot > 0):
         result += cl.w("Косяки {0}\n".format(self.pot))
     if self.beer > 0:
         result += cl.w("Пиво {0}л.\n".format(round(self.beer, 1)))
     else:
         result += cl.r("Пива нет\n")
     if self.money > 0:
         result += cl.w("Бабки {0}".format(self.money))
     else:
         result += cl.r("Бабок нет")
     if self.stuff > 0:
         result += cl.w("\nХлам {0}".format(self.stuff))
     return result
コード例 #18
0
 def walk(self):
   if self.state != GameLoop.STATE_WAIT_CMD:
     self.state = GameLoop.STATE_WAIT_CMD
     return
   self.person.step()
   if prob(1):
     self.meetGod()
     return
   if not self.rep_discovered:
     if prob(5):
       print(cl.lb("Ты спросил у прохожего где тут больница."))
       self.rep_discovered = True
   if not self.trn_discovered:
     if prob(5):
       print(cl.lb("На стене реклама: \"Жизнь тяжела. Если не хочешь сдохнуть качайся!\"."))
       self.trn_discovered = True
   r = random.uniform(0, 100)
   if r < 5:
     if not self.evil_enemies:
       print(cl.y("Ты зашёл на тропинку где бродит искитимская гопота."))
       self.evil_enemies = True
     else:
       print(cl.y("Ты вышел с тропинки."))
       self.evil_enemies = True
     return
   if r < 60:
     print(cl.w("Ничё не происходит."))
     return
   if r < 70:
     print(cl.w("Совсем ничё не происходит."))
     return
   newenemy = self.generateEnemy()
   aggressive_types = [Type.POTSAN, Type.OTMOROZOK, Type.GOPNIK, Type.VOR]
   aggressive = random.choice([True, False]) and (newenemy.person_type in aggressive_types)
   if newenemy.person_type in [Type.POTSAN, Type.OTMOROZOK, Type.GOPNIK, Type.VOR, Type.DOHLAK, Type.NEFOR, Type.NARK]:
     aggressive_str = ""
     if aggressive:
       aggressive_str = ", ищущий кого отпинать"
     print(cl.y("Идёт {0} {1} уровня{2}. Хочешь наехать?").format(str(newenemy.person_type), str(newenemy.level), aggressive_str))
     reply = input()
     if reply == "y":
       variants = [0, 1]
       v = random.choice(variants)
       if v == 0:
         print(cl.w("Слышь Вась.."))
         print(cl.r("А чё ваще?"))
       else:
         print(cl.r("Пацан ты из какого района?"))
         print(cl.w("А ты по пинкам суди!"))
       self.enemy = newenemy
       self.state = GameLoop.STATE_BATTLE_START
       return
     elif aggressive:
       found_threshold = 50
       val = random.uniform(0, 100)
       if val > found_threshold:
         print(cl.r("Он тебя заметил."))
         print(cl.r("Эй мудак?!"))
         self.enemy = newenemy
         self.state = GameLoop.STATE_BATTLE_START
       else:
         print(cl.g("Ты смылся."))
   elif newenemy.person_type == Type.MENT:
     print(cl.y("Идёт ментяра {0} уровня гроза гопов.".format(str(newenemy.level))))
     if self.person.sun_glass:
       print(cl.g("Ты напялил тёмные очки и мент не узнал твою рожу, которая висит на почётном стенде \"Разыскиваются за гопничество\""))
       return
     found_threshold = 50
     val = random.uniform(0, 100)
     if val > found_threshold:
       print(cl.r("Запалил!"))
       print(cl.r("Блин! это же ") + self.person.name + cl.r(" - известный {0}".format(str(self.person.person_type))))
       self.enemy = newenemy
       self.state = GameLoop.STATE_BATTLE_START
     else:
       print(cl.g("Ты затаился, прикинулся не гопом... Мент вроде не заметил"))
   elif newenemy.person_type == Type.MANIAC:
     print(cl.y("Идёт Маньячок {0}, ищущий кого отпинать.".format(str(newenemy.level))))
     found_threshold = 50
     val = random.uniform(0, 100)
     if val > found_threshold:
       print(cl.r("Он тебя заметил."))
       print(cl.r("Я МАНЬЯК!!!"))
       print(cl.w("Рад познакомиться - " + str(self.person.person_type)))
       self.enemy = newenemy
       self.state = GameLoop.STATE_BATTLE_START
     else:
       print(cl.g("Ты смылся."))
コード例 #19
0
 def rename(self):
   print(cl.g("Звали тебя: " + self.person.name))
   name = input(cl.g("А теперь будут: ") + cl.w(""))
   if name != "":
     self.person.name = cl.w(name)