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("很遗憾!你没有完成任务!")