Python---老王开枪
class Person(object):
"""人类"""
def __init__(self,name):
super(Person,self).__init__()
self.name = name
self.gun = None #用来保存枪的引用
self.hp = 100 def __str__(self):
if self.gun:
return "%s的血量:%d,他有枪%s"%(self.name,self.hp,self.gun)
else:
if self.hp>0:
return "%s的血量:%d,他没有枪" % (self.name, self.hp)
else:
return "%s 已挂!!!"%(self.name) def kou_ban_ji(self,diren):
"""让枪发射子弹去打敌人"""
self.gun.fire(diren) def diao_xue(self, sha_shang_li):
"""根据相应的杀伤力掉血"""
self.hp -=sha_shang_li def anzhuang_zidan(self,dan_jia_temp,zi_dan_temp):
"""把子弹装到弹夹中"""
dan_jia_temp.baocun_zidan(zi_dan_temp) def anzhuang_danjia(self,gun_temp,dan_jia_temp):
"""把弹夹安装到枪中"""
gun_temp.baocun_danjia(dan_jia_temp) def naqiang(self,gun_temp):
"""拿起枪的动作 """
self.gun =gun_temp class Gun(object):
"""枪类"""
def __init__(self,name):
super(Gun,self).__init__()
self.name = name #用来记录枪的类型
self.danjia = None
def baocun_danjia(self,dan_jia_temp):
self.danjia =dan_jia_temp def __str__(self):
return "枪的信息:%s"%(self.name) def fire(self,diren):
"""枪从弹夹中获取子弹"""
zidan_temp = self.danjia.tanchu_zidan()
if zidan_temp:
zidan_temp.dazhong(diren)
else:
print("弹夹中没子弹了") class Danjia(object):
"""弹夹"""
def __init__(self,max_num):
super(Danjia,self).__init__()
self.max_num = max_num #用来记录弹夹的最大容量
self.zidan_list = []#用来记录所有的子弹的引用 def baocun_zidan(self,zi_dan_temp):
"""将子弹保存"""
self.zidan_list.append(zi_dan_temp) def __str__(self,):
return "弹夹的信息为:%d/%d"%(len(self.zidan_list),self.max_num) def tanchu_zidan(self):
if self.zidan_list:
return self.zidan_list.pop()
else:
return None class Zidan(object):
"""子弹"""
def __init__(self,sha_shang_li):
super(Zidan,self).__init__()
self.sha_shang_li = sha_shang_li #用来记录子弹的威力 def dazhong(self,diren):
""""""
diren.diao_xue(self.sha_shang_li) def main():
"""用来控制整个程序的流程"""
# 1.创建老王对象
laowang = Person("老王")
# 2.创建枪对象
ak47 = Gun("Ak47")
# 3.创建弹夹对象
dan_jan = Danjia(20)
# 4.创建一些子弹
for i in range(15):
zi_dan = Zidan(10)
# 5.老王把子弹安装到弹夹中
laowang.anzhuang_zidan(dan_jan, zi_dan) # 6.老王把弹夹安装到枪中
laowang.anzhuang_danjia(ak47,dan_jan) #测试
print(dan_jan)
print(ak47) # 7.老王拿枪
laowang.naqiang(ak47)
print(laowang)
# 8.创建一个敌人
geibi_laosong = Person("李刚")
print(geibi_laosong)
# 9.老王开枪打敌人
laowang.kou_ban_ji(geibi_laosong)
print(geibi_laosong)
print(laowang) laowang.kou_ban_ji(geibi_laosong)
print(geibi_laosong)
print(laowang) if __name__=='__main__':
main() 运行结果:
Python---老王开枪的更多相关文章
- day_5.12 py 老王开枪demo
ps:2018-7-24 21:00:04 其实这部分主要是面向对象的复习!而不是面向过程 #!/usr/bin/env/python #-*-coding:utf-8-*- ''' 2018-5-1 ...
- day 6 老王开枪打人
1.图示 2 程序 1)版本1:框架的搭建 def main(): '''用来控制这个程序的流程''' pass #1.创建alex对象 #2.创建1个枪对象 #3.创建1个弹夹对象 #4.创建子弹对 ...
- python 案例之老王开枪
- Python老王视频习题答案
基础篇2:一切变量都是数据对象的引用sys.getrefcount('test') 查看引用计数变量命名不能以数字开头编码:ascii.unicode.utf-81.阅读str对象的help文档,并解 ...
- 老王Python培训视频教程(价值500元)【基础进阶项目篇 – 完整版】
老王Python培训视频教程(价值500元)[基础进阶项目篇 – 完整版] 教学大纲python基础篇1-25课时1.虚拟机安装ubuntu开发环境,第一个程序:hello python! (配置开发 ...
- python开发之路:python数据类型(老王版)
python开发之路:python数据类型 你辞职当了某类似微博的社交网站的底层python开发主管,官还算高. 一次老板让你编写一个登陆的程序.咔嚓,编出来了.执行一看,我的妈,报错? 这次你又让媳 ...
- python之路:变量与变量基本操作(老王版)
python开发之路:变量与变量基本操作 你是一个师范大学的优秀毕业生,现在在某某小学工作. 你想:判作业真的很累,隔壁老王现在天天玩<蓝月传奇>,银行里存满了钱.唉,每节课1个小时,每个 ...
- 跟着老王学Python
亲爱的朋友: 欢迎你!很高兴能在这里见到你,你能来到这里说明你真的很喜欢python,很想把python给学好!我觉的你很幸运,开始我学python的时候比较少资料,学起来也比较头疼,现在随着 ...
- 在昨天夜黑风高的晚上,我偷了隔壁老王的Python入门课件,由浅入深堪称完美!
隔壁老王是一个资深码农,就业教育事业的秃顶之才昨天我下楼打酱油,看他迎面走来,满目春光我好奇的问道:老王,有什么好事,隔壁小花叫你上门了吗?老王:秘密!!我心想:哎呦~不错啊半晚之时,连猫狗都睡着了, ...
随机推荐
- IDEA2017注册码
1. 到网站 http://idea.lanyus.com/ 获取注册码. 2.填入下面的license server: http://intellij.mandroid.cn/ http://ide ...
- %f使用时的注意事项
1不是所有定义都用int,使用浮点函数需要把int改成float才能正常工作 2保留一位小数时要打入%0.1f,保留两位小数时要打入%0.2f,而不是%0.01f
- 201621123040《Java程序设计》第十四周学习总结
1.本周学习总结 1.1以你喜欢的方式(思维导图或其他)归纳总结与数据库相关内容. 显示所有数据库: show databases; 创建数据库: create database test; 删除数据 ...
- Django 模型层
基本操作 1.meta类属性汇总 属性名 用法 举例代码 abstract 如果设置abstract=True则这个模式是一个抽象基类 db_table 定义model在数据库中的表名称,如果不定 ...
- CDH:5.14.0 中 Hive BUG记录
CDH5.14.0使用的HIVE版本: 自建表log: +----------------------------------------------------+--+ | createtab_st ...
- PHP环境手动搭建wamp-----Apache+MySQL+PHP
首先下载分别下载Apache+MySQL+PHP. 然后分别解压到文件夹中. 1.安装Apache 1)检查80端口是否占用 说明:apache软件占用80软件,在计算机中一个端口只能被一个软件占用 ...
- Python之旅.第四章.模块与包.总结(未完待遇)
一.模块 模块: 一系列功能的集合体,在python中一个py文件就是一个模块,模块名就是py文件的文件名: 模块的好处: 1.减少重复的代码 2.拿来主义 定义模块: 就是创建一个py文件: 使用模 ...
- SQL Server元数据损坏(metadata corruption)修复
在升级一个SQL Server 2000的数据库时,遇到了一致性错误,其中有几个错误是元数据损坏(metadata corruption),特意研究了一下这个案例,因为以前也零零散散的遇到过一些一致性 ...
- Struts2 配置文件小结
每次写的博文都被管理员都被移出首页,好气!还希望有哪位大神可以指点迷津-- struts2 配置文件的 result 节点 result 节点是 action 节点的子节点,他代表着 action 方 ...
- Spring Security 入门(1-7)Spring Security - Session管理
参考链接:https://xueliang.org/article/detail/20170302232815082 session 管理 Spring Security 通过 http 元素下的子元 ...