Я пытаюсь сделать игру, используя Pygame.Но программа закрывается сразу после запуска.
Я следовал учебному пособию в YT и скопировал функцию точно так, как было, но все равно получил ошибку.
Вот код:
import pygame
import sys
import random as rd
pygame.init()
width = 800
height = 600
red = (255, 0, 0)
black = (0, 0, 0)
blue = (0, 0, 255)
playerPosition = [400, 500]
playerSize = 35
enemySize = 50
enemyPosition = [rd.randint(0, width - enemySize), 0]
enemySpeed = 10
screen = pygame.display.set_mode((width, height))
title = pygame.display.set_caption("Dodge Game by Ishak")
def collision(playerPosition, enemyPosition):
playerX = playerPosition[0] # player x coordinate
playerY = playerPosition[1] # player y coordinate
enemyX = enemyPosition[0] # enemy x coordinate
enemyY = enemyPosition[1] # enemy y coordinate
if (enemyX >= playerX and enemyX < (playerX + playerSize)) or (playerX >= enemyX and playerX < (enemyX + enemySize)):
if (enemyY >= playerY and enemyY < (playerY + playerSize)) or (playerY >= enemyY and playerY < (enemyY + enemySize)):
return False
return True
clock = pygame.time.Clock()
gameOver = False
# game loop
while not gameOver:
# QUIT
for event in pygame.event.get():
if event.type == pygame.QUIT:
sys.exit()
# keyboard
if event.type == pygame.KEYDOWN:
x = playerPosition[0]
y = playerPosition[1]
if event.key == pygame.K_RIGHT:
x += 13
elif event.key == pygame.K_LEFT:
x -= 13
playerPosition = [x, y]
if enemyPosition[1] >= 0 and enemyPosition[1] < height:
enemyPosition[1] += enemySpeed
else:
enemyPosition[0] = rd.randint(0, width - enemySize) # sets a random postion of the enemy
enemyPosition[1] = 0
if collision(playerPosition, enemyPosition):
gameOver = True
screen.fill(black)
pygame.draw.rect(screen, red, (playerPosition[0], playerPosition[1], playerSize, playerSize)) # player shape
pygame.draw.rect(screen, blue, (enemyPosition[0], enemyPosition[1], enemySize, enemySize)) # enemy shape
clock.tick(30)
pygame.display.update()
Эта проблема возникла после того, как я добавил функцию столкновения и реализовал ее в основном игровом цикле, но я не могу понять, что с ней не так.