如何用箭头键移动球拍?

时间:2014-04-06 04:12:35

标签: python pygame

我试图制作它,以便您可以使用箭头键移动球拍(进行乒乓球比赛)。我已经拥有了大部分代码,但我对于将传递给将移动paddle的函数的内容感到困惑。

这是我的代码(这是我们的教师给我们的基本代码,我们只修改了部分代码):

import math
import random
import sys, pygame
from pygame.locals import *

import ball
import colors
import paddle

# draw the scene
def draw(screen, ball1, paddle1) :
   screen.fill((128, 128, 128))
   ball1.draw_ball(screen)
   paddle1.draw_paddle(screen)

#function to start up the main drawing
def main():

   pygame.init()
   width = 600
   height = 600
   screen = pygame.display.set_mode((width, height))

   ball1 = ball.Ball(300, 1, 40, colors.RED)
   paddle1 = paddle.Paddle(100, 575, colors.BLUE, 100, 20)

   while 1:
      for event in pygame.event.get():
         if event.type == QUIT: sys.exit()
         elif event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RIGHT:
               paddle1.update_paddle()
            if event.key == pygame.K_LEFT:
               paddle1.update_paddle()

      draw(screen, ball1, paddle1)
      pygame.display.flip()

if __name__ == '__main__':
   main()

在while循环中,它表示" paddle1.update_paddle()",我需要传递一些参数以使paddle移动。但这是我困惑的地方。 (我刚开始学习python!)

这是update_paddle函数的样子:

 def update_paddle(self, dx):
      self.x += dx

正如您所看到的,update_paddle只是将paddle的x位置增加一个输入值。但令我困惑的是,我究竟将其作为输入值放在什么位置?

1 个答案:

答案 0 :(得分:0)

也许你可以这样做:

def update_paddle(self, dir, dx):
    if dir=='left':
        self.x -= dx
    elif dir=='right':
        self.x += dx

然后你就可以做到:

paddle1.update_paddle('left',5)
paddle2.update_paddle('right',3)