我是新的在stackoverflow,我想我的第一個問題在這個代碼中我試圖寫在python學習對象的問題。 我想通過字典調用對象的創建。 我的目的是創建一個對象得數,比如我有字典newch = {1 : Character.new_dragon(), 2 : Character.new_goblin()}
,當我打電話Player1 = newch[1]
應該創建一個新的龍(@classmethod new_dragon)並將其分配給PLAYER1如何使用dictonary創建對象?
的問題是,當我運行該程序,Character.new_dragon()
和Character.new_goblin()
被自動調用(我把控制打印),但是當我在請求「哪個播放器?」之後寫入「DRAGO」?功能沒有所謂,因爲沒有控制打印
import random
class Character:
def __init__(self,idd,height,weight,att,defe):
self.idd=idd
self.height=height
self.weight=weight
self.att=att
self.defe=defe
@classmethod
def new_goblin(cls):
print('newgoblin')
return cls(1,getr(1,1.5,0.1),getr(40,60,0.5),getr(5,15,1),getr(6,10,1))
@classmethod
def new_dragon(cls):
print('newdrago')
return cls(2,getr(20,30,1),getr(500,2000,5),getr(50,150,3),getr(20,100,3))
def getr(start,stop,step): #returns float
x=random.randint(1, 1000)
random.seed(x)
return random.randint(0, int((stop - start)/step)) * step + start
play={1:'p1', 2:'p2', 3:'p3', 4:'p4'} #dict for players
newch={1:Character.new_dragon(),2:Character.new_goblin()} ############This doesn't work
i=1
while True:
char=input("which player? Drago or Goblin?").upper()
if(char=="DRAGO"):
play[i]=newch[1] #here i try to call Character.new_dragon()
i+=1
break
elif(char=="GOBLIN"):
play[i]=newch[2]
i+=1
break
print("write \'Drago\' or \'Goblin\'")
print(play[1].height, play[1].weight, play[1].att, play[1].defe)
這裏是我的代碼,如果你能幫助我,我會非常高興,感謝
非常感謝大家! :) – Matte
你的休息時間阻止更多玩家選擇他們的角色。在下面看到我對Turn的回答的評論。你還應該問「哪個角色?」,而不是「哪個角色」。提議的另一種選擇是將輸入的結果發送到一個函數,該函數將該數字作爲if else樹的參數來調用函數。所以你不會有這個問題。 –
是的,我知道,我會在一段時間內實現這個功能,謝謝 – Matte