Example #1
0
    def event_3(self, current_player, *arg):
        while True:
            clear_screen()
            input("你看见一个死灵法师正在练习黑魔法...")
            input("他看起来没有什么防备...")
            print("\n你会怎么做?")
            choice = input("1. 展开偷袭\n2. 正面进攻\n\n请选择一个选项并按回车确认:   ")
            if choice == '1':
                if self.check_int(current_player, necromancer):
                    input("死灵法师早就觉察到你的到来并设下陷阱,然而你也早就看穿了这一点。")
                    input("你假装被陷阱所困,待死灵法师松懈之时,将他杀死。")
                    input("你只受了一点擦伤。")
                    self.calc_dmg(current_player, 10, 20)
                    break
                else:
                    input("死灵法师早就觉察到你的到来并设下陷阱。一场恶战之后,你勉强战胜了他,但...")
                    self.calc_dmg(current_player, 17, 30)
                    break

            elif choice == '2':
                if self.check_hp(current_player, necromancer):
                    input("你从正面进攻死灵法师。但它忽然召唤出一群僵尸。")
                    input("费了一番力气,你战胜了死灵法师和他的爪牙,但...")
                    self.calc_dmg(current_player, 10, 18)
                    break
                else:
                    input("你从正面进攻死灵法师。但它忽然召唤出一群僵尸。")
                    input("你寡不敌众,被打得落荒而逃。")
                    self.calc_dmg(current_player, 20, 40)
                    break

            else:
                input("请输入一个有效的数字!")
                continue
Example #2
0
    def event_5(self, current_player, *arg):
        while True:
            clear_screen()
            input("你进入了一个布满火炬的房间,地上躺满了僵尸...")
            input("你身后的铁门忽然关闭,你只有前方一个出口了...")
            print("\n你会怎么做?")
            choice = input(
                "1. 用火烧掉这群僵尸的尸体\n2. 用暴力毁坏僵尸们的尸体\n3. 踩着僵尸的尸体过去\n\n请选择一个选项并按回车确认:   "
            )
            if choice == '1':
                if self.check_dex(current_player, zombie):
                    input("在点燃尸体的过程中,一只未死的僵尸抓住了你的脚。")
                    input("你的反应极快,躲过了僵尸的攻击并杀了了它。不过受了一些擦伤。")
                    input("你烧掉了房间里所有的僵尸。")
                    self.calc_dmg(current_player, 12, 15)
                    break
                else:
                    input("在点燃尸体的过程中,一只未死的僵尸抓住了你的脚。")
                    input("你杀死了僵尸,但是还是被咬了一口。")
                    self.calc_dmg(current_player, 15, 30)
                    break

            elif choice == '2':
                input("你的攻击惊动了其他房间的僵尸,它们向你袭来!")
                if self.check_hp(current_player, zombie):
                    input("你的体力充足,杀死了所有的僵尸,但...")
                    self.calc_dmg(current_player, 10, 15)
                    break
                else:
                    input("你奋勇战斗,但是体力不支,被僵尸打得落荒而逃。")
                    self.calc_dmg(current_player, 25, 40)
                    break

            elif choice == '3':
                input("你踩着僵尸的尸体走向房间的出口...")
                input("一只僵尸突然跃起将你按到在地。")
                if self.check_str(current_player, zombie):
                    input("你的力气很大,在僵尸咬到你之前挣脱了它, 但受了一些擦伤。")
                    input("你杀死了这只僵尸并走到了出口。")
                    self.calc_dmg(current_player, 15, 20)
                    break
                else:
                    input("你无法挣脱僵尸,被它咬了几口。")
                    input("你杀死了这只僵尸并走到了出口。")
                    self.calc_dmg(current_player, 25, 35)
                    break
            else:
                input("请输入一个有效的数字!")
                continue
