pygame.display.update(); pygame.error: 视频系统未初始化

时间:2021-06-15 13:23:27

标签: python python-3.x pygame

这是我的未开发的 pygame 乒乓游戏,但是我的精灵(玩家和对手)不动,在提供键盘输入时.当我退出程序时,它会发出错误 pygame.error: video system not initialized。我的 pygame 是最新的 1.9.6 版本,所有文件都更新到 daee。但是,我确定 pygame.display 正在生成此错误,但我什至尝试过 pygame.display.init() 并且也没有奏效:(

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
            pygame.quit()
        if event.type == pygame.KEYUP:
            if event.type == pygame.K_UP:
                opponentY_change -= 3
            if event.type == pygame.K_DOWN:
                opponentY_change += 3
            if event.type == pygame.K_w:
                playerY_change -= 3
            if event.type == pygame.K_s:
                playerY_change += 3
        if event.type == pygame.KEYDOWN:
            if (event.type == pygame.K_UP) or (event.type == pygame.K_DOWN):
                opponentY_change = 0
            if (event.type == pygame.K_w) or (event.type == pygame.K_s):
                playerY_change = 0

    # Moving my sprites
    player.y += playerY_change
    opponent.y += opponentY_change
    # Updating the screen on every iter of loop
    pygame.display.update()

1 个答案:

答案 0 :(得分:0)

这里,你有两个不同的问题:

首先,移动不起作用,因为要区分键,您可以使用 event.type 来比较它应该位于 event.key 的位置。尝试例如:

if event.key == pygame.K_UP:
   opponentY_change -= 3

另一个问题是,当游戏结束时,您使用 pygame.quit(),但稍后在循环中使用 pygame.display.update()。您应该将显示更新放在循环的开始