import pygame, sys, random
W_W = 1000 # ширина окна (ось x)
W_H = 500 # высота окна (ось y)
m = W_H // 20
n = W_W // 20
grid = [[0] * n for i in range(m)]
for i in range(m):
for j in range(n):
rand = random.randint(1, 10)
if rand < 3:
grid[i][j] = pygame.Rect(j * 20, i * 20, 20, 20)
SPEED = 10
SIZE = 20
FPS = 10
fpsClock = pygame.time.Clock()
UP = (0, -1)
DOWN = (0, 1)
LEFT = (-1, 0)
RIGHT = (1, 0)
def finish():
pygame.quit()
sys.exit(0)
Display = pygame.display.set_mode((W_W, W_H))
# заранее прописываем цвета, которые используем в игре (если нужно)
# данные о цветах берём в RGB формате (примеры основных цветов ниже)
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
GREEN = (0, 255, 0)
BLUE = (0, 0, 255)
# переменная, куда мы сохранили/загрузили картинку для фона (картинка должна быть в
# одной папке с программой) – проверяем правильно ли написали имя своей картинки и расширение
# переменная, куда мы сохранили/загрузили картинку для персонажа (картинка должна быть в
# одной папке с программой) – проверяем правильно ли написали имя своей картинки и расширение
hero = pygame.image.load("kek.png")
hero = pygame.transform.scale(hero, (20, 20)) # изменили размер картинки персонажа
hero_pos = hero.get_rect()
DISPLAY = pygame.display.set_mode((W_W, W_H))
# добавили имя окна (будет видно в верхнем левом углу
pygame.display.set_caption("PACMAN")
# количество кадров в секунду
FPS = 60
# отслеживаем время
fpsClock = pygame.time.Clock()
# мы сами задали/написали главную функцию с названием main (можно и другое название)
def main():
# цикл с условием – бесконечный, так как всегда равен Истине (True)
while True:
# Положение персонажа в координатах таблицы
y, x = hero_pos.x // 20, hero_pos.y // 20
Display.fill((0, 0, 0))
for i in range(m):
for j in range(n):
if grid[i][j]:
pygame.draw.rect(Display, (255, 0, 0), grid[i][j])
for event in pygame.event.get(): # для каждого существующего действия извне
if event.type == pygame.QUIT: # если игрок нажал на крестик
finish()
keys = pygame.key.get_pressed()
if x > 0:
if keys[pygame.K_w] and grid[x-1][y] == 0:
hero_pos.move_ip(0, -20)
if x < m - 1:
if keys[pygame.K_s] and grid[x+1][y] == 0:
hero_pos.move_ip(0, 20)
if y > 0:
if keys[pygame.K_a] and grid[x][y - 1] == 0:
hero_pos.move_ip(-20, 0)
if y < n - 1:
if keys[pygame.K_d] and grid[x][y+1] == 0:
hero_pos.move_ip(20, 0)
DISPLAY.blit(hero, hero_pos) # соединяем прямоугольник персонажа и картинку
# обновляем окно игры
pygame.display.update()
# возращаемся к нчалу цикла, после времени (выставили в FPS)
fpsClock.tick(FPS)
pygame.display.update()
fpsClock.tick(FPS)
# ОТСЮДА НАЧИНАЕТСЯ РАБОТА ПРОГРАММЫ
main() # вызвали функцию, которую ранее прописали, ждём пока не выйдем из цикла
pygame.quit() # корректно завершаем работу с библиотекой pygame
sys.exit() # корректно завершаем работу программы, если всё ок, то 0 выдаст функция