Example #3
0
    def event_1(self, current_player, *arg):
        while True:
            clear_screen()
            input("一只无脑的僵尸出现在你面前...")
            input("僵尸: '人类...脑子...'")
            print("\n你会怎么做?")
            choice = input(
                "1. 冲上去攻击它!\n2. 从它身旁绕过去\n3. 问: 1+1等于几?\n\n请选择一个选项并按回车确认:   ")
            if choice == '1':
                if self.check_str(current_player, zombie) and self.check_hp(
                        current_player, zombie):
                    input("你打败了僵尸!只受了一些擦伤。")
                    self.calc_dmg(current_player, 10, 15)
                    break
                else:
                    input("你不敌僵尸的攻势,被他击倒在地后,慌忙逃窜.")
                    self.calc_dmg(current_player, 20, 30)
                    break

            elif choice == '2':
                if self.check_dex(current_player, zombie):
                    input("你试图从僵尸身边饶过去,但僵尸的反应比你想象得快!")
                    input("还好你身手敏捷,只受了些擦伤。")
                    self.calc_dmg(current_player, 8, 12)
                    break
                else:
                    input("僵尸比你想象中来得灵活,你被扑倒在地。")
                    input("在被咬了一口之后,你挣脱了出来,落荒而逃。")
                    self.calc_dmg(current_player, 15, 35)
                    break

            elif choice == '3':
                if self.check_int(current_player, zombie) and random.choice(
                    [True, True, False]):
                    input("僵尸: 啊啊,等于几...1+1等于几...啊啊啊啊啊!")
                    input("僵尸的脑浆耗尽,倒在地上一动也不动了。")
                    break
                else:
                    input("僵尸: 当然是等于2!我讨厌别人把我当傻瓜!")
                    input("你被僵尸的攻击擦过,慌忙逃了出去。")
                    self.calc_dmg(current_player, 10, 20)
                    break
            else:
                input("请输入一个有效的数字!")
                continue
Example #4
0
    def event_2(self, current_player, *arg):
        while True:
            clear_screen()
            input("一个面目猥琐的胖子出现在你的面前...")
            input("胖子: 什么人!来这里干什么!")
            print("\n你会怎么做?")
            choice = input(
                "1. 撒腿就逃\n2. 假装是新来的同伴\n3. 抄家伙开始攻击\n\n请选择一个选项并按回车确认:   ")
            if choice == '1':
                if self.check_hp(current_player, fatty):
                    input("胖子穷追不舍,但你体力充足,成功甩开了他!但...")
                    self.calc_dmg(current_player, 10, 15)
                    break
                else:
                    input("胖子意外的灵活,你摆脱不了他。一场恶战之后,你勉强战胜了他,但...")
                    self.calc_dmg(current_player, 20, 30)
                    break

            elif choice == '2':
                if self.check_int(current_player, fatty) and random.choice(
                    [True, True, False]):
                    input("胖子: 原来是新来的那谁谁。。进去吧,老大在里边呢。")
                    break
                else:
                    input("胖子: 我不信,你肯定是冒牌的!")
                    input("你与胖子展开了一场恶战,你战胜了他,但...")
                    self.calc_dmg(current_player, 20, 30)
                    break

            elif choice == '3':
                if self.check_dex(current_player, fatty):
                    input("你与胖子展开了一场战斗。你没想到胖子竟然如此灵活,但你更胜一筹。")
                    input("你战胜了胖子。但受了一些擦伤。")
                    self.calc_dmg(current_player, 10, 13)
                    break
                else:
                    input("你没想到这个胖子竟然如此灵活,一场恶战之后,你战胜了胖子,但...")
                    self.calc_dmg(current_player, 15, 25)
                    break
            else:
                input("请输入一个有效的数字!")
                continue
Example #5
0
    def event_4(self, current_player, current_map, *arg):

        while True:
            clear_screen()
            input("你进入了一个被遗弃的刑房。房间中央有个被血迹侵蚀的铁处女。")
            input("其中好像有什么东西在发光...")
            print("\n你会怎么做?")
            choice = input("1. 打开铁处女\n2. 离开\n\n请选择一个选项并按回车确认:   ")
            if choice == '1':
                if random.choice([True, True, False]) == True:
                    if self.existing_events:
                        clear_screen()
                        input("你打开铁处女,里面是一张地图,上面标记了一个钥匙的位置。")
                        input("钥匙的位置是: {}".format(
                            random.choice(self.existing_events)))
                        input("你刚看完,地图便自己化为了灰烬。")
                        input("看来你需要自己记下这个房间的位置。")
                        break
                    else:
                        clear_screen()
                        input("铁处女里面除了血迹和腐烂的尸体,什么都没有了...")
                        break
                else:
                    clear_screen()
                    input("你打开铁处女,迎面扑来一股腐臭的气息。这是一个陷阱。")
                    self.calc_dmg(current_player, 10, 20)
                    break

            elif choice == '2':
                if current_player.key != 3:
                    input("你觉得这是一个陷阱,所以你对铁处女弃之不顾。")
                    input("但你总感觉里面有什么重要的东西...也许关系到你的逃生之路也说不定...")
                else:
                    input("你已经拥有了所有的钥匙,所以你选择离开这个不详的房间。")
                break

            else:
                input("请输入一个有效的数字!")
                continue
