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---老王开枪的更多相关文章

  1. day_5.12 py 老王开枪demo

    ps:2018-7-24 21:00:04 其实这部分主要是面向对象的复习!而不是面向过程 #!/usr/bin/env/python #-*-coding:utf-8-*- ''' 2018-5-1 ...

  2. day 6 老王开枪打人

    1.图示 2 程序 1)版本1:框架的搭建 def main(): '''用来控制这个程序的流程''' pass #1.创建alex对象 #2.创建1个枪对象 #3.创建1个弹夹对象 #4.创建子弹对 ...

  3. python 案例之老王开枪

  4. Python老王视频习题答案

    基础篇2:一切变量都是数据对象的引用sys.getrefcount('test') 查看引用计数变量命名不能以数字开头编码:ascii.unicode.utf-81.阅读str对象的help文档,并解 ...

  5. 老王Python培训视频教程(价值500元)【基础进阶项目篇 – 完整版】

    老王Python培训视频教程(价值500元)[基础进阶项目篇 – 完整版] 教学大纲python基础篇1-25课时1.虚拟机安装ubuntu开发环境,第一个程序:hello python! (配置开发 ...

  6. python开发之路:python数据类型(老王版)

    python开发之路:python数据类型 你辞职当了某类似微博的社交网站的底层python开发主管,官还算高. 一次老板让你编写一个登陆的程序.咔嚓,编出来了.执行一看,我的妈,报错? 这次你又让媳 ...

  7. python之路:变量与变量基本操作(老王版)

    python开发之路:变量与变量基本操作 你是一个师范大学的优秀毕业生,现在在某某小学工作. 你想:判作业真的很累,隔壁老王现在天天玩<蓝月传奇>,银行里存满了钱.唉,每节课1个小时,每个 ...

  8. 跟着老王学Python

    亲爱的朋友:     欢迎你!很高兴能在这里见到你,你能来到这里说明你真的很喜欢python,很想把python给学好!我觉的你很幸运,开始我学python的时候比较少资料,学起来也比较头疼,现在随着 ...

  9. 在昨天夜黑风高的晚上,我偷了隔壁老王的Python入门课件,由浅入深堪称完美!

    隔壁老王是一个资深码农,就业教育事业的秃顶之才昨天我下楼打酱油,看他迎面走来,满目春光我好奇的问道:老王,有什么好事,隔壁小花叫你上门了吗?老王:秘密!!我心想:哎呦~不错啊半晚之时,连猫狗都睡着了, ...

随机推荐

  1. eoLinker API-Shop 抓住区块链机遇,从这些API开始

    区块链是分布式存储.点对点传输.共识机制.加密算法等计算机技术的新型应用模式.所谓共识机制是区块链系统中实现不同节点之间建立信任.获取权益的数学算法. 区块链目前分为三类: 公有区块链(PublicB ...

  2. 通过cmd命令行连接mysql数据库

    找到 mysqld.exe所在的路径 使用cd切换到msyqld.exe路径下 输入mysql连接命令,格式如下 Mysql  -P 端口号  -h  mysql主机名\ip -u root (用户) ...

  3. Beta冲刺NO.7

    Beta冲刺 第七天 昨天的困难 昨天的困难在一些多表查询上,不熟悉hibernate的套路,走了很多弯路. 第一次使用图表插件,在图表的显示问题上花了一定的时间. 对于页面绑定和后台数据自动填充的理 ...

  4. Alpha冲刺Day1

    项目Alpha冲刺Day1 一.站立式会议 照片: 今日安排: 今天是项目开始的第一天,我们小组一起开会讨论了一下具体每天代码进度的落实情况,做了一下大体的规划.另外准备搭建一下环境和项目部署. 二. ...

  5. 团队作业4——第一次项目冲刺(Alpha版本)2017.11.14

    第一次会议:2017-11-14 额--这几天比较忙,忘记上传了,今天补上 先上个图,O(∩_∩)O哈哈: 会议主要内容: 1. 讨论整体框架 2. 个人具体分工 3. 代码统一 具体分工: 成员 计 ...

  6. jsp文件调用本地文件的方法(Tomcat server.xml 设置虚拟目录)

    JSP文件: <video id="my-video" class="video-js" controls preload="auto" ...

  7. Vue 爬坑之路(十一)—— 基于 Nuxt.js 实现服务端渲染(SSR)

    直接使用 Vue 构建前端单页面应用,页面源码时只有简单的几行 html,这并不利于网站的 SEO,这时候就需要服务端渲染 2016 年 10 月 25 日,zeit.co 背后的团队对外发布了一个 ...

  8. webpack你值得拥有-从四个核心配置谈起

    很久没有发文章了,但是强调一点,大-熊同学最近可没闲着.学习算法,复习计算机网络,也顺便学习了一下webpack,看了看操作系统(没办法,都没学,要是不学连实习笔试都过不了,伤心--).本来比较纠结是 ...

  9. python RE模块的使用

    摘要: re模块包括操作正则表达式的函数,一些工作中都需要用到,现在说明下使用方法. 使用说明: 一,re模块下的函数:            函数             描述 compile(pa ...

  10. Mego开发文档 - 基础查询

    基础查询 Mego 使用语言集成查询(LINQ)从数据库查询数据.LINQ允许您使用C#(或其他.NET语言)根据派生的上下文和实体类编写强类型查询.将LINQ查询的表示传递给数据库提供者,翻译为数据 ...