pygame精灵持续移动

2024-09-23 22:26:05 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试(糟糕地)用像Pong这样的pygame编写一个非常简洁的程序,但我似乎被困在试图垂直移动我的桨上。而且,当他们移动的时候。。。它们只在同一条线上移动。你知道吗

Example Image

#python code
import pygame, sys

#Screen Width/Height
screen = pygame.display.set_mode((800,600))

#Background Image
background_image = pygame.image.load("tennis.jpg").convert()
screen.blit(background_image, [0,0])

#Frame Rate
clock = pygame.time.Clock()

#Paddles
paddle_player1 = pygame.Rect(5,50,5,60)
paddle_player2 = pygame.Rect(790,50,5,60)

#Process Player Input
while True:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

       player1_up = pygame.key.get_pressed()[pygame.K_w] 
       player1_down = pygame.key.get_pressed()[pygame.K_s]

       player2_up = pygame.key.get_pressed()[pygame.K_UP]
       player2_down = pygame.key.get_pressed()[pygame.K_DOWN]

#Updating Game State Logic
        if player1_up:
            paddle_player1.y += -50
        if player1_down:
            paddle_player1.y += 50
        if player2_up:
            paddle_player2.y += -50
        if player2_down:
            paddle_player2.y += 50

        if paddle_player1.y < 0:
            paddle_player1.y = 0
        if paddle_player2.y < 0:
            paddle_player2.y = 0

    if paddle_player1.y > screen.get_height() - paddle_player1.height:
        paddle_player1.y = screen.get_height() - paddle_player1.height
    if paddle_player2.y > screen.get_height() - paddle_player2.height:
        paddle_player2.y = screen.get_height() - paddle_player2.height

#Rendering
    pygame.draw.rect(screen,(0,0,0), paddle_player1)
    pygame.draw.rect(screen,(0,0,0), paddle_player2)


   clock.tick(50)
   pygame.display.flip()

Tags: keyimageeventgetifscreenpygamedown
1条回答
网友
1楼 · 发布于 2024-09-23 22:26:05

你需要在游戏循环中称你为blit,比如:

while True:
   for event in pygame.event.get():
      if event.type == pygame.QUIT:
         pygame.quit()
         sys.exit()

      player1_up = pygame.key.get_pressed()[pygame.K_w] 
      player1_down = pygame.key.get_pressed()[pygame.K_s]

      player2_up = pygame.key.get_pressed()[pygame.K_UP]
      player2_down = pygame.key.get_pressed()[pygame.K_DOWN]

  #Updating Game State Logic
      if player1_up:
         paddle_player1.y += -50
      if player1_down:
         paddle_player1.y += 50
     if player2_up:
         paddle_player2.y += -50
     if player2_down:
         paddle_player2.y += 50

     if paddle_player1.y < 0:
         paddle_player1.y = 0
     if paddle_player2.y < 0:
         paddle_player2.y = 0


  if paddle_player1.y > screen.get_height() - paddle_player1.height:
     paddle_player1.y = screen.get_height() - paddle_player1.height
  if paddle_player2.y > screen.get_height() - paddle_player2.height:
     paddle_player2.y = screen.get_height() - paddle_player2.height

  screen.blit(background_image, [0,0]) #move your blit here

  pygame.draw.rect(screen,(0,0,0), paddle_player1)
  pygame.draw.rect(screen,(0,0,0), paddle_player2)

相关问题 更多 >