一、目标
先声明,这个代码是抄的某位网上的老师的,不是我自己写的,
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