Example #6
0
def game_loop():
    clear_screen()
    input("欢迎来到地下城!")
    while True:
        clear_screen()
        player_name = input("请输入你的名字:  ")
        if player_name == '':
            input("**请输入一个有效的名称**")
            continue
        elif len(player_name) > 10:
            input("**名称过长,请重新输入**")
            continue
        else:
            break

    while True:
        clear_screen()
        print("\n1. 圣堂骑士(力量)\n2. 神秘学者(智力)\n3. 盗贼头领(敏捷)")
        player_job = input("\n请选择你的职业(输入数字并按回车确认):  ")

        if player_job == "1":
            current_player = Player(player_name, warrior_stats)
            break
        elif player_job == "2":
            current_player = Player(player_name, mage_stats)
            break
        elif player_job == "3":
            current_player = Player(player_name, thief_stats)
            break
        else:
            input("**请输入数字并按回车来选择你的职业。**")
            continue
    input("\n你好,{},你的职业是{},让我们开始冒险吧!".format(player_name,
                                             current_player.job_name))
    playing = True
    current_map = Map()
    current_events = Events(current_map)

    #游戏正式开始
    while playing:
        clear_screen()
        current_map.draw_map()
        valid_moves = current_map.get_moves()
        print("\n** 逃出这个地牢吧!**")
        print("\n冒险者: {}. 职业: {}\n".format(current_player.name,
                                           current_player.job_name))
        print("*" * 30)
        print("  HP: {}/{}  恢复剂: {}  钥匙: {}".format(current_player.hp,
                                                    current_player.max_hp,
                                                    current_player.potion,
                                                    current_player.key))
        print("*" * 30)
        print("\n当前房间: {}".format(current_map.player_location))
        print("可移动方向: {}".format(','.join(valid_moves)))
        print("\n输入 'QUIT' 退出游戏")
        print("输入 'HEAL' 会消耗1个恢复剂并回复HP")
        print("输入 'UP' 'DOWN' 'LEFT' 'RIGHT' 来进行移动, 可小写")

        move = input(">>>  ")
        move = move.upper()

        if move == 'QUIT':
            print("\n ** 再见! ** \n")
            break
        elif move == 'HEAL':
            heal = random.randint(20, 35)
            if current_player.potion <= 0:
                input("**恢复剂不足!**")
            elif current_player.hp == current_player.max_hp:
                input("**你不需要治疗!**")
            elif current_player.hp < current_player.max_hp:
                post_heal_hp = current_player.hp + heal
                current_player.potion -= 1
                if post_heal_hp > current_player.max_hp:
                    current_player.hp = current_player.max_hp
                    input("你恢复了{}点HP!".format(heal - (post_heal_hp -
                                                      current_player.max_hp)))
                else:
                    current_player.hp = post_heal_hp
                    input("你恢复了{}点HP!".format(heal))
        elif move in valid_moves:
            current_map.player_location = current_map.move_player(move)
            if current_map.player_location == current_map.door:
                clear_screen()
                input("\n你找到了地下城的出口,厚重的石门上有三个钥匙孔。")
                if current_player.key == 3:
                    input("你使用三把钥匙解开了石门的锁。")
                    input("你推开石门,走出了这个阴暗的地牢。")
                    input("恭喜通关!O(∩_∩)O")
                    playing = False
                else:
                    input("你使劲推门,但它纹丝不动,看来你需要凑齐三把钥匙才行。")

            elif current_map.player_location == current_map.key_1:
                clear_screen()
                input("\n你找到了一把钥匙!")
                current_player.key += 1
                current_events.existing_events.remove(current_map.key_1)
                current_map.key_1 = ''
            elif current_map.player_location == current_map.key_2:
                clear_screen()
                input("\n你找到了一把钥匙!")
                current_player.key += 1
                current_events.existing_events.remove(current_map.key_2)
                current_map.key_2 = ''
            elif current_map.player_location == current_map.key_3:
                clear_screen()
                input("\n你找到了一把钥匙!")
                current_player.key += 1
                current_events.existing_events.remove(current_map.key_3)
                current_map.key_3 = ''

            # 触发随机事件
            elif random.choice([True, False]) != False:
                random.choice(current_events.event_list)(current_player,
                                                         current_map)

            if current_player.hp <= 0:
                input("你死了。")
                playing = False
        else:
            input("\n **无效的指令!**\n")

    else:
        while True:
            clear_screen()
            if input("再玩一次? [Y/n]  ").lower() != "n":
                game_loop()
            else:
                sys.exit()