面向对象思想封装狙击手狙击敌人
需求:狙击手xxx使用xx枪,射击敌人xxx,敌人生命值归0,应声倒下
分析设计类:
- 封装狙击手类 属性: 名字 行为:捡枪 装弹 射击
- 封装枪类 属性: 型号 行为:射击
- 封装弹夹类 属性:弹夹容量 存储子弹的列表
- 封装子弹类 属性:伤害值 移动速度 行为:移动
- 封装敌人类 属性:名称 生命值
#狙击手类 class Sniper:def __init__(self,name):self.name = name# self.gun = None#捡枪def pickupGun(self):gun = Gun('AWM')#给对象添加一个gun的属性self.gun = gun#装弹def loading(self):#创建一个弹容量为10的弹夹clip = Clip(10)for i in range(clip.capacity):bullet = Bullet()#循环装子弹clip.bullet_list.append(bullet)#给你拥有的枪添加一个属性self.gun.clip = clip#射击敌人def shoot(self,enemy):print('{}瞄准{}进行射击'.format(self.name,enemy.name))self.gun.shoot(enemy) #枪类 class Gun:def __init__(self,type):self.type = type#枪的射击功能def shoot(self,enemy):while enemy.hp > 0:# 将子弹从弹夹中移除bullet = self.clip.bullet_list.pop()enemy.hp -= bullet.damageif enemy.hp <= 0:bullet.move()print('敌人{}应声倒下'.format(enemy.name)) #弹夹类 class Clip:def __init__(self,capacity):#弹夹容量self.capacity = capacity#用来存储子弹的列表self.bullet_list = [] #子弹类 class Bullet:def __init__(self):self.damage = 100self.speed = 1000def move(self):print('子弹以{}m/s向敌人'.format(self.speed)) #敌人类 class Enemy:def __init__(self,name,hp):self.name = nameself.hp = hp#创建狙击手对象 sniper = Sniper('海豹突击1号') #狙击手捡枪 sniper.pickupGun() # print(dir(sniper)) # print(dir(sniper.gun)) #装弹 sniper.loading() # print(dir(sniper.gun)) # #打印狙击手的枪的弹夹的子弹列表中的子弹 # print(sniper.gun.clip.bullet_list) # #创建敌人对象 enemy = Enemy('小日本1',100) #射击 sniper.shoot(enemy) print('枪中剩余子弹{}发'.format(len(sniper.gun.clip.bullet_list)))
转载于:https://www.cnblogs.com/ilovepython/p/11068889.html
面向对象思想封装狙击手狙击敌人相关推荐
- js面向对象思想封装拖拽功能,兼容pc和移动端
我们在开发项目过程中,很可能会碰到页面上某块需要可以拖拽移动的功能需求,网上已经有不少前辈分享了相关功能的案例,插件或者代码,但是考虑到项目功能需求,我们可能仅需要实现拖拽移动功能就可以,不需要其他功 ...
- java封装插件,基于面向对象思想封装一个水球插件
1 2 3 4 5 test 6 7 body{ 8 display:flex; 9 flex-flow:column wrap; 10 justify-content:center; 11 alig ...
- 面向对象思想的三种通俗解释
1. 假如你去洗澡,你可能是这么考虑的,首先进入浴室,然后打开水龙头冲洗, 最后用浴巾擦干身子,等等一系列过程,叫做面向过程.你用面向过程解决了洗澡这个问题. 那么看面向对象是如何思考的,你是一个对象 ...
- 学习面向对象思想,开始考虑通过封装、 继承、多态把程序的耦合度降低
学习面向对象思想,开始考虑通过封装. 继承.多态把程序的耦合度降低 转载于:https://www.cnblogs.com/Andys/archive/2013/04/05/3001175.html
- 【Java设计模式 面向对象设计思想】一 再谈面向对象和封装、抽象、继承、多态四大特性
回看最初的目标:[Java设计模式 学习目标及大纲]高质量代码的标准及实现路径在这篇Blog里我们明确了什么是高质量的代码:易维护.易读.易扩展.灵活.简洁.可复用.可测试,也知道高质量代码的达成路径 ...
- Java面向对象思想、类的定义、对象的使用、对象内存图、成员变量和局部变量的区别、封装、private关键字、this关键字、构造方法、JavaBean-day06
目录 第1节 面向对象思想 1.1 面向对象思想概述 概述 举例 特点 1.2 类和对象 什么是对象 类与对象的关系 1.3 类的定义 事物与类的对比 类的定义格式 1.4 对象的使用 对象的使用格式 ...
- 阶段1 语言基础+高级_1-2 -面向对象和封装_1面向对象思想的概述
面向对象思想的概述 面向谁就更加关注谁. 程序里面有面向过程 写一个打印数组的功能代码 在面向对象出现之前,有个叫做面向过程. 面向对象可以理解为偷懒 打印数组用两种思想分别来实现. 最后一个元素后面 ...
- 【python面向对象】封装(面试题常考)
本章节的内容常常在面试题中出现,大家根据本文的思路可以很好的掌握. 文章目录 封装浅层次 一.使用方法,封装变量 二.使用property (读取方法,写入方法),封装变量 三.使用property ...
- 四大发明之活字印刷——面向对象思想的胜利
四大发明之活字印刷--面向对象思想的胜利 话说三国时期,曹操带领百万大军攻打东吴,大军在长江赤壁驻扎,军船连成一片,眼看就要灭掉东吴,统一天下,曹操大悦,于是大宴众文武,在酒席间,曹操诗性大发,不觉吟 ...
最新文章
- 利用动态加载模板,配合ajax实现无刷新操作
- C#调用Win32 的API函数--User32.dll
- 【bzoj2223】[Coci 2009]PATULJCI 主席树
- 【职场经验】算法同学从学校到实习,需要改变什么
- 怎样实现登录用户管理_如何编写程序实现图书管理系统里面的用户管理功能
- WinCE内核裁减(中文字体)及字库和内核的分离
- vue (可读写)全局变量的 定义、任意调用、值的修改
- 【Python】Python3.7.3 - memoization 结果缓存记忆程序设计优化技术
- Solr如何管理索引库
- [原创]使用python对视频/音频文件进行详细信息采集,并进行去重操作
- 吴恩达悄然发布AI维基,另外他的技术岗已经招满了
- android 使用so库,Android 使用SO库
- JAVA中的异常及两种异常处理的方法
- Vue项目中国际化的语言切换
- html表格 超链接无效,excel表格超链接失效怎么处理
- php实现推箱子游戏,C语言实现推箱子游戏的代码示例
- 网易云音乐外链(PHP的curl函数)
- c++正则表达式regex
- brpc源码解析(四)—— Bthread机制
- java多线程并发之旅-34-性能与可伸缩性
热门文章
- 深度学习之基于卷积神经网络(VGG16)实现性别判别
- Squared Permutation(线段树)
- 电脑屏幕保护怎么取消_STEP考试安排再更新!今年到底要怎么考试?
- 废旧光盘手工小制作_废旧光盘没有用,只能扔?这些光盘改造的小手工就很惊艳,附教程...
- 如何破解Synplify Pro 9.6.2? (SOC) (Synplify)
- 图像bayer格式介绍以及bayer插值原理CFA
- 【OpenPose-Windows】OpenPose+VS2015+Windows+CUDA8+cuDNN5.1 官方配置教程
- 关于 时钟抖动 Jitter 和 偏移 Skew
- HTTP2协议的发展与使用
- 【git】git 入门使用手册