之前使用java進行一個比較簡單的實驗——模擬打槍游戲,具體內容就在這里不多說了,以下是python版本,對於python在語法要求上相對其他語言較為松散,所以在編寫時遇到了一些坑。
因為單純以實現為目的,所以以下代碼編寫的並不簡潔,這里主要說說遇到的坑:在處理變量的時候,因為python中的變量在使用時並不需要聲明數據類型,但是如果直接拿來使用又會報錯:TypeError: unsupported operand type(s) for -: 'method' and 'int'
百度了一下,發現是語法問題。
關於上述提示錯誤:是因為在Python中不需像C一樣,需要 int sum (指定sum的類型),但並不是說可以直接放在表達式中去計算,所以還是需要先定義的(這些都是小細節,平時都應該盡量避免,做好類似問題的收集)
代碼:
1 class BULLET_BOX: 2 def __init__(self): 3 self.bullet_count = 0 4 5 def Add_Bullet(self, count): 6 self.bullet_count = count 7 8 def See_Bullet(self): 9 return self.bullet_count
1 class GUN: 2 def __init__(self, BULLET_BOX): 3 self.BULLET_BOX = BULLET_BOX 4 5 def Shoot(self): 6 self.count = self.BULLET_BOX.See_Bullet() 7 if (self.count > 0): 8 self.count = self.BULLET_BOX.See_Bullet() 9 self.count = self.count - 1 10 self.BULLET_BOX.Add_Bullet(self.count) 11 print("砰——") 12 print("當前子彈數:",self.count) 13 else: 14 print("子彈不足!")
1 class BULLET_BOX: 2 def __init__(self): 3 self.bullet_count = 0 4 5 def Add_Bullet(self, count): 6 self.bullet_count = count 7 8 def See_Bullet(self): 9 return self.bullet_count
1 import time, PEOPLE, GUN, BULLET_BOX 2 3 from PEOPLE import * 4 from GUN import * 5 from BULLET_BOX import * 6 7 a = BULLET_BOX() 8 a.Add_Bullet(5) 9 b = GUN(a) 10 c = PEOPLE(b) 11 12 while True: 13 c.Fire() 14 time.sleep(1)
代碼效果: