老王開槍源碼(Mr.Wang_shooting.py)
阿新 • • 發佈:2018-05-02
python 老王 開槍源碼
class person(object):
"""docstring for 人類"""
def __init__(self, name):
super(person, self).__init__()
self.name = name #用於記錄人的名字
self.gun = None #用於保存槍對象的引用
self.hp = 100 #用於保存玩家的血量
def install_bullet(self,dan_jia_temp,zi_dan_temp):
‘‘‘把×××撞到彈夾中‘‘‘
#彈夾.保存×××(×××)
dan_jia_temp.sava_bulllet(zi_dan_temp)
def install_cartridge(self,gun_temp,dan_jia_temp):
‘‘‘把彈夾安裝到槍中‘‘‘
#槍.保存彈夾(彈夾)
gun_temp.save_cartridge(dan_jia_temp)
def with_a_gun(self,gun_temp):
‘‘‘老王拿起一把槍‘‘‘
self.gun = gun_temp
def __str__(self):
if self.gun:
return "%s的血量為:%d,他有槍%s"%(self.name,self.hp,self.gun)
else:
if self.hp>0:
return "%s的血量為:%d,他沒有槍"%(self.name,self.hp)
else:
return "%s已掛..."%self.name
def pull_trigger(self,enemy):
‘‘‘讓槍打敵人‘‘‘
#槍.開火(敵人)
self.gun.fire(enemy)
def decrease_hp(self,killability):
‘‘‘根據殺傷力,掉相應的血量‘‘‘
self.hp -= killability
class gun(object):
"""docstring for 槍類"""
def __init__(self, name):
super(gun, self).__init__()
self.name = name #用於記錄槍的類型
self.cartridge_list = None #用於記錄彈夾對象的引用
def save_cartridge(self,dan_jia_temp):
‘‘‘用一個屬性保存彈夾對象的引用‘‘‘
self.cartridge_list = dan_jia_temp
def __str__(self):
return "槍的信息:%s"%(self.name)
def fire(self,enemy):
‘‘‘槍從彈夾中取出一發×××,然後讓這發×××去射擊敵人‘‘‘
#先從彈夾中取出×××
zi_dan_temp = self.cartridge_list.pop_bullet()
#讓這個×××去射擊敵人
if zi_dan_temp:
#×××.打中敵人
zi_dan_temp.hit(enemy)
else:
print("彈夾中沒有×××")
class cartridge(object):
"""docstring for 彈夾類"""
def __init__(self, max_num):
super(cartridge, self).__init__()
self.max_num = max_num #用來記錄彈夾的最大容量
self.bullet_list = [] #用來記錄所有×××的引用
def sava_bulllet(self,zi_dan_temp):
‘‘‘將×××對象保存‘‘‘
self.bullet_list.append(zi_dan_temp)
def __str__(self):
return "彈夾的信息為%d/%d"%(len(self.bullet_list),self.max_num)
def pop_bullet(self):
‘‘‘彈出上面的那顆××ב‘‘
if self.bullet_list:
return self.bullet_list.pop()
else:
return None
class bullet(object):
"""docstring for ×××類"""
def __init__(self, killability):
super(bullet, self).__init__()
self.killability = killability #用於記錄×××的殺傷力
def hit(self,enemy):
‘‘‘讓敵人掉血‘‘‘
#敵人.掉血(一顆×××的威力)
enemy.decrease_hp(self.killability)
def main():
‘‘‘用來控制整個函數的流程‘‘‘
#1.創建老王對象
Mr_Wang = person("老王")
#2.創建槍對象
ak47 = gun("ak47")
#3.創建彈夾對象
dan_jia = cartridge(20)
#4.創建一些×××對象
for i in range(15):
zi_dan = bullet(10)
#5.老王把×××安裝到彈夾
#老王.安裝×××到彈夾中(彈夾,×××)
Mr_Wang.install_bullet(dan_jia,zi_dan)
#6.老王把彈夾安裝到槍
#老王.安裝彈夾到槍中(槍,彈夾)
Mr_Wang.install_cartridge(ak47,dan_jia)
#test:測試彈夾的信息
print(dan_jia)
#test:測試槍的信息
print(ak47)
#7.老王拿槍
#老王.拿槍(槍)
Mr_Wang.with_a_gun(ak47)
#test:測試老王對象
print(Mr_Wang)
#8.創建敵人對象
trump = person("特蘭普蠢蛋")
print(trump)
#9.老王用槍射擊敵人
#老王.扣扳機(敵人)
for i in range(0,10):
Mr_Wang.pull_trigger(trump)
print(dan_jia)
print(trump)
if __name__ == ‘__main__‘:
main()
[結果輸出]
[root@os-python python]# python shooting.py
彈夾的信息為15/20
槍的信息:ak47
老王的血量為:100,他有槍槍的信息:ak47
特蘭普蠢蛋的血量為:100,他沒有槍
彈夾的信息為14/20
特蘭普蠢蛋的血量為:90,他沒有槍
彈夾的信息為13/20
特蘭普蠢蛋的血量為:80,他沒有槍
彈夾的信息為12/20
特蘭普蠢蛋的血量為:70,他沒有槍
彈夾的信息為11/20
特蘭普蠢蛋的血量為:60,他沒有槍
彈夾的信息為10/20
特蘭普蠢蛋的血量為:50,他沒有槍
彈夾的信息為9/20
特蘭普蠢蛋的血量為:40,他沒有槍
彈夾的信息為8/20
特蘭普蠢蛋的血量為:30,他沒有槍
彈夾的信息為7/20
特蘭普蠢蛋的血量為:20,他沒有槍
彈夾的信息為6/20
特蘭普蠢蛋的血量為:10,他沒有槍
彈夾的信息為5/20
特蘭普蠢蛋已掛...
老王開槍源碼(Mr.Wang_shooting.py)