我想知道如何解決這個問題,我用我的第一塊OOP代碼。問題在於Snake類的攻擊方法。我在比賽中有兩條蛇,並試圖讓蛇去攻擊另一條蛇。目前我使用兩個變量來記錄Snake的輪到它,然後使用它來嘗試攻擊另一個蛇。但是這不起作用。任何人有任何想法如何解決這個問題?非常感謝。Python面向對象編程新手
class Snake:
hp=100
attack=25
defense=1
def set_name(self, name):
self.name=name
def shed(self):
self.defense=self.defense+1
def attack(self, opposite, current):
opposite.hp=opposite.hp-(current.attack-opposite.defense)
def eat(self):
self.attack=self.attack+5
print(str(self.name) + " eats a rat!")
print(str(self.name) + "'s attack dmg is now " + str(self.attack))
def sleep(self):
print (str(self.name) + " goes to sleep")
self.hp=self.hp+10
if self.hp>100:
self.hp=100
print (str(self.name) + " wakes up with " + str(self.hp) + "hp")
##initialises the snakes
alpha=Snake()
beta=Snake()
## gives the snakes names of the user's choice
alpha_name=raw_input("What would you like to name your snake? ")
alpha.set_name(alpha_name)
beta_name=raw_input("What would you like to name the other snake? ")
beta.set_name(beta_name)
##starts the game
turn=True
while alpha.hp>0 and beta.hp>0:
while turn==True:
opposite="beta"
current="alpha"
action=raw_input("attack, sleep, eat or shed? ")
try:
if action=="attack":
alpha.attack(opposite, current)
if action=="sleep":
alpha.sleep()
if action=="eat":
alpha.eat()
if action=="shed":
alpha.shed()
turn=False
except IOError:
print("Please chose only one action, exaclty how it is typed")
while turn==False:
opposite="alpha"
current="beta"
if beta.hp<15:
beta.sleep()
elif alpha.hp>75:
beta.attack()
else:
index=random.randint(1, 3)
if index==1:
beta.shed()
elif index==2:
beta.eat()
else:
beta.attack(opposite, current)
turn=True
「不工作」是完全無用的報告。會發生什麼,如果發生錯誤,您準備發生什麼,確切的消息和追溯等等。 – delnan 2011-06-09 14:27:29
請告訴我們究竟發生了什麼。問一個問題的好方法是:1.問題背景2.你期望發生什麼3.發生什麼4.有問題的代碼 – JackMc 2011-06-09 14:28:07
@JackMc:允許竊取該評論並使用它? – Trufa 2011-06-09 14:38:46