Если я правильно поняла проблему и твой код, то у тебя окружение вот в этой функции должно отрисовываться def draw_enviroment(screen) ?
Но это не единственная проблема. Отступы неправильные и много всяких ошибок
Тут ты извлекаешь то, что планировал? явно нет. Попробуй напечатать в консоль row, j и увидишь.
Проконтролируй значения j и ты поймешь выполняются ли твои условия или нет.
Я не эксперт в pygame, но у тебя странно заданы начальная и конечная точка в строках pygame.draw.line(screen, BLUE, j*32, i*32,j*32,i*32+32, 3)
Еще непонятно зачем задание “карты лабиринта” grid в отдельной функции def enviroment():.
grid же у тебя статична и никак не вычисляется и не меняется. Ее можно было и переменной в def draw_enviroment(screen) задать, а не вызывать.
import pygame
import random
pygame.init() # запуск pygame
# Задаем цвета
BLACK = (0, 0, 0)
WHITE = (255, 255, 255)
RED = (255, 0, 0)
BLUE = (0, 0, 255)
YELLOW=(255, 255, 0)
WIDTH = 800 # ширина игрового окна
HEIGHT = 600 # высота игрового окна
x_hero = 50
y_hero = 200
hero_speed = 10
hero_width = 50
hero_height = 50
maze_x = 50
maze_y = 0
run = True
screen = pygame.display.set_mode((WIDTH, HEIGHT)) # ширина и высота окна
pygame.display.set_caption("Pacman") # заголовок окна
#цикл игры
while run:
pygame.time.delay(100) # цикл выполняется каждую 0.1 сек
for event in pygame.event.get():
if event.type == pygame.QUIT:
run = False
keys = pygame.key.get_pressed()
# дижение героя
if keys[pygame.K_LEFT] and x_hero > 5 :
x_hero-=hero_speed
if keys[pygame.K_RIGHT] and x_hero < 800 - hero_width - 5 :
x_hero+=hero_speed
if keys[pygame.K_DOWN] and y_hero < 600 - hero_height - 5 :
y_hero+=hero_speed
if keys[pygame.K_UP] and y_hero > 5 :
y_hero-=hero_speed
screen.fill(BLACK)
pygame.draw.rect(screen , (YELLOW), (x_hero, y_hero , hero_width , hero_height))
'''for j in range(16):
for i in range(12):
pygame.draw.line(screen, BLUE, (maze_x, maze_y), (maze_x, maze_y + 50) , 3)
maze_y += 100
maze_x += 50'''
def enviroment():
grid = ((0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0),
(0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0),
(1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1),
(0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0),
(0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0),
(0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0),
(1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1),
(0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0),
(0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0),
(0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0),
(1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1),
(0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0),
(0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0),
(0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0),
(1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 1, 1, 3, 1, 1, 1, 1, 1, 3, 1),
(0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0),
(0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0),
(0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 0, 0, 2, 0))
return grid
def draw_enviroment(screen):
for i, row in enumerate(enviroment()):
for j in row:
if j == 1:
pygame.draw.line(screen, BLUE, (j*32, i*32),(j*32+32,i*32), 3)
pygame.draw.line(screen, BLUE, (j*32, i*32+32),(j*32+32,i*32+32), 3)
elif j == 2:
pygame.draw.line(screen, BLUE, (j*32, i*32), (j*32,i*32+32), 3)
pygame.draw.line(screen, BLUE, (j*32+32, i*32), (j*32+32,i*32+32), 3)
draw_enviroment(screen)
pygame.display.update()
pygame.quit()
Синии линии теперь рисует, но лабиринтом это явно не назовешь. У тебя с исходниками карты че т не то. Например, зачем значение 3, если оно игнорируется, как и ноль?