如代码所示,当球的右侧<=桨的左侧时,它将有界。但它没有。以下是Ball类的代码,其中包含有关ball的所有信息。
class Ball:
def setDim(self):
self.top = self.y
self.bot = self.y + self.height
self.left = self.x
self.right = self.x + self.width
# define moveBall(self) to display ball objectives
def moveBall(self, paddles):
global score1, score2
self.setDim()
if self.x >= 250:
if (self.left <= paddles[1].right) and (self.right>= paddles[1].left) :
if ((int(self.top) == int(paddles[1].bot) or int(self.bot) == int(paddles[1].top)) and (self.ax > 0)):
self.ay = -self.ay
elif (self.top <= paddles[1].bot) and (self.bot >= paddles[1].top):
if (int(self.right) >= paddles[1].left) and (self.ax > 0):
self.ax = -self.ax
self.x += self.ax * self.speed
self.y += self.ay * self.speed
window.blit(self.ball_surf, (self.x, self.y))
我只显示球的代码片与桨2 [2]碰撞。
答案 0 :(得分:0)
当球接近paddle[1]
(右桨)时,实例接触它实际上会穿透一点。这意味着self.right
将>=
paddle[1].left
符合预期。但是,永远不会达到处理水平反弹的代码。这是由于满足垂直弹跳外部if
条件且水平反弹位于elif
。此外,由于您要将top
和bot
与==
进行比较,因此垂直内部if
条件可能也不会评估为True。什么都不会发生。