前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >面向对象案例

面向对象案例

作者头像
星哥玩云
发布2022-09-08 12:25:06
2260
发布2022-09-08 12:25:06
举报
文章被收录于专栏:开源部署

案例:人开枪射击子弹

一、分析

人类

代码语言:javascript
复制
类名:Person
属性:gun  bulletBoxList
行为:fire()  downBulletBox() upBulletBox()  reloadBullet()

枪类

代码语言:javascript
复制
类名:Gun
属性:bulletBox
行为:shoot()

弹夹类

代码语言:javascript
复制
弹夹
类名:BulletBox
属性:count  bulletList
行为:

子弹类

代码语言:javascript
复制
子弹
类名:Bullet
属性:kj
行为:

二、实现

子弹类(bullet.py)

代码语言:javascript
复制
class Bullet(object):
    def __init__(self, kj):
        self.kj = kj

弹夹类(bulletBox.py)

代码语言:javascript
复制
class BulletBox(object):
    def __init__(self, count):
        self.count = count
        self.bulletList = []

枪类(gun.py)

代码语言:javascript
复制
class Gun(object):
    def __init__(self):
        self.bulletBox = None

    def shoot(self):
        if len(self.bulletBox.bulletList) == 0:
            print("没有子弹了,请更换弹夹!")
        else:
            self.bulletBox.bulletList.pop()
            print("剩余%d发子弹"%len(self.bulletBox.bulletList))

人类(person.py)

代码语言:javascript
复制
from bullet import Bullet

class Person(object):
    def __init__(self, gun, bulletBoxList):
        self.gun = gun
        self.bulletBoxList = bulletBoxList

    def fire(self):
        if not self.gun.bulletBox:
            print("请添加弹夹!")
        else:
            self.gun.shoot()

    def downBulletBox(self):
        # 没有子弹的弹夹
        temp = self.gun.bulletBox
        self.gun.bulletBox = None
        return temp

    def upBulletBox(self, bulletBox):
        self.gun.bulletBox = bulletBox

    def reloadBullet(self, bulletBox, count):
        for i in range(count):
            #创建子弹
            bullet = Bullet(7.62)
            bulletBox.bulletList.append(bullet)

主文件(main.py)

代码语言:javascript
复制
from person import Person
from gun import Gun
from bulletBox import BulletBox


def main():
    #创建一把枪
    gun = Gun()

    #创建5个弹夹
    bulletBoxList = []
    for i in range(5):
        bulletBox = BulletBox(7)
        bulletBoxList.append(bulletBox)


    #创建一个人
    per = Person(gun, bulletBoxList)


    #让人给每个弹夹都上满子弹
    for bulletBox in per.bulletBoxList:
        per.reloadBullet(bulletBox, bulletBox.count)

    #找一个弹夹上到枪中
    bulletBox = per.bulletBoxList[0]
    per.upBulletBox(bulletBox)


    per.fire()
    per.fire()
    per.fire()
    per.fire()
    per.fire()
    per.fire()
    per.fire()
    per.fire()

    #没子弹,卸载弹夹
    bulletBox = per.downBulletBox()
    #给这个单击在填满子弹
    per.reloadBullet(bulletBox, bulletBox.count)


    # 找一个弹夹上到枪中
    bulletBox = per.bulletBoxList[2]
    per.upBulletBox(bulletBox)
    print("-------")
    per.fire()



if __name__ == "__main__":
    main()
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、分析
  • 二、实现
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档