Python打怪小游戏

Python打怪小游戏

1、怪兽池中有若干种怪兽: monsters_pool = [‘火柴鼠’, ‘瞌睡熊’, ‘板牙狸’, ‘博学企鹅’, ‘绅士企鹅’, ‘漂浮龟’, ‘皮皮’, ‘贪玩虎’, ‘黑客’, ‘蹦蹦娃’, ‘呱噪鸦’, ‘弹簧蛇’, ‘喷火龙’] 2、从怪兽池monsters_pool中随机选择20只放生到野外monsters_list 可用random.choice 可重复 3、打猎目标池targets_list 可认为指定,如 targets_list = [ ‘皮皮’,‘板牙狸’,‘呱噪鸦’] 4、出发前背个空袋子出发,bag = [] ,假设袋子最多可装5个怪。 5、回来后验证下bag中是否完成目标targets_list,如果完成,任务完成,否则,没完成任务。 6、如何遇到怪?自己设定规则,如,移动步数(随机数产生)为3或5的倍数就表示遇到一个怪,然后看下该怪是否是自己的目标怪,然后判断自己的袋子bag是否满。。。。 7、遇到怪也不一定能抓获,看两者力量对比,即生命值大小,可自由设计规则,像之前讲过的人狗大战。。。

import random


class Monster:
    def __init__(self, n):
        self.n = n

    monsters_polo = ["火柴鼠", "皮皮", "贪玩虎", "博学企鹅",
                     "漂浮龟", "板牙狸", "喷火龙", "皮皮虾",
                     "弹簧蛇", "蹦蹦娃", "唐老鸭", "格林小人"]

    '''
        方法名:person_train
        功  能:挑选怪兽
        参  数: 无
        返回值:返回挑选好的怪兽 
    '''
    def monsters(self):
        monsters_hoos = []
        for i in range(self.n):
            n = random.randint(0, 11)
            monsters_hoos.append(Monster.monsters_polo[n])
        return monsters_hoos


class Person:
    def __init__(self, name, aggressivity):
        self.name = name
        self.__aggressivity = aggressivity

    '''
        方法名:__set_information
        功  能:公有方法查看猎人信息
        参  数: 无
        返回值:返回猎人的基本信息
    '''
    def get_information(self):
        information = {"姓名": self.name, "战力": self.__aggressivity, "生命力": 100}
        return information

    '''
        方法名:__set_information
        功  能:私有方法更新战斗力
        参  数: 新的战斗力(aggressivity)
        返回值:无
    '''
    def __set_information(self, aggressivity):
        self.__aggressivity = aggressivity

    '''
        方法名:person_train
        功  能:人进行训练
        参  数: 训练时长(time)
        返回值:无
    '''
    def person_train(self, time):
        information = person1.get_information()
        if information["战力"] < 80:
            information["战力"] = 10 * int(time) + information["战力"]
        elif information["战力"] > 80 and information["战力"] < 90:
            information["战力"] = 5 * int(time) + information["战力"]
        elif information["战力"] > 90:
            information["战力"] = 3 * int(time) + information["战力"]
        self.__set_information(information["战力"])


