当球碰撞桨2时,它没有在正确的位置界定。

时间:2015-10-05 16:14:03

标签: python pygame

如代码所示,当球的右侧<=桨的左侧时,它将有界。但它没有。以下是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]碰撞。

1 个答案:

答案 0 :(得分:0)

当球接近paddle[1](右桨)时,实例接触它实际上会穿透一点。这意味着self.right>= paddle[1].left符合预期。但是,永远不会达到处理水平反弹的代码。这是由于满足垂直弹跳外部if条件且水平反弹位于elif。此外,由于您要将topbot==进行比较,因此垂直内部if条件可能也不会评估为True。什么都不会发生。