反恐精英CS案例

游戏说明:

在全世界风靡起来的反恐精英是一种以团队合作为主的第一人称射击游戏,简称CS。根据面向对象的编程思维,模拟实现一个战士开枪射击敌人的场景。

游戏中主要包含两个角色:战士(玩家)和敌人,还有三个道具:枪、弹夹和子弹。其中战士和敌人的默认血量为100,它们一旦被子弹击中,就会因子弹的杀伤力而出现掉血行为,每次中击一次的血量减少10;枪里面默认是没有弹夹的,弹夹里面也没有子弹。战士若想持枪射击敌人,需要给弹夹装上子弹、给枪装弹夹,每次射击一次,子弹的数量减少一枚。

分析类具体如下:
(1)战士和敌人类:Person
属性:姓名(name)、血量(blood)、枪(gun)
方法:安装子弹(install_bullet)、安装弹夹(install_clip)、持枪(take_gun)、开枪(fire)
(2)子弹类:Bullet
属性:杀伤力(damage)
方法:伤害敌人(hurt)
(3)弹夹类:Clip
属性:最大容量(capacity)、当前子弹列表(current_list)
方法:放置子弹(save_bullets)、弹出子弹(launch_bullet)
(4)枪类:Gun
属性:弹夹(clip)
方法:链接弹夹(mounting_clip)、发射子弹(shoot)

具体代码如下:

"""
战士(玩家),敌人,枪,子弹,弹夹
"""# 定义表示战士、敌人的类
class Person:def __init__(self, name):# 姓名self.name = name# 血量self.blood = 100self.gun = None# 给弹夹安装子弹def install_bullet(self, clip, bullet):# 弹夹放置子弹clip.save_bullets(bullet)# 给枪安装弹夹def install_clip(self, gun, clip):# 枪链接弹夹gun.mounting_clip(clip)#持枪def take_gun(self, gun):self.gun = gun# 开枪def fire(self, enemy):# 射击敌人self.gun.shoot(enemy)# 掉血def lose_blood(self, damage):self.blood -= damagedef __str__(self):return "%s剩余血量%d" % (self.name, self.blood)# 定义表示枪的类
class Gun:def __init__(self):# 默认没有弹夹self.clip = None# 链接弹夹def mounting_clip(self, clip):if not self.clip:self.clip = clipdef __str__(self):if self.clip:return "枪已经装了弹夹"else:return "枪无弹夹"# 射击def shoot(self, enemy):# 弹夹出子弹bullet = self.clip.lunch_bullet()if bullet:bullet.hurt(enemy)else:print("没有子弹了,放了空枪...")# 定义表示弹夹的类
class Clip:def __init__(self, capacity):# 最大容量self.capacity = capacity# 当前子弹数量self.bullet_list = []# 安装子弹def save_bullets(self, bullet):# 当前子弹数量小于最大容量if len(self.bullet_list) < self.capacity:self.bullet_list.append(bullet)def __str__(self):return "现在弹夹中子弹数量为:%d" % len(self.bullet_list)# 出子弹def lunch_bullet(self):# 判断当前弹夹中是否还有子弹if len(self.bullet_list) > 0:bullet = self.bullet_list[-1]self.bullet_list.pop()return bulletelse:return None# 定义表示子弹的类
class Bullet:def __init__(self, damage):# 伤害力self.damage = damage# 伤害敌人def hurt(self, enemy):# 让敌人掉血enemy.lose_blood(self.damage)if __name__ == '__main__':soldier = Person("张三")clip = Clip(20)print(clip)i = 0while i < 5:# 创建一个子弹bullet = Bullet(10)soldier.install_bullet(clip, bullet)i += 1print(clip)# 创建一个枪gun = Gun()print(gun)# 安装弹夹soldier.install_clip(gun, clip)print(gun)soldier.take_gun(gun)# 创建一个敌人enemy = Person("敌人")print(enemy)# 士兵拿枪soldier.fire(enemy)print(enemy)soldier.fire(enemy)print(enemy)

程序运行结果如下:

END
感谢看到这里的各位读者朋友们,如果你感到本文写的不错,就顺手点个赞收藏一下,也可以关注一波~~

