Пытаюсь написать змейку на питоне без использования классов, но что то неочень то выходит. Проблема с условием смерти змеи. Она легко сама через себя ходит и так же легко лазит за пределы экрана. Не пойму в чем проблема…. Вот код, пока что просто с движением змеи:
import pygame,sys,random,os
from pygame.locals import *
def main():
os.environ["SDL_VIDEO_CENTERED"] = "1"
pygame.init()
pygame.display.set_caption("SNAKE")
screen = pygame.display.set_mode((320,320))
snakeHead = [160,304]
snakeBody = [[160,304],[144,304],[128,304]]
angle = 0
snakeDead = False
while 1:
while snakeDead == False:
for e in pygame.event.get():
if e.type == QUIT:
pygame.quit()
return
if e.type == KEYDOWN:
if e.key == K_ESCAPE:
pygame.quit()
return
if e.key == K_UP:
angle = 0
if e.key == K_LEFT:
angle = 90
if e.key == K_DOWN:
angle = 180
if e.key == K_RIGHT:
angle = 270
update(angle, snakeHead,snakeBody,snakeDead)
screen.fill((255,255,255))
draw(screen,snakeBody,snakeHead)
pygame.display.update()
pygame.time.wait(100)
if snakeDead == True:
font = pygame.font.SysFont("arial",48)
ren = font.render("GAME OVER",True,(0,255,0))
screen.blit(ren,(5,5))
pygame.display.update()
pygame.time.wait(10000)
def update(angle,snakeHead,snakeBody,snakeDead):
snakeBody.insert(0, list(snakeHead))
snakeBody.pop()
if angle == 0:
snakeHead[1] -= 16
if angle == 90:
snakeHead[0] -=16
if angle == 180:
snakeHead[1] += 16
if angle == 270:
snakeHead[0] += 16
for b in snakeBody:
if snakeHead == b:
snakeDead = True
if snakeHead[0] not in range(320):
snakeDead = True
if snakeHead[1] not in range(320):
snakeDead = True
def draw(screen,snakeBody,snakeHead):
screen.fill((255,0,0),(snakeHead[0],snakeHead[1], 16,16))
for b in snakeBody:
screen.fill((255,0,0),(b[0],b[1],16,16))
if __name__ == "__main__":
main()