2014-05-23 119 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