при запуске кода вместо игры змейка запускается черное окно
import pygame
from random import randrange
RES=800
SIZE=50
x,y=randrange(0,RES,SIZE),randrange(0,RES,SIZE)
apple=randrange(0,RES,SIZE),randrange(0,RES,SIZE)
length=1
snake=[(x,y)]
dx,dy=0,0
fps=3
pygame.init()
(5, 0)
sc=pygame.display.set_mode([RES,RES])
clock=pygame.time.Clock()
while True:
sc.fill(pygame.Color("black"))
[(pygame.draw.rect(sc,pygame.Color("green"),(i,j,SIZE -2,SIZE -2)))for i,j in snake]
pygame.draw.rect(sc,pygame.Color("red"),(*apple,SIZE,SIZE))
x+=dx*SIZE
y+=dy*SIZE
snake.append((x,y))
snake=snake[-length:]
if snake[-1]==apple:
apple=randrange(0,RES,SIZE),randrrange(0,RES,SIZE)
length+=1
fps+=1
if x < 0 or x > RES - SIZE or y < 0 or y > RES - SIZE:
break
if len(snake) !=len(set(snake)):
break
pygame.display.flip(
clock.tick(fps)
for event in pygame.event.get():
if event.type==pygame.QUIT:
exit()
key=pygame.key.get_pressed()
if key[pygame.K_w]:
dx,dy=0,-1
if key[pygame.K_s]:
dx,dy=0,-1
if key[pygame.K_a]:
dx,dy=-1,0
if key[pygame.K_d]:
dx,dy=1,0
Ответы (1 шт):
Автор решения: No end music
→ Ссылка
В 24 строчке у вас ошибка вместо randrrange должно быть randrange
и в 31 строчке у вас открыты и не закрыты скобки pygame.display.flip( - закройте их, так же в это строчке у вас нарушена табуляция, Строка pygame.display.flip() идёт сразу после break, а так нельзя.
Вот исправный код:
import pygame
from random import randrange
RES=800
SIZE=50
x,y=randrange(0,RES,SIZE),randrange(0,RES,SIZE)
apple=randrange(0,RES,SIZE),randrange(0,RES,SIZE)
length=1
snake=[(x,y)]
dx,dy=0,0
fps=3
pygame.init()
(5, 0)
sc=pygame.display.set_mode([RES,RES])
clock=pygame.time.Clock()
while True:
sc.fill(pygame.Color("black"))
[(pygame.draw.rect(sc,pygame.Color("green"),(i,j,SIZE -2,SIZE -2)))for i,j in snake]
pygame.draw.rect(sc,pygame.Color("red"),(*apple,SIZE,SIZE))
x+=dx*SIZE
y+=dy*SIZE
snake.append((x,y))
snake=snake[-length:]
if snake[-1]==apple:
apple=randrange(0,RES,SIZE),randrange(0,RES,SIZE) # 24 строка
length+=1
fps+=1
if x < 0 or x > RES - SIZE or y < 0 or y > RES - SIZE:
break
if len(snake) !=len(set(snake)):
break
pygame.display.flip() # 31 строка
clock.tick(fps)
for event in pygame.event.get():
if event.type==pygame.QUIT:
exit()
key=pygame.key.get_pressed()
if key[pygame.K_w]:
dx,dy=0,-1
if key[pygame.K_s]:
dx,dy=0,-1
if key[pygame.K_a]:
dx,dy=-1,0
if key[pygame.K_d]:
dx,dy=1,0