1、需求分析:
①创建角色:名字、性别、血量、装备
战斗:装备-防弹衣、血量默认100、正常被攻击-10滴血 、有防弹衣-5滴血
②创建房间:角色可加入房间 ,房间的人可互打,房间上限2人。
2、代码实现
class Role(): def __init__(self,name,sex,blood=100,euqip=None): self.name = name self.sex = sex self.blood = blood self.euqip = euqip self.room = None def attack(self,other): if self.room == other.room: #在同一个房间里面 if self != other: #至少有两个角色 if self.blood > 0 and other.blood > 0: if other.equip: other.blood -= 5 #有防弹衣 else: other.blood -= 10 #正常被攻击 print(f"{self.name}攻击{other.name}") print(f"{self.name}的血量还剩:{self.blood}") print(f"{other.name}的血量还剩:{other.blood}") else: print("其中一方血量不足,不能攻击") return False else: print("至少要有两个角色才能进入战斗模式") else: print("攻击对象不在同一个房间") class Room(Role): def __init__(self,name): self.member = [] #房间成员为空列表 self.name = name def join(self, role): # 角色的类里定义room if not is role.room: if len(self.member) < 2: #房间里上限两个人,只能加入两个人 self.member.append(role) #增加角色 role.room = self.name #将定义初始房间里的角色 else: print("这个房间的人数已满") else: print("这个角色已经加入房间了") role_dict = {} #初始化实例存放在role_dict字典中 # 注:存放名字和对象的关系 room_dict = {} #初始化实例存放在room_dict字典中 while True: print("欢迎来到回合制对战游戏".center(30,"*")) print("你可以选择:1:创建角色 2:创建房间 3:加入房间 4:战斗 5:退出") option = input("请输入你的选择:") if option.isdigit(): option = int(option) if option == 1: name = input("请输入角色的姓名:") sex = input("请输入角色的性别:") role_dict[name] = Role(name, sex) #Role类实例化对象中的属性name,sex存入字典中,keys是角色,values是Role的整个实例化对象 role_blood = input("输入这个角色的血量:") if role_blood.isdigit(): role_dict[name].blood = role_blood #定义当前角色的血量 # print(role_dict[name].blood) print(f"角色创建成功,{name}当前血量为{role_dict[name].blood}") else: print(f"角色创建失败,{name}当前血量{role_dict[name].blood}") equip = input("请输入装备(F装备防弹衣):") if equip == "F": role_dict[name].euqip = 1 #=1表示为真 print(f"{name}配有防弹衣") else: print(f"{name}没有配备防弹衣,将正常被攻击") elif option == 2: name = input("请输入房间的名字:") room_dict[name] = Room(name) #Room类实例化对象中的属性name存入字典中,keys是房间名,values是整个房间对象 print(room_dict) elif option == 3: print(f"当前已有的角色是{role_dict.keys()},房间是{room_dict.keys()}") role_name = input("请输入要加入的角色:") room_name = input("请输入要加入的房间:") # 角色类中的属性加入到房间类中的属性 room_dict[room_name].join(role_dict[role_name])#从字典取出房间对象,调用join()方法将用户对象加入房间 elif option == 4: print(f"当前房间有{room_dict.keys()}") room_name = input("请输入要进行战斗房间的名称:") #从已经有的房间中进行选择 if len(room_dict[room_name].member) == 2: #调用字典中的成员对象 print(room_dict[room_name].member) #房间实例获取角色类中的对象, while True: room_dict[room_name].member[0].attack(room_dict[room_name].member[1])#从字典中取出房间实例对象中的member属性 room_dict[room_name].member[1].attack(room_dict[room_name].member[0]) # 双方可互打 else: print(f"房间{room_name}人数不足2人,对战失败!") continue elif option == 5: print("退出对战") break else: print("输入错误,请重新输入!")
3、运行结果
*********欢迎来到回合制对战游戏**********
你可以选择:1:创建角色 2:创建房间 3:加入房间 4:战斗 5:退出
请输入你的选择:1
请输入角色的姓名:hzw
请输入角色的性别:男
输入这个角色的血量:100
角色创建成功,hzw当前血量为100
请输入装备(F装备防弹衣):F
hzw配有防弹衣
*********欢迎来到回合制对战游戏**********
你可以选择:1:创建角色 2:创建房间 3:加入房间 4:战斗 5:退出
请输入你的选择:1
请输入角色的姓名:hhh
请输入角色的性别:男
输入这个角色的血量:150
角色创建成功,hhh当前血量为150
请输入装备(F装备防弹衣):
hhh没有配备防弹衣,将正常被攻击
*********欢迎来到回合制对战游戏**********
你可以选择:1:创建角色 2:创建房间 3:加入房间 4:战斗 5:退出
请输入你的选择:2
请输入房间的名字:ROOT
{'ROOT': <__main__.Room object at 0x0000018DF695AE80>}
*********欢迎来到回合制对战游戏**********
你可以选择:1:创建角色 2:创建房间 3:加入房间 4:战斗 5:退出
请输入你的选择:3
当前已有的角色是dict_keys(['hzw', 'hhh']),房间是dict_keys(['ROOT'])
请输入要加入的角色:hzw
请输入要加入的房间:ROOT
*********欢迎来到回合制对战游戏**********
你可以选择:1:创建角色 2:创建房间 3:加入房间 4:战斗 5:退出
请输入你的选择:3
当前已有的角色是dict_keys(['hzw', 'hhh']),房间是dict_keys(['ROOT'])
请输入要加入的角色:hhh
请输入要加入的房间:ROOT