Python pygame精灵以恒定的线条移动

Python pygame精灵以恒定的线条移动,python,pygame,Python,Pygame,我正在尝试(糟糕地)用乒乓球这样的pygame编写一个非常简洁的程序,但我似乎一直在尝试垂直移动我的球拍。而且,当他们移动的时候。。。它们只是在不断地移动 #python代码 导入pygame,sys #屏幕宽度/高度 screen=pygame.display.set_模式((800600)) #背景图像 background\u image=pygame.image.load(“networks.jpg”).convert() blit(背景图像,[0,0]) #帧速率 clock=pyg

我正在尝试(糟糕地)用乒乓球这样的pygame编写一个非常简洁的程序,但我似乎一直在尝试垂直移动我的球拍。而且,当他们移动的时候。。。它们只是在不断地移动

#python代码
导入pygame,sys
#屏幕宽度/高度
screen=pygame.display.set_模式((800600))
#背景图像
background\u image=pygame.image.load(“networks.jpg”).convert()
blit(背景图像,[0,0])
#帧速率
clock=pygame.time.clock()
#划桨
paller_player1=pygame.Rect(5,50,5,60)
桨叶玩家2=pygame.Rect(790,50,5,60)
#进程播放器输入
尽管如此:
对于pygame.event.get()中的事件:
如果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]
#更新游戏状态逻辑
如果播放者1_向上:
桨叶球员1.y+=-50
如果播放机1_关闭:
桨叶球员1.y+=50
如果播放者2_向上:
桨叶球员2.y+=-50
如果播放机2_关闭:
桨叶球员2.y+=50
如果桨叶1.y<0:
桨叶球员1.y=0
如果桨叶2.y<0:
桨叶球员2.y=0
如果paller\u player1.y>screen.get\u height()-paller\u player1.height:
paller\u player1.y=屏幕。获取高度()-paller\u player1.height
如果paller\u player2.y>screen.get\u height()-paller\u player2.height:
paller\u player2.y=屏幕。获取高度()-paller\u player2.height
#渲染
pygame.draw.rect(屏幕,(0,0,0),桨式游戏机1)
pygame.draw.rect(屏幕,(0,0,0),桨式玩家2)
时钟滴答(50)
pygame.display.flip()

您需要在游戏循环中调用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)
为True时:
对于pygame.event.get()中的事件:
如果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]
#更新游戏状态逻辑
如果播放者1_向上:
桨叶球员1.y+=-50
如果播放机1_关闭:
桨叶球员1.y+=50
如果播放者2_向上:
桨叶球员2.y+=-50
如果播放机2_关闭:
桨叶球员2.y+=50
如果桨叶1.y<0:
桨叶球员1.y=0
如果桨叶2.y<0:
桨叶球员2.y=0
如果paller\u player1.y>screen.get\u height()-paller\u player1.height:
paller\u player1.y=屏幕。获取高度()-paller\u player1.height
如果paller\u player2.y>screen.get\u height()-paller\u player2.height:
paller\u player2.y=屏幕。获取高度()-paller\u player2.height
screen.blit(背景图像[0,0])#将blit移到这里
pygame.draw.rect(屏幕,(0,0,0),桨式游戏机1)
pygame.draw.rect(屏幕,(0,0,0),桨式玩家2)

您需要在游戏循环中调用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)
为True时:
对于pygame.event.get()中的事件:
如果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]
#更新游戏状态逻辑
如果播放者1_向上:
桨叶球员1.y+=-50
如果播放机1_关闭:
桨叶球员1.y+=50
如果播放者2_向上:
桨叶球员2.y+=-50
如果播放机2_关闭:
桨叶球员2.y+=50
如果桨叶1.y<0:
桨叶球员1.y=0
如果桨叶2.y<0:
桨叶球员2.y=0
如果paller\u player1.y>screen.get\u height()-paller\u player1.height:
paller\u player1.y=屏幕。获取高度()-paller\u player1.height
如果paller\u player2.y>screen.get\u height()-paller\u player2.height:
paller\u player2.y=屏幕。获取高度()-paller\u player2.height
screen.blit(背景图像[0,0])#将blit移到这里
pygame.draw.rect(屏幕,(0,0,0),桨式游戏机1)
pygame.draw.rect(屏幕,(0,0,0),桨式玩家2)

我不是Pygame用户,但我会想象你需要在循环中闪烁背景图像,以覆盖之前的挡板位置。这不是Pygame精灵,这是一个普通的矩形图。我不是Pygame用户,但我会想象你需要在循环中闪烁背景图像,这不是pygame spirit,这是一个普通的矩形图,。谢谢:)我昨天大部分时间都在编写代码。。。我所需要的只是换一个小台词-哈哈@格林:建议你读一下谢谢:)我昨天大部分时间都在写代码。。。我所需要的只是换一个小台词-哈哈@格林:建议你读一读