我不知道这个错误是从哪里来的

问题描述

我正在尝试播放我的代码,但我收到此错误“视频系统未初始化”,我什至不知道这可能来自何处。到目前为止,这是我的代码

#Imports
import sys as pygame
import pygame as pg
from random import randint,uniform
vec = pg.math.Vector2
#Player variables
WIDTH = 1200
 HEIGHT = 660
FPS = 60
WHITE = (255,255,255)
BLACK = (0,0)
RED = (255,0)
GREEN = (0,0)
BLUE = (0,255)
 YELLOW = (255,0)
DARKGRAY = (40,40,40)






#----------------------------------------------------------------------------
# Player properties
Player_SIZE = 32
MAX_SPEED = 5
MAX_FORCE = 0.5
APPROACH_RADIUS = 100
all_sprites = pg.sprite.Group()


class Player(pg.sprite.Sprite):
def __init__(self):
    self.groups = all_sprites
    pg.sprite.Sprite.__init__(self,self.groups)
    self.image = pg.Surface((Player_SIZE,Player_SIZE))
    self.image.fill(BLUE)
    self.rect = self.image.get_rect()
    self.pos = vec(randint(0,WIDTH),randint(0,HEIGHT))
    self.vel = vec(MAX_SPEED,0).rotate(uniform(0,360))
    self.acc = vec(0,0)
    self.rect.center = self.pos

def follow_mouse(self):
    mpos = pg.mouse.get_pos()
    self.acc = (mpos - self.pos).normalize() * 0.5

def seek(self,target):
    self.desired = (target - self.pos).normalize() * MAX_SPEED
    steer = (self.desired - self.vel)
    if steer.length() > MAX_FORCE:
        steer.scale_to_length(MAX_FORCE)
    return steer

def seek_with_approach(self,target):
    self.desired = (target - self.pos)
    dist = self.desired.length()
    self.desired.normalize_ip()
    if dist < APPROACH_RADIUS:
        self.desired *= dist / APPROACH_RADIUS * MAX_SPEED
    else:
        self.desired *= MAX_SPEED
    steer = (self.desired - self.vel)
    if steer.length() > MAX_FORCE:
        steer.scale_to_length(MAX_FORCE)
    return steer

def update(self):
    # self.follow_mouse()
    self.acc = self.seek_with_approach(pg.mouse.get_pos())
    # equations of motion
    self.vel += self.acc
    if self.vel.length() > MAX_SPEED:
        self.vel.scale_to_length(MAX_SPEED)
    self.pos += self.vel
    if self.pos.x > WIDTH:
        self.pos.x = 0
    if self.pos.x < 0:
        self.pos.x = WIDTH
    if self.pos.y > HEIGHT:
        self.pos.y = 0
    if self.pos.y < 0:
        self.pos.y = HEIGHT
    self.rect.center = self.pos



#Enemy properties
MAX_SPEED1 = 4.5
ppos = pg.mouse.get_pos()

class Enemy(pg.sprite.Sprite):
def __init__(self):
    self.groups = all_sprites
    pg.sprite.Sprite.__init__(self,Player_SIZE))
    self.image.fill(RED)
    self.rect = self.image.get_rect()
    self.pos = vec(randint(0,HEIGHT))
    self.vel = vec(MAX_SPEED1,0)
    self.rect.center = self.pos

def follow_player(self):
    
    self.acc = (ppos - self.pos).normalize() * 0.5

def seek(self,target):
    self.desired = (ppos - self.pos).normalize() * MAX_SPEED1
    steer = (self.desired - self.vel)
    if steer.length() > MAX_FORCE:
        steer.scale_to_length(MAX_FORCE)
    return steer

def seek_with_approach(self,target):
    self.desired = (ppos() - self.pos)
    dist = self.desired.length()
    self.desired.normalize_ip()
    if dist < APPROACH_RADIUS:
        self.desired *= dist / APPROACH_RADIUS * MAX_SPEED
    else:
        self.desired *= MAX_SPEED1
    steer = (self.desired - self.vel)
    if steer.length() > MAX_FORCE:
        steer.scale_to_length(MAX_FORCE)
    return steer

def update(self):
    # self.follow_mouse()
    self.acc = self.seek_with_approach(Player)
    # equations of motion
    self.vel += self.acc
    if self.vel.length() > MAX_SPEED1:
        self.vel.scale_to_length(MAX_SPEED1)
    self.pos += self.vel
    if self.pos.x > WIDTH:
        self.pos.x = 0
    if self.pos.x < 0:
        self.pos.x = WIDTH
    if self.pos.y > HEIGHT:
        self.pos.y = 0
    if self.pos.y < 0:
        self.pos.y = HEIGHT
    self.rect.center = self.pos
 #----------------------------------------------------------------------------





    

#display
 pg.init()
  screen = pg.display.set_mode((WIDTH,HEIGHT))
  clock = pg.time.Clock()
 pg.display.set_caption("Maze")
Icon = pg.image.load('logo.png')
 pg.display.set_icon(Icon)

#Main loop
all_sprites = pg.sprite.Group()
Player()
Enemy()
paused = False
running = True
while running:
clock.tick(FPS)
for event in pg.event.get():
    if event.type == pg.QUIT:
        running = False
    if event.type == pg.KEYDOWN:
        
        if event.key == pg.K_SPACE:
            paused = not paused
        
        if event.key == pg.K_m:
            Player()
            Enemy()

if not paused:
    all_sprites.update()

screen.fill(DARKGRAY)
all_sprites.draw(screen)

pg.display.flip()

 pg.quit()

我知道它很长,但我真的不知道问题可能来自哪里。 有什么帮助吗? (缩进没有问题,只是在这里粘贴代码有问题)

解决方法

您必须先调用pygame.init(),然后才能使用pygame.mouse.get_pos();或者,就您而言,pg.init(),因为您将 pygame 作为 pg 导入。

我不知道你为什么将 sys 导入为 pygame;这很令人困惑。

此外,在游戏开始后获取鼠标位置也无济于事。每次您想知道鼠标位置时,都应该再次调用 .mouse.get_pos()