1安徽大学计算机实验教学中心学号L81514034专业网络工程姓名黄武伟实验日期12.11教师签字成绩实验报告【实验名称】Python第三次实验【实验要求】1设计一个父类,表示游戏角色:派生出多个子类用于表示不同职业的角色。为每个类设置必要的属性和方法,并实例化对象进行测试。2(不使用数据库)设计一个密码记录及查询小软件,模拟记录自己在各个网站上使用的账号及密码。要求自行设计存储方式,并实现浏览、查询、增加、删除、修改等基本功能,可自行拓展其他功能2安徽大学计算机实验教学中心【实验内容】1.此次的模拟小游戏中有三种不同的角色定位,射手、战士和辅助,每种定位都有自己的角色特点,射手在攻击时会用random.randint()函数产生一定量的暴击伤害,战士在血量低于35时会额外产生一定量的真实伤害,辅助会在战斗前选择使用回血技能,初始血量都为100,战斗时护甲可以减去一定百分比的伤害,血量为0时角色死亡源代码如下:importrandomclassGame(object):def__init__(self,name='',blood=100,defe=0,atk=0):self.setName(name)self.setDefe(defe)self.setAtk(atk)self.setblood(blood)defsetblood(self,blood):self.blood=blooddefsetName(self,name):self.name=namedefsetDefe(self,defe):self.defe=defedefsetAtk(self,atk):self.atk=atkclassType1(Game):def__init__(self,name='',blood=100,defe=10,atk=30):Game.__init__(self,name,blood,defe,atk)defAttack(self,role,defe):k=random.randint(10,30)role=role-self.atk-k+(self.atk+k)*(defe/100)print(攻击成功,并产生额外,k,点暴击伤害!(非真实伤害))if(role=0):role=0returnrole3安徽大学计算机实验教学中心defgetblood(self):returnself.blooddefgetdefe(self):returnself.defedefbackblood(self,m):self.blood=mdefcheck(self):if(self.blood==0):print(self.name,死亡,游戏结束!)i=0returnidefshow(self):print(英雄介绍:)print(昵称:,self.name)print(定位:射手)print(攻击力:,self.atk)print(防御:,self.defe)print(特点:攻击时会产生一定的暴击!)classType2(Game):def__init__(self,name='',blood=100,defe=30,atk=20):Game.__init__(self,name,blood,defe,atk)defAttack(self,role,defe):role=role-self.atk+self.atk*(defe/100)print(攻击成功)if(role=0):role=0returnroledefgetblood(self):returnself.blooddefgetdefe(self):returnself.defedefbackblood(self,m):self.blood=mdefBD(self,role):if(self.blood35):4安徽大学计算机实验教学中心role=role-10print(触发被动怒火,对敌方造成额外10点真实伤害!)if(role=0):role=0returnroledefcheck(self):if(self.blood==0):print(self.name,死亡,游戏结束!)i=0returnidefshow(self):print(英雄介绍:)print(昵称:,self.name)print(定位:坦克)print(攻击力:,self.atk)print(防御:,self.defe)print(特点:当血量少于35时会触发被动怒火,对敌方造成额外10点的真实伤害,无视护甲!)classType3(Game):def__init__(self,name='',blood=100,defe=30,atk=20):Game.__init__(self,name,blood,defe,atk)defAttack(self,role,defe):role=role-self.atk+self.atk*(defe/100)print(攻击成功)if(role=0):role=0returnroledefgetblood(self):returnself.blooddefgetdefe(self):returnself.blooddefbackblood(self,m):self.blood=mdefREC(self):if(self.blood==100):print(血量已满,回血失败!)return05安徽大学计算机实验教学中心self.blood=self.blood+random.randint(0,40)if(self.blood=100):self.blood=100print(回血成功!)defcheck(self):if(self.blood==0):print(self.name,死亡,游戏结束!)i=0returnidefshow(self):print(英雄介绍:)print(昵称:,self.name)print(定位:辅助)print(攻击力:,self.atk)print(防御:,self.defe)print(特点:作战中受到伤害可选择触发恢复血量技能!)print(******请创建角色!******)print(请输入要创建角色的类型:(1、射手2、坦克3、辅助))x=input()print(请输入角色1的昵称)str1=input()if(x=='1'):role1=Type1(name=str1)role1.show()if(x=='2'):role1=Type2(name=str1)role1.show()if(x=='3'):role1=Type3(name=str1)role1.show()print(角色1创建成功!\n)print(请输入要创建角色的类型:(1、射手2、坦克3、辅助))x=input()print(请输入角色2的昵称)str2=input()if(x=='1'):role2=Type1(name=str2)role2.show()if(x=='2'):role2=Type2(name=str2)role2.show()if(x=='3'):6安徽大学计算机实验教学中心role2=Type3(name=str2)role2.show()print(角色2创建成功!\n)print(游戏开始!)i=1print(双方开始攻击,发动攻击技能!)while(1):print(str1,开始攻击!)x1=role2.getblood()x2=role2.getdefe()x1=role1.Attack(x1,x2)role2.backblood(x1)print(敌方还剩血量,x1)i=role2.check()if(i==0):breakprint(str2,开始攻击!)y1=role1.getblood()y2=role1.getdefe()y1=role2.Attack(y1,y2)role1.backblood(y1)print(敌方还剩血量,y1)i=role1.check()if(i==0):break截图如下:7安徽大学计算机实验教学中心8安徽大学计算机实验教学中心2本模拟账号管理系统有删除、加入、查看等一系列基本操作,另外在查询时可以选择按照账号类型进行查询,也可以选择利用给出的账号查询所对应的密码,加入新账号时也要为新加入的账号进行分类,这样给使用时带来了方便源代码如下:f1=open('C:\\Users\HWW\Desktop\zhang.txt')print(欢迎使用账号管理系统,请输入相应功能的编号)print(1、查询账号2、存储新账号3、查看所有账号4、删除账号5、退出系统)x=input()if(x=='1'):f1=open('C:\\Users\HWW\Desktop\zhang.txt','r')print(请选择查询方式)print(1、按账号类型查询2、按给出账号查询密码)y=input()if(y=='1'):print(1、社交2、购物3、理财4、游戏)y1=input()9安徽大学计算机实验教学中心if(y1=='1'):print(社交账号如下:)forlineinf1.readlines()[2:len(f1.readlines())-1]:a=line.split(')',1)if(a[0]==('(社交')):print(a[1])f1.close()if(y1=='2'):print(购物账号如下:)forlineinf1.readlines()[2:len(f1.readlines())-1]:a=line.split(')',1)if(a[0]==('(购物')):print(a[1])f1.close()if(y1=='3'):print(理财账号如下:)forlineinf1.readlines()[2:len(f1.readlines())-1]:a=line.split(')',1)if(a[0]==('(理财')):print(a[1])f1.close()if(y1=='4'):print(游戏账号如下:)forlineinf1.readlines()[2:len(f1.readlines())-1]:a=line.split(')',1)if(a[0]==('(游戏')):print(a[1])f1.close()if(y=='2'):f1=open('C:\\Users\HWW\Desktop\zhang.txt','r')print(请输入要相应的用户账号)y2=input()m=0;forlineinf1.readlines()[2:len(f1.readlines())-1]:a=line.split(':',1)a1=a[1].split('',1)if(y2==a1[0]):m=1print(line)print(密码查找成功!)if(m==0):print(你要查询的账号不存在,查询失败!)if(x=='2'):10安徽大学计算机实验教学中心print(请选择存储账号类型)print(1、社交2、购物3、理财4、游戏)x1=input()if(x1=='1'):print(请输入应用名称)k=input()print(请输入账号)k1=input()print(请输入密码)k2=input()str=(社交)+k+''+账号:+k1+''+密码:+k2+'\n'f1=open('C:\\Users\HWW\Desktop\zhang.txt','a+')f1.write(str)print(账号存储成功)f1.close()if(x1=='2'):print(请输入应用名称)k=input()print(请输入账号)k1=input()print(请输入密码)k2=input()str=(购物)+k+''+账号:+k1+''+密码:+k2+'\n'f1=open('C:\\Users\HWW\Deskt