如何用方向键移动挡板?

1 投票
1 回答
1202 浏览
提问于 2025-04-18 01:32

我正在尝试让你可以用方向键来移动乒乓球游戏中的球拍。我已经写了大部分代码,但我对该传递什么给移动球拍的函数感到困惑。

这是我的代码(这是老师给我们的基础代码,我们只是修改了一些部分):

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()

在循环中,"paddle1.update_paddle()" 这一行,我需要传递一些参数来让球拍移动。但我在这里感到困惑。(我刚开始学习python!)

这是 update_paddle 函数的样子:

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

所以你可以看到,update_paddle 只是通过一个输入值来增加球拍的 x 位置。但我困惑的是,我到底应该把什么作为输入值呢?

1 个回答

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)

撰写回答