Pygame乒乓游戏精灵无法移动且退出报video system not initialized错误
问题修复方案
1. 精灵无法移动的问题
存在两处逻辑错误:
- 混淆了
event.type和event.key属性:KEYDOWN/KEYUP属于事件类型,存放在event.type中,具体按下的按键值存放在event.key里,原代码判断按键时仍然调用event.type,自然匹配不到任何按键。 - 按键响应逻辑写反:应该是按键按下(
KEYDOWN事件)时给移动速度赋值,按键松开(KEYUP事件)时将移动速度清零,原代码逻辑完全反转,无法触发移动。
2. 退出时报pygame.error: video system not initialized的问题
原代码在QUIT事件的处理逻辑里调用pygame.quit()后,没有立刻终止主循环,循环后续仍然会执行pygame.display.update(),此时pygame的视频系统已经被销毁,就会抛出该错误。需要把pygame.quit()放到主循环的外面,等所有逻辑执行完再调用。
修正后可正常运行的代码如下,额外增加了边界判断逻辑,避免球拍移出屏幕:
import pygame # Initialization pygame.init() # Screen, Caption and Icon width = 800 height = 600 screen = pygame.display.set_mode((width, height)) pygame.display.set_caption('PyGame') icon = pygame.image.load('ping-pong.png') pygame.display.set_icon(icon) # Create Rects player = pygame.Rect((5, 230), (10, 120)) opponent = pygame.Rect((785, 230), (10, 120)) # Game Variables playerY_change = 0 opponentY_change = 0 game_over = False while not game_over: # Coloring the Screen screen.fill((27, 35, 43)) # Draw Rects pygame.draw.rect(screen, (255,255,255), player) pygame.draw.rect(screen, (255,255,255), opponent) # Managing Events for event in pygame.event.get(): if event.type == pygame.QUIT: game_over = True if event.type == pygame.KEYDOWN: if event.key == pygame.K_UP: opponentY_change -= 3 if event.key == pygame.K_DOWN: opponentY_change += 3 if event.key == pygame.K_w: playerY_change -= 3 if event.key == pygame.K_s: playerY_change += 3 if event.type == pygame.KEYUP: if (event.key == pygame.K_UP) or (event.key == pygame.K_DOWN): opponentY_change = 0 if (event.key == pygame.K_w) or (event.key == pygame.K_s): playerY_change = 0 # 边界判断 if player.top <= 0: player.top = 0 if player.bottom >= height: player.bottom = height if opponent.top <= 0: opponent.top = 0 if opponent.bottom >= height: opponent.bottom = height # Moving my sprites player.y += playerY_change opponent.y += opponentY_change # Updating the screen on every iter of loop pygame.display.update() # 主循环结束后再退出pygame pygame.quit()
内容的提问来源于stack exchange,提问作者Malik
相关产品推荐
相关产品推荐

