我正在写一个简单的乒乓球游戏。我希望我的padle和Ball对象都继承自DynamicObj,DynamicObj是一个父类,它有一个update
方法,该方法使用基本的简单Euler积分来确定位置。问题是padle对象的位置存储在rect中(因此使用rect.x访问x位置),而Ball对象的位置存储在x和y值中。有没有办法让它们都继承自同一个类,这样就可以确定它们的位置?你知道吗
以下是我目前掌握的情况:
class DynamicObj:
def __init__(self, vel):
self.vel = vel
def update(self, delta):
self.x += self.vel.x * delta
self.y += self.vel.y * delta
class Ball(DynamicObj):
def __init__(self, x, y, radius, vel):
self.x = x
self.y = y
self.radius = radius
self.vel = vel
class Paddle(DynamicObj):
def __init__(self, rect, vel):
self.rect = rect
self.vel = vel
#what I want is to create self.x and self.y that respectively point to the same place as self.rect.x and self.rect.y
我在考虑用property
做这个。你知道吗
是的,properties会有帮助:
现在您的桨将有一个只读字段
x
。如果你想要一个setter,用@x.setter
来装饰它。你知道吗但我仍然认为你的想法是错误的。通常用矩形来操作要容易得多。如果您碰巧使用pygame,它有许多简洁的方法。只需使您的每个对象要么基于一个矩形类,要么有一个统一的方法来获取它(即,一个接口)。你知道吗
你会问,到底为什么要用长方形做圆球?这是因为使用矩形时,粗糙的碰撞检测成本很低(再次参见pygame的高效方法)。如果两个矩形不发生碰撞,那么由它们包围的形状复杂的对象也肯定不会发生碰撞。只有当包围的矩形发生碰撞时,才需要运行可能更昂贵的精确碰撞检查。你知道吗
你是说,这个?你知道吗
编辑: 好吧,我留下这个“答案”作为澄清。。。你知道吗
相关问题 更多 >
编程相关推荐