这是我的未开发的 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()
答案 0 :(得分:0)
这里,你有两个不同的问题:
首先,移动不起作用,因为要区分键,您可以使用 event.type
来比较它应该位于 event.key
的位置。尝试例如:
if event.key == pygame.K_UP:
opponentY_change -= 3
另一个问题是,当游戏结束时,您使用 pygame.quit()
,但稍后在循环中使用 pygame.display.update()
。您应该将显示更新放在循环的开始。