Python设计.docx
《Python设计.docx》由会员分享,可在线阅读,更多相关《Python设计.docx(12页珍藏版)》请在冰豆网上搜索。
Python设计
学号L81514034专业网络工程姓名黄武伟
实验日期12.11教师签字成绩
实验报告
【实验名称】Python第三次实验
【实验要求】
1设计一个父类,表示游戏角色:
派生出多个子类用于表示不同职业的角色。
为每个类设置必要的属性和方法,并实例化对象进行测试。
2(不使用数据库)设计一个密码记录及查询小软件,模拟记录自己在各个网站上使用的账号及密码。
要求自行设计存储方式,并实现浏览、查询、增加、删除、修改等基本功能,可自行拓展其他功能
【实验内容】
1.此次的模拟小游戏中有三种不同的角色定位,射手、战士和辅助,每种定位都有自己的角色特点,射手在攻击时会用random.randint()函数产生一定量的暴击伤害,战士在血量低于35时会额外产生一定量的真实伤害,辅助会在战斗前选择使用回血技能,初始血量都为100,战斗时护甲可以减去一定百分比的伤害,血量为0时角色死亡
源代码如下:
importrandom
classGame(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=blood
defsetName(self,name):
self.name=name
defsetDefe(self,defe):
self.defe=defe
defsetAtk(self,atk):
self.atk=atk
classType1(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=0
returnrole
defgetblood(self):
returnself.blood
defgetdefe(self):
returnself.defe
defbackblood(self,m):
self.blood=m
defcheck(self):
if(self.blood==0):
print(self.name,"死亡,游戏结束!
")
i=0
returni
defshow(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=0
returnrole
defgetblood(self):
returnself.blood
defgetdefe(self):
returnself.defe
defbackblood(self,m):
self.blood=m
defBD(self,role):
if(self.blood<35):
role=role-10
print("触发被动怒火,对敌方造成额外10点真实伤害!
")
if(role<=0):
role=0
returnrole
defcheck(self):
if(self.blood==0):
print(self.name,"死亡,游戏结束!
")
i=0
returni
defshow(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=0
returnrole
defgetblood(self):
returnself.blood
defgetdefe(self):
returnself.blood
defbackblood(self,m):
self.blood=m
defREC(self):
if(self.blood==100):
print("血量已满,回血失败!
")
return0
self.blood=self.blood+random.randint(0,40)
if(self.blood>=100):
self.blood=100
print("回血成功!
")
defcheck(self):
if(self.blood==0):
print(self.name,"死亡,游戏结束!
")
i=0
returni
defshow(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'):
role2=Type3(name=str2)
role2.show()
print("角色2创建成功!
\n")
print("游戏开始!
")
i=1
print("双方开始攻击,发动攻击技能!
")
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):
break
print(str2,"开始攻击!
")
y1=role1.getblood()
y2=role1.getdefe()
y1=role2.Attack(y1,y2)
role1.backblood(y1)
print("敌方还剩血量",y1)
i=role1.check()
if(i==0):
break
截图如下:
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()
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=1
print(line)
print("密码查找成功!
")
if(m==0):
print("你要查询的账号不存在,查询失败!
")
if(x=='2'):
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\Desktop\zhang.txt','a+')
f1.write(str)
print("账号存储成功")
f1.close()
if(x1=='3'):
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=='4'):
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(x=='3'):
f1=open('C:
\\Users\HWW\Desktop\zhang.txt','r')
forlineinf1:
print(line,end='')
f1.close()
if(x=='4'):
print("请输入你要删除的账号")
cut=input()
f1=open('C:
\\Users\HWW\Desktop\zhang.txt','r')
b=[]
forlineinf1.readlines()[2:
len(f1.readlines())-1]:
a=line.split(':
',1)
a1=a[1].split('',1)
if(cut!
=a1[0]):
b.append(line)
f1.close()
f1=open('C:
\\Users\HWW\Desktop\zhang.txt','w')
forliinrange(0,len(b)):
f1.write(b[li])
f1.close()
if(x=='5'):
f1.close()
print("退出系统,欢迎下次使用!
")
截图如下:
【小结或讨论】
通过本次python实验课的学习我对于python中关于面向对象编程的知识点有了进一步的认识和了解,和其他面向对象编程语言风格上,python有着自己的特点,比如说类方法中会有一个默认的self参数,另外通过完成本次实验的任务后,对于python语言的使用又有了进一步的掌握