так что я только начинаю изучать кодирование игр с использованием Pygame, и я работаю над переделкой змеи с нуля. Но я столкнулся с необычной проблемой, связанной с задержкой события ввода с клавиатуры, и из того, что я искал, это было от pygame.draw.rect()
в пределах цикла for
, как показано:
for row in range(25):
for column in range(25):
pygame.draw.rect(screen, blue,
[(margin + (width+margin) * row,
margin + (height+margin) * column),
(width, height)])
grid[row][column] = 0
wall1 = pygame.draw.rect(screen, red,
[(margin + (width+margin) * row,
margin),
(width, height)])
grid[row][0] = 9
wall2 = pygame.draw.rect(screen, red,
[(margin,
margin + (height+margin) * column),
(width, height)])
grid[0][column] = 9
wall3 = pygame.draw.rect(screen, red,
[(margin + (width+margin) * row,
margin + 24*(height+margin)),
(width, height)])
grid[row][24] = 9
wall4 = pygame.draw.rect(screen, red,
[(margin + 24*(width+margin),
margin + (height+margin) * column),
(width, height)])
grid[24][column] = 9
Я использовал следующие переменные:
width = 20
height = 20
margin = 5
red = (255, 0, 0)
green = (0, 255, 0)
blue = (0, 0, 255)
white = (255, 255, 255)
black = (0, 0, 0)
grey = (205, 205, 205)
yellow = (255, 255, 0)
startX = 6
startY = 6
moveX = 1
moveY = 0
grid = []
for row in range(25):
grid.append([])
for column in range(25):
grid[row].append(0)
Я придумал решение, используя unionall()
, но я не знаю, как получить rect
каждой и каждой нарисованной rect
в цикле. Другое решение было использовать pygame.surfarray.make_surface()
, но я понятия не имею, как его использовать. Я также попытался установить FPS на 60, используя pygame.time.Clock().tick
и pygame.time.delay(100)
, но ни один из них не работал. Помогите пожалуйста!