[英]Paddles in pong aren't moving
我想使用 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()
更新顯示
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.