乒乓球拍不动



我想使用W和S移动左桨,但是每当我点击键时桨不移动。我只学了几个月的python和几个星期的pygame,所以如果这是一个非常明显的错误,那就是为什么。

下面是主要的游戏循环:

while not x:
for event in pygame.event.get():
if event.type == pygame.QUIT: 
x = True #quits the game when you press X
if event.type == pygame.KEYUP: #makes start screen go away
if event.key == pygame.K_RETURN:
gamescreen() 

ball = Ball(window, white, 350, 220, 7)
p1Paddle = Paddle(window, blue, 50, 180, 10, 60)
p2Paddle = Paddle(window, red, 630, 180, 11, 60)
#moves the paddles
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_w: #supposed to make the paddle go up
p1Paddle.state = 'up'
print('up')

if event.type == pygame.KEYDOWN:
if event.key == pygame.K_s: #supposed to make the paddle go down
p1Paddle.state = 'down'
p1Paddle.move()
print('down')

pygame.display.update()
clock.tick(45)

这是桨函数/类

class Paddle:
def __init__(self, screen, colour, posX, posY, width, height):
self.screen = screen
self.colour = colour
self.posX = posX
self.posY = posY
self.width = width
self.height = height
self.state = 'stopped'
self.show()
def show(self):
pygame.draw.rect(self.screen, self.colour, (self.posX, self.posY, self.width, self.height))
def move(self):
if self.state == 'up':
self.posY -= 10
elif self.state == 'down':
self.posY += 10

(我还没有机会添加第二个桨的控制;一旦我解决了这个问题,我就会去那里。)它打印'上'和'下',所以我知道它在某种程度上是有效的。

您需要在应用程序循环之前而不是在应用程序循环中创建对象。但是你必须在应用程序循环中的每一帧中的新位置绘制对象:

p1Paddle = Paddle(window, blue, 50, 180, 10, 60)
p2Paddle = Paddle(window, red, 630, 180, 11, 60)
ball = Ball(window, white, 350, 220, 7)

while not x:
# handle events
for event in pygame.event.get():
if event.type == pygame.QUIT: 
x = True
# [...] more events

# clear screen
window.fill(0)
# draw objects
p1Paddle.show()
p2Paddle.show()
ball.show()
# update display
pygame.display.update()
clock.tick(45)

典型的PyGame应用程序循环必须:

  • 限制每秒帧数以限制pygame.time.Clock.tick
  • 的CPU使用
  • 通过调用pygame.event.pump()pygame.event.get()处理事件。
  • 根据输入事件和时间(分别为帧)更新游戏状态和对象位置
  • 清除整个显示或绘制背景
  • 绘制整个场景(blit所有对象)
  • 通过调用pygame.display.update()pygame.display.flip()更新显示

相关内容

  • 没有找到相关文章

最新更新