I dont know where this error is coming from

Viewed 40

Im trying to play my code but i get this error 'video system not initialized' and i dont even know where that could be coming from. Here is my code so far:

#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, 0)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
 YELLOW = (255, 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, self.groups)
    self.image = pg.Surface((Player_SIZE, Player_SIZE))
    self.image.fill(RED)
    self.rect = self.image.get_rect()
    self.pos = vec(randint(0, WIDTH), randint(0, HEIGHT))
    self.vel = vec(MAX_SPEED1, 0).rotate(uniform(0, 360))
    self.acc = vec(0, 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()

I know it's long but Ireally dont know where the problem could be coming from. Any help? (There is no problem with the indent im only having trouble pasting the code here)

1 Answers

You have to call pygame.init() before you can use pygame.mouse.get_pos(); or, in your case, pg.init(), since you imported pygame as pg.

I don't know why you import sys as pygame; that quite confusing.

Also, getting the mouse position once that the start of your game is not helpful. Everytime you want to know the mouse position, you should call .mouse.get_pos() again.

Related