Python笔记之面向对象实例(半条命射击游戏)

一、目标

先声明,这个代码是抄的某位网上的老师的,不是我自己写的,

py的面向对象的语法一下子无法接受,虽然照抄了一遍代码,还是头有点晕,有些地方想不明白

通过本游戏代码了解面向对象

二、环境

windows7 64bit,pycharm

三、项目结构

还是非常简单的。就一层根目录。CS_BanTiaoMing是主程序。

四、四个代码分别是

# #Box.py
class Box(object):
    '''弹匣类'''
    def __init__(self, count):
        self.bulletCount = count   # #子弹数量

 

# #CS_BanTiaoMing.py
from Person import Person
from Gun import Gun
from Box import Box

# #实例化创建一个弹匣,装有6发子弹
xBulletBox = Box(6)

# #实例化一把枪,给枪安装上弹匣(弹匣里有子弹了)
xGun = Gun(xBulletBox)

# #实例化一个玩家,
kahn = Person(xGun)    # #同时上面枪已默认安装了6发子弹
kahn.fire()
kahn.fire()
kahn.fire()
kahn.fire()
kahn.fire()
kahn.fire()
print("----------分割线--------")
kahn.fire()
kahn.loadBullet(3)      # #再装3颗子弹进去,开到第四枪就没子弹了。
kahn.fire()
kahn.fire()
kahn.fire()
kahn.fire()

'''
运行结果:
剩余子弹:5
剩余子弹:4
剩余子弹:3
剩余子弹:2
剩余子弹:1
剩余子弹:0
----------分割线--------
没有子弹了,请购买子弹后再开枪
剩余子弹:2
剩余子弹:1
剩余子弹:0
没有子弹了,请购买子弹后再开枪
'''

# #Gun.py
class Gun(object):
    def __init__(self, bulletBox):
        self.bulletBox = bulletBox

# #开枪射击
    def shoot(self):
        # #如果子弹数量为0,提示没有子弹了
        if self.bulletBox.bulletCount == 0:
            print("没有子弹了,请购买子弹后再开枪")
        # #每射击一次,减少一颗子弹,并提示剩余几颗子弹
        else:
            self.bulletBox.bulletCount -= 1
            print("剩余子弹:%d" % (self.bulletBox.bulletCount))
# #Person.py
class Person(object):
    def __init__(self, gun):
        self.gun = gun

# #扣动扳机
    def fire(self):
        self.gun.shoot()

# #装子弹
    def loadBullet(self, count):
        self.gun.bulletBox.bulletCount = count

NND,不理解了,太晚了,瞌睡死了。

2019年3月29日23:18:40

这个例子对初学者来讲就是个坑。之前学过其他语言的面向对象的话,再学python的面向对象,而且是第一次看这类代码,必跳进坑。想了半天,试了几次才明白其中的原由。

因为刚学python,水平有限,但感觉如果能把这个实例看明白了,那真是对python的面向对象了解的比较透彻了。

不得不说python的面向对象好像是有点不彻底的感觉。(有点感觉python是被部分人吹起来的)

2019年3月30日22:12:50

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值