【问题标题】:pygame.display.update(); pygame.error: video system not initialized [duplicate]pygame.display.update(); pygame.error:视频系统未初始化[重复]
【发布时间】:2021-06-15 13:23:27
【问题描述】:

这是我的未开发的 pygame 乒乓球游戏,但我的精灵(玩家和对手)不动,在提供键盘输入时.当我退出程序时,它会喊出 error pygame.error: video system not initialized。我的 pygame 是最新的 1.9.6 版本,所有文件都是最新的。但是,我确信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()

【问题讨论】:

    标签: python python-3.x pygame


    【解决方案1】:

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

    首先,移动不起作用,因为为了区分键,您使用event.type 来比较它应该在哪里event.key。例如尝试:

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多