Похоже, ошибка, с которой вы столкнулись, вызвана тем, что функция pygame.display.flip() вызывается до того, как режим отображения был установлен с помощью pygame.display.set_mode().
Чтобы решить эту проблему, вам нужно переместить вызов pygame.display.set_mode() перед вызовом pygame.display.flip(). Это гарантирует, что режим отображения будет установлен до обновления экрана, и устранит ошибку «видеосистема не инициализирована».
Вот пример того, как вы можете изменить код, чтобы исправить ошибку:
import pygame
# Initialize pygame
pygame.init()
# Set window size and title
screen_width, screen_height = 640, 480
screen = pygame.display.set_mode((screen_width, screen_height))
pygame.display.set_caption('Flappy Triangle')
# Set colors
red = pygame.Color(255, 0, 0)
blue = pygame.Color(0, 0, 255)
white = pygame.Color(255, 255, 255)
# Set font
font = pygame.font.Font(None, 36)
# Set main character size
character_size = 50
# Set gravity
gravity = 0.25
# Set main character initial position
character_x, character_y = screen_width / 2, screen_height / 2
# Set main character speed
character_speed = 0
# Set game over flag
game_over = False
# Set points
points = 0
# Set clock to control frame rate
clock = pygame.time.Clock()
while not game_over:
# Handle events
for event in pygame.event.get():
if event.type == pygame.QUIT:
game_over = True
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_SPACE:
character_speed = -5
points += 1 # Increase points by 1 for each jump
# Update main character position
character_y += character_speed
character_speed += gravity
# Check if main character has reached the bottom or top of the screen
if character_y > screen_height or character_y < 0:
points = 0 # Reset points to 0 when main character dies
game_over = True
# Draw the screen
screen.fill((0, 0, 0))
pygame.draw.polygon(screen, blue, [[character_x, character_y], [character_x + character_size, character_y + character_size / 2], [character_x, character_y + character_size]]) # n.m.
pygame.draw.line(screen, red, (0, 0), (screen_width, 0), 5)
pygame.draw.line(screen, red, (0, screen_height), (screen_width, screen_height), 5)
points_text = font.render(f'Points: {points}', True, white)
screen.blit(points_text, (10, 10))
# Limit frame rate to 60 FPS
clock.tick(60)
# Update the screen
pygame.display.flip()
# Quit pygame