Без запуска вашего кода или без трассировки стека того, где возникает проблема, нам нужно сначала отладить код для вас. Поэтому было бы полезно добавить к вашим вопросам полную трассировку стека. Однако я почти уверен, что есть две проблемы, которые вам следует решить.
pygame.display.update()
должно быть правильно отнесено к while
l oop вашего основного игрового события l oop. Во-вторых, pygame.init()
должен запускаться перед любой другой инициализацией (или, по крайней мере, так меня учили годами, и каждый пример указывает на)
Попробуйте это, я думаю он решает вашу проблему:
# Pygame development 4
# Focus on making code object oriented
# Introduce classes and objects into our code
# Gain access to the pygame library
import pygame
pygame.init()
# Size of the screen
SCREEN_TITLE = 'Crossy RPG'
SCREEN_WIDTH = 500
SCREEN_HEIGHT = 500
# Colors according to RGB codes
WHITE_COLOR = (255, 255, 255)
BLACK_COLOR = (0, 0 , 0)
# Clock used to update game events and frames
clock = pygame.time.Clock()
pygame.font.init()
font = pygame.font.SysFont('comicsans', 75)
class Game:
# Typical rate of 60, equivalent to fps
TICK_RATE = 60
# Initializer for the game class to set up the width, height, and title
def __init__(self, title, width, height):
self.title = title
self.width = width
self.height = height
# Create the window of specified size in white to display the game
self.game_screen = pygame.display.set_mode((width, height))
# Set the game window color to white
self.game_screen.fill(WHITE_COLOR)
pygame.display.set_caption(title)
def run_game_loop(self):
is_game_over = False
# Main game loop, used to update all gameplay suh as movement, check, and graphics
# Runs unit is_game_over = True
while not is_game_over:
# A loop to get a;l of the events occuring at any given time
# Events are most often mouse movement, mouse and button clicks, or eit events
for event in pygame.event.get():
# If we have a quite type event(exit out) then exit out of the game loop
if event.type == pygame.QUIT:
is_game_over = True
print(event)
# Update all game graphics
pygame.display.update()
# Tick the clock to update everything within the game
clock.tick(self.TICK_RATE)
new_game = Game(SCREEN_TITLE, SCREEN_WIDTH, SCREEN_HEIGHT)
new_game.run_game_loop()
pygame.quit()
Это тоже похоже на школьное задание, а не на онлайн-курс (но здесь я могу ошибаться) , тем не менее я ' Оставлю этот совет, если я прав. Я настоятельно советую, если вы столкнетесь с проблемами, попросите совета у учителя. Поскольку есть всегда причина, по которой учителя ставят вам задачу / задачу, которую нужно решить. Он учит вас новейшим методам, которые вы изучили в классе, и если вы не можете решить проблему с помощью предоставленных вам инструментов - вы, скорее всего, не усвоили основы, которые были изучены, - и вам действительно стоит повторить некоторые шаги.