Суббота, 23 Ноября 2024, 00:17

Приветствую Вас Гость

[ Новые сообщения · Игроделы · Правила · Поиск ]
  • Страница 1 из 1
  • 1
Змея, условие выхода Pygame
WindelДата: Суббота, 02 Апреля 2011, 01:06 | Сообщение # 1
уже был
Сейчас нет на сайте
Можете помочь с разборкой кода? Я все никак не могу понять почему не работают условия смерти змеи. Уже пытался "клеить" змейку из готовых программ, но тоже что то не то получается...
Буду очень признателен за помочь.
Code

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


Сообщение отредактировал Windel - Суббота, 02 Апреля 2011, 01:06
  • Страница 1 из 1
  • 1
Поиск:

Все права сохранены. GcUp.ru © 2008-2024 Рейтинг