Python(面向对象)--阶段案例——反恐精英CS相关推荐

  1. Python面向对象封装案例——士兵突击

    面向对象封装案例 II 目标 士兵突击案例 身份运算符 封装 封装 是面向对象编程的一大特点 面向对象编程的 第一步 -- 将 属性 和 方法 封装 到一个抽象的 类 中 外界 使用 类 创建 对象, ...

  2. Python面向对象编程案例:封装数据库增删改查操作

    问题描述:编写一个类,封装对SQLite数据库的增删改查操作,使得数据库操作更加友好,类的使用者不需要了解SQL语句的语法规则,只需要了解类的接口即可. 思考下面的问题,尝试着写一写,然后到达文末查看 ...

  3. 自定义模块+python面向对象+综合案例

    一.模块 1.自定义模块 1.1import模块 代码演示: moduleDemo01.py def fun1():print("fun~~~~111") def fun2():p ...

  4. 整理了 70 个 Python 面向对象编程案例,怎能不收藏?

    作者 | 周萝卜 来源 | 萝卜大杂烩 Python 作为一门面向对象编程语言,常用的面向对象知识怎么能不清楚呢,今天就来分享一波 文章很长,高低要忍一下,如果忍不了,那就收藏吧,总会用到的 在 Py ...

  5. 如何短时间提高python面向对象_初识Python面向对象阶段,你们都是怎么过来的?

    泻药. 其实挺简单的,我换种说法你应该就能明白. 假设现在我要去在这个问题下挖个坑,那么为了解决这个问题,我就要考虑 : 题主问的是什么,我该怎么回答,我该在哪回答,回答后怎么提交-- 也就是说,我在 ...

  6. Python面向对象实现案例——士兵突击

    #一个对象的属性可以时另外一个类创建的对象 class Gun:def __init__(self,model):#1.枪的型号self.model=model#2.子弹的数量self.bullet_ ...

  7. [转载] python面向对象编程实例

    参考链接: Python面向对象编程 案例介绍 本案例设计的是:为购置的新房添置家具,在本案例中,我们需要给出指定的房屋和面积,在为其添置家具的过程中,各家具的面积之和不能超过房屋面积的总和.房屋及家 ...

  8. Python面向对象案例汇总

    Python面向对象案例汇总 简介 Python是一门面向对象的语言,用这种思想为指导设计的程序,把数据和对数据的操作封装在一起组成类,通过类来创建对象,通过对象之间的交互来实现程序的功能. 定义个空 ...

  9. python和对象复习_面向对象阶段复习

    面向对象阶段复习 一.类,对象,属性方法调用 class 类名(父类1,父类2): 静态属性 = '' # 静态属性,也叫类属性 def __init__(self): # 初始化方法 self.na ...

最新文章

  1. javaweb学习总结——Filter高级开发
  2. C#委托与事件 简明
  3. 分享一道JS前端闭包面试题
  4. 7月新的开始 - Axure学习03 - 布尔运算、表单元件
  5. 中国象棋程序的设计与实现(四)-- 一次“流产”的写书计划
  6. 连接mongodb,kafka异步处理代码
  7. ppt的一些基础操作
  8. 七十一、Python | Leetcode字符串系列(上篇)
  9. 加载程序中数据库账号密码加密策略wallet_04
  10. Struts 拦截器
  11. Java中的枚举(Enumeration)
  12. Atitit 数据控制语言与权限  DCL
  13. 微星小飞机界面翻译_小巧高效翻译软件Xtranslator的正确使用姿势
  14. HTTP请求方法及幂等性
  15. Objective-C 信息传递模型 [ ] 发送消息
  16. js基础知识总结大全
  17. Android飞行模式过程,在Android中切换飞行模式
  18. CentOS7 安装 YApi
  19. HAProxy 源代码阅读指引
  20. win10文件夹加密_纯UEFI电脑安装Win10 LTSB做全分区加密

热门文章

  1. My Batis缓存
  2. 【代码审计】CLTPHP_v5.5.3 前台任意文件上传漏洞
  3. 【竞赛】视频质量评价竞赛经验记录-1(比赛介绍)
  4. win10系统如何解决管理员已阻止你运行此应用
  5. 希尔排序和归并排序以及快速排序
  6. 【代码+注释】求二叉树的深度【超详细】递归+非递归实现
  7. PythonStock(38)全栈股票系统:Python全栈股票系统,使用vue进行前端界面开发,修改接口可以展示股票数据,持续开发中。
  8. SylixOS内存屏障
  9. 用stl函数来实现二分查找
  10. Oracle计算某日期段内排除周六日之后的天数(请假,工作日,日期型)