2014-05-23 74 views
1

我在我的ipad上使用pythonista在Python中製作小遊戲。 我做了一個向量類,其中包含座標和幾個函數添加,獲得一個長度,設置一個長度。我有另一個類叫做遊戲,其中我有我的遊戲變量和功能。我可以定義一個向量可以說python中的全局方法或函數

self.pos=vector(200,200) 

但如果我要努力出來的長度,我不能調用getlength功能,因爲我在合適的班級我不是。

實例(我已經取出大部分代碼):

class vector(objet): 
    def __init(self,x,y): 
     self.x=x 
     self.y=y 

    def getlength(self): 
     return sqrt(self.x**2+self.y**2) 

    def addvec(self,a,b): 
    return vector(a.x+b.x,a.y,b.y) 


class Game(object): 
    def __init__(self): 
     self.pos=vector(200,200) 
     self.pos=vector(200,200) 

    def loop(self): 
     ## here i want something like d= length of self.pos !! 

class MyScene(Scene): 
    def setup(self): 
     self.game=Game() 

    def draw(self): 
     self.game.loop() 

run(MyScene()) 

感謝, 薩科

編輯:通話

sum=addvec(self.pos,self.pos2) 

顯然不能因爲自己工作是一個遊戲類。我該怎麼做?

+2

'self.pos.getlength'?你既不想也不需要它成爲一個全局函數 - 它是一個有用的*實例方法*。 – jonrsharpe

+0

請使用4個空格來設置縮進級別。 UPD:更好。 – vaultah

+0

當您嘗試調用getlength方法時會發生什麼? – kindall

回答

4

爲什麼使用getLength函數的兩個參數?第二個是一個向量(我認爲),所以這將是更好地使用:

def getLength(self): 
    return sqrt(self.x**2+self.y**2) 

,然後只要致電:

d = self.pos.getLength() 

如果你想增加兩個向量在一起,你會做什麼像這樣:

def add(self,other_vector): 
    return vector(self.x+other_vector.x,self.y+other_vector.y) 

,所以你會打電話:

sum = self.pos.add(some_other_vector) 

順便說一句:類應該始終寫在CamelCase中。也許你應該閱讀一些關於python中面向對象編程的內容:http://code.tutsplus.com/articles/python-from-scratch-object-oriented-programming--net-21476

+0

謝謝,這工作! 對不起,如果我不是很擅長這個......如果我想在向量類中添加兩個具有函數的向量。'code' def addvec(self,a,b): 返回向量(a.x + bx,ay,by) 調用sum = addvec(self.pos,self.pos2)顯然不起作用因爲自己是一個遊戲類。我該怎麼做? – nwins