Уведомления

Группа в Telegram: @pythonsu

#1 Март 30, 2011 12:40:15

WindeL
От:
Зарегистрирован: 2011-03-30
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

pygame SNAKE

Пытаюсь написать змейку на питоне без использования классов, но что то неочень то выходит. Проблема с условием смерти змеи. Она легко сама через себя ходит и так же легко лазит за пределы экрана. Не пойму в чем проблема…. Вот код, пока что просто с движением змеи:

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()



Офлайн

#2 Март 30, 2011 12:50:46

apologize828
От:
Зарегистрирован: 2010-02-13
Сообщения: 223
Репутация: +  1  -
Профиль   Отправить e-mail  

pygame SNAKE

ИМХО проще поглядеть исходники уже готовой snake и попробовать в них разобраться)))



Офлайн

#3 Март 30, 2011 13:32:00

WindeL
От:
Зарегистрирован: 2011-03-30
Сообщения: 17
Репутация: +  0  -
Профиль   Отправить e-mail  

pygame SNAKE

На самом деле я так и сделал, и пробовал комбинировать, но что то не катит. Пробовал просто заменять кусок кода и пихать в функцию, и непонятно почему работало по-другому …



Офлайн

#4 Апрель 9, 2011 18:39:27

tobb
От:
Зарегистрирован: 2011-04-09
Сообщения: 14
Репутация: +  0  -
Профиль   Отправить e-mail  

pygame SNAKE

Ты же можешь сделать проверку на выход координат головы за пределы игровой области и совпадение с координатами тела.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version