面向对象编程题——人开枪射击子弹

面向对象编程题目:人开枪射击子弹。

 

第一步:分析题目。

人开枪射击子弹。

题目中有三个名词,分别是:人、枪、子弹。

也就是说,至少要有三个类,分别是:人类、枪类、弹夹类(装子弹)。

那么,我们再深入分析,三个类,每个类都有什么。

第一个是人类。

类名:Person(人)

属性:gun(枪)

行为:fire(开火)

第二个是枪类。

类名:Gun(枪)

属性:bulletBox(弹夹)

行为:shoot(射击)

第三个是弹夹类

类名:BulletBox(弹夹)

属性:bulletCount(子弹)

行为:(这里没有,因为弹夹确实没什么行为。)

 

第二步,编写三个类的代码。

Person类:

class Person(object):
    def __init__(self, gun):
        self.gun = gun         #人首先要拥有一把枪
    def fire(self):
        self.gun.shoot()       #人开火的时候调用枪射击。
    def fillBullet(self, count):
        self.gun.bulletBox.bulletCount = count      #在没子弹的时候,要能购买子弹。
        print("购买子弹数:%d" %(count))

Gun类:

class Gun(object):
    def __init__(self, bulletBox):
        self.bulletBox =bulletBox       #枪首先得有个弹夹
    def shoot(self):
        if self.bulletBox.bulletCount == 0:    #判断子弹数,并输出信息。
            print("没有子弹了,请购买子弹。")
        else:
            self.bulletBox.bulletCount -= 1      #每次开火,减少一颗子弹。
            print("剩余子弹:%d发" % (self.bulletBox.bulletCount))

BulletBox类:

class BulletBox(object):
    def __init__(self, count):
        self.bulletCount = count   #弹夹用来装子弹就可以。

三个类的调用关系是人-》枪-》子弹。

简单逻辑:

你人开枪射击子弹,首先得有一把枪,这把枪里得有弹夹,这个弹夹里得装有子弹。

 

第三步,实现人开枪发射子弹的功能。

先导入三个类。

from person import Person
from gun import Gun
from bulletBox import BulletBox

这里是使用自定义模块的方式导入的。

小写的是模块名。

再定义三个对象

#弹夹  初始给上2发子弹。
bulletBox = BulletBox(2)
#枪
gun = Gun(bulletBox)
#人
per = Person(gun)

开始发射子弹

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

发射三颗后,没有子弹,并提醒用户购买子弹。

per.fillBullet(10)

买上10颗子弹,并打印购买个数。

继续射击,并在射击后显示剩余子弹。

per.fire()

暂时,就写这么多,一个小题,大家有兴趣可以自行补充。

  • 8
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值