class Battlefield:
    def __init__(self, person, monster, targets, bag):
        self.person = person
        self.__monster = monster
        self.targets = targets
        self.__bag = bag
        self.__monster_vitality = 100
        self.__person_vitality = self.person["生命力"]

    '''
        方法名:get_monster_vitality
        功  能:公有方法查看怪兽的生命力。
        参  数: 无
        返回值:怪兽的生命力
    '''

    def get_monster_vitality(self):
        return self.__monster_vitality

    '''
        方法名:get_person_vitality
        功  能:公有方法查看猎人的生命力。
        参  数: 无
        返回值:猎人的生命力
    '''

    def get_person_vitality(self):
        return self.__person_vitality

    '''
        方法名:get_bag
        功  能:公有方法查看猎人的背包。
        参  数: 无
        返回值:猎人的背包
    '''

    def get_bag(self):
        return self.__bag

    '''
        方法名:get_monsters
        功  能:公有方法查看森林里面的所有怪物。
        参  数: 无
        返回值:所有怪物
    '''

    def get_monsters(self):
        return self.__monster

    '''
        方法名:__set_bag
        功  能:私有方法向猎人背包添加猎物。
        参  数: 猎物(n)
        返回值:无
    '''

    def __set_bag(self, n):
        self.__bag.append(n)

    '''
        方法名:__set_delete
        功  能:私有方法修改怪物池里面的怪物。
        参  数: 怪兽的标号(i)
        返回值:无
    '''

    def __set_delete(self, i):
        self.__monster.pop(i)

    '''
        方法名:play_strange
        功  能:人打怪兽
        参  数: 无
        返回值:无
    '''

    def play_strange(self):
        # 对怪兽进行打击
        blood_volume = self.__monster_vitality - self.person["战力"]
        # 更新怪兽的血量
        self.__monster_vitality = blood_volume

    '''
        方法名:monsters_hurt_person
        功  能:怪兽伤猎人
        参  数: 无
        返回值:无
    '''

    def monsters_hurt_person(self):
        # 怪兽进行伤猎人
        blood_volume = self.__person_vitality - 20
        # 对猎人的血量进行更新
        self.__person_vitality = blood_volume

    '''
        方法名:battlefield_combat
        功  能:怪兽与猎人活动的场地
        参  数: 无
        返回值:无
    '''

    def battlefield_combat(self):
        print("格林森林出现一批怪兽:{}".format(self.__monster))
        print("现在派遣{}去进行消灭!\n战斗力:{}\n生命力:{}\n背包:{}\n"
              "并收集{}"
              "".format(self.person["姓名"], self.person["战力"],
                        self.person["生命力"], self.__bag, self.targets))
        number = 19
        direction_list = ["前", "左", "右"]
        for i in range(1, 21):
            print("======================行走{}次=========================".format(i))
            print("猎人血量:{}".format(self.__person_vitality))
            # 随机出现一个怪兽
            monster_num = random.randint(0, number)
            # 随机产生猎人行走的步数
            move = random.randint(1, 100)
            # 随机产生移动方向
            direction = random.randint(0, 2)
            print("猎人进入森林!\n猎人向{}行走{}步\n遇到{}".format(direction_list[direction],
                                                     move, self.__monster[monster_num]))
            print("{}血量:{}".format(self.__monster[monster_num], self.__monster_vitality))
            while True:
                print("猎人打{}!".format(self.__monster[monster_num]))
                # 猎人打击怪兽
                battlefield1.play_strange()
                # 获取怪兽剩余血量
                monster_blood = battlefield1.get_monster_vitality()
                print("{}剩余血量:{}".format(self.__monster[monster_num], monster_blood))
                if monster_blood <= 0:
                    print("猎人打死{}".format(self.__monster[monster_num]))
                    # 判断当前打死的怪兽是否是需要的猎物
                    bag = battlefield1.get_bag()
                    if self.__monster[monster_num] in self.targets and len(bag) < 5:
                        self.__set_bag(self.__monster[monster_num])
                    # 更新森林里面的怪兽
                    self.__set_delete(monster_num)
                    number -= 1
                    self.__monster_vitality = 100
                    self.__person_vitality = 100
                    break
                print("{}伤人!".format(self.__monster[monster_num]))
                # 怪兽伤人
                battlefield1.monsters_hurt_person()
                # 获取猎人剩余血量
                person_blood = battlefield1.get_person_vitality()
                print("猎人剩余血量:{}".format(person_blood))
                if person_blood <= 0:
                    print("猎人死亡!任务失败!")
                    break
                print("---------------------------------------------")


# 实例化出一个猎人
person1 = Person("小明", 20)
# 猎人进行训练
person1.person_train(4)
# 获取猎人的信息
information = person1.get_information()
# 实例化一批怪兽
monster1 = Monster(20)
# 通过对象获取这批怪兽
monsters_list = monster1.monsters()
# 需要收集的猎物
targets_list = ["皮皮", "唐老鸭", "火柴鼠"]
# 实例化一个战场
battlefield1 = Battlefield(information, monsters_list, targets_list, bag=[])
# 通过战场对象进行战场战斗
battlefield1.battlefield_combat()
# 获取在打猎到的猎物
bag_list = battlefield1.get_bag()
# 判断是否获取到所需要的猎物
flag = True
for L in targets_list:
    if L not in bag_list:
        flag = False

print(targets_list)
print(bag_list)
if flag == True:
    print("恭喜你完成任务!")
else:
    print("很遗憾!你没有完成任务!")


    
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值