Ошибка имени при попытке создать спрайт с помощью pygame - PullRequest
1 голос
/ 21 апреля 2020

Я начинаю использовать Pygame. Моя первая задача - создать спрайт и заставить его двигаться. Пока у меня все хорошо, пока я не получу ошибку:

Traceback (most recent call last):
  File "C:\Users\tom\Documents\python\agame.py", line 33, in <module>
    YOU = Player(RED ,20, 30)
NameError: name 'RED' is not defined

Мой основной код:

import pygame
import sys
from player import Player
WINDOW_WIDTH = 800
WINDOW_HEIGHT = 600
init_result = pygame.init()
# Create a game window
game_window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT))
# Set title
pygame.display.set_caption("agame")

#game_running keeps loopgoing
game_running = True
while game_running:
    # Game content
    # Loop through all active events
    YOU = Player(RED ,20, 30)
    for event in pygame.event.get():
            #exit through the X button
            if event.type == pygame.QUIT:
                pygame.quit()
                sys.exit()
    #change background colour to white
    game_window.fill((255,255,255))


    #update display
    pygame.display.update()

Как вы можете видеть, это самый начало создания спрайта. Мой класс спрайтов:

import pygame

#creating sprite class
class Player(pygame.sprite.Sprite):
    def __init__(self, color, width, height):
        # Call the parent class (Sprite) constructor
        super().__init__()

        # Pass in the color of the Player, and its x and y position, width and height.
        # Set the background color
        self.image = pygame.Surface([width, height])
        self.image.fill(WHITE)
        self.image.set_colorkey(WHITE)

        # Draw player (a rectangle!)
        pygame.draw.rect(self.image, color, [0, 0, width, height])

Это было сделано в .py файле с именем player. Я следую учебным пособиям ЗДЕСЬ и вносю свои собственные изменения по мере того, как я go. Я не понимаю эту ошибку. Я очень новичок в Pygame, так что прости меня, если это очевидно.

1 Ответ

1 голос
/ 21 апреля 2020

Вы должны определить цвета RED и WHITE. Например:

RED = (255, 0, 0)
WHITE = (255, 255, 255)

Или создать pygame.Color объектов:

RED = pygame.Color("red")
WHITE = pygame.Color("white") 

Более того, вы должны использовать аргумент color в конструкторе Player:

class Player(pygame.sprite.Sprite):
    def __init__(self, color, width, height):
        # Call the parent class (Sprite) constructor
        super().__init__()

        # Pass in the color of the Player, and its x and y position, width and height.
        # Set the background color
        self.image = pygame.Surface([width, height])
        self.image.fill(color)
...