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. Java基础学习笔记二十五 MySQL

    MySQL 在dos中操作mysql 连接mysql命令: mysql -uroot -p密码 ,连接OK,会出现mysql> 对数据库的操作 创建一个库 create database 库名 ...

  2. 第五次作业-需求&原型改进

    需求&原型改进 0. 团队介绍 团队名称:121ComeOn 项目名称:个人博客项目 团队组成: PM:黄金筱(107) 成员:王枫(031),刘烨(255),周明浩(277) github地 ...

  3. 201621123050 《Java程序设计》第2周学习总结

    1.本周学习总结 java的数据类型 基本数据类型:介绍了java特有的boolean 引用数据类型 String:不变性:需要频繁修改时使用StringBuilder 包装类:自动拆.装箱 数组 一 ...

  4. iOS开发-FFmpeg深入分析

    FFmpeg是相当强大的多媒体编解码框架,在深入分析其源代码之前必须要有基本的多媒体基础知识,否则其源代码会非常晦涩难懂.本文将从介绍一些基本的多媒体只是,主要是为研读ffmpeg源代码做准备,比如一 ...

  5. Django 个性化管理员站点

    from django.contrib import admin # Register your models here. from .models import Moment class Momen ...

  6. iOS开发之Objective-C与JavaScript的交互

    UIWebView是iOS最常用的SDK之一,它有一个stringByEvaluatingJavaScriptFromString方法可以将javascript嵌入页面中,通过这个方法我们可以在iOS ...

  7. 浏览器关闭后,Session会话结束了么?

    今天想和大家分享一个关于Session的话题: 当浏览器关闭时,Session就被销毁了? 我们知道Session是JSP的九大内置对象(也叫隐含对象)中的一个,它的作用是可以保 存当前用户的状态信息 ...

  8. Scala 快速入门

     Scalable 编程语言 纯正的的面向对象语言 函数式编程语言 无缝的java互操作 scala之父 Martin Odersky 1. 函数式编程 函数式编程(functional progr ...

  9. Document Object Model

    什么是DOM W3C制定的书写HTML分析器的标准接口规范 全称 Document Object Model 文档对象模型DOM为HTML文档提供的一个API(接口) 可以操作HTML文档 <! ...

  10. signalR 消息推送

    业务情景一:上传报表,上传excel.如果excel的数据量很大,上万条,上十万条数据,那么这个上传请求必然是个耗时请求.用户上传之后,很关心上传的进度和结果. 业务情景二:站内消息提醒,实时有效地接 ...