Advertisement
Guest User

Untitled

a guest
Jun 28th, 2012
82
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.20 KB | None | 0 0
  1. import sys
  2. import pygame
  3. import random
  4.  
  5. #Settings
  6. width = 500
  7. heigth = 500
  8. #End settings
  9.  
  10. pygame.init()
  11. pygame.display.set_caption("Snake")
  12. display = pygame.display.set_mode((width,heigth))
  13. bg = pygame.image.load("res/grass.jpg")
  14.  
  15. #Objects
  16. class SnakeHead():
  17.     def __init__(self,disp):
  18.         self.moving = 0 #0 up,1 down,2 right,3 left
  19.         self.display = disp
  20.         self.image = pygame.image.load("res/head.png")
  21.         self.movingImage = self.image
  22.         self.rect = self.image.get_rect()
  23.         self.move(200,200)
  24.     def move(self,x,y):
  25.         self.rect = self.rect.move(x,y)
  26.     def render(self):
  27.         self.display.blit(self.movingImage,self.rect)
  28.        
  29. class SnakePart():
  30.     def __init__(self,disp,x,y,tail):
  31.         self.display = disp
  32.         if tail == 1:
  33.             self.image = pygame.image.load("res/tail.png")
  34.         else:
  35.             self.image = pygame.image.load("res/body.png")
  36.         self.movingImage = self.image
  37.         self.rect = self.image.get_rect()
  38.     def move(self,x,y):
  39.         self.rect = self.rect.move(x,y)
  40.     def render(self):
  41.         self.display.blit(self.movingImage,self.rect)
  42.        
  43. class Apple():
  44.     def __init__(self,disp,x,y):
  45.         self.image = pygame.image.load("res/apple.png")
  46.         self.rect = self.image.get_rect()
  47.         self.rect = self.rect.move(x,y)
  48.         self.display = disp
  49.     def render(self):    
  50.         self.display.blit(self.image,self.rect)
  51.  
  52. #Functions
  53. def rotateImage(image, angle):
  54.     orig_rect = image.get_rect()
  55.     rot_image = pygame.transform.rotate(image, angle)
  56.     rot_rect = orig_rect.copy()
  57.     rot_rect.center = rot_image.get_rect().center
  58.     rot_image = rot_image.subsurface(rot_rect).copy()
  59.     return rot_image
  60.  
  61. #Main Loop
  62. while 1:
  63.    
  64.     #Create Objects
  65.     player = SnakeHead(display)
  66.     apple = Apple(display,10,10)
  67.     snakeBody = [SnakePart(display,200,220,1),SnakePart(display,200,240,0)]
  68.    
  69.     #Game Loop
  70.     while 1:
  71.         #Get Events
  72.         for event in pygame.event.get():
  73.             if event.type == pygame.QUIT:
  74.                 sys.exit()
  75.             if event.type == pygame.KEYDOWN:
  76.                 if event.key == pygame.K_LEFT:
  77.                     player.moving = 3
  78.                     player.movingImage = rotateImage(player.image,90)
  79.                 if event.key == pygame.K_RIGHT:
  80.                     player.moving = 2
  81.                     player.movingImage = rotateImage(player.image,270)
  82.                 if event.key == pygame.K_UP:
  83.                     player.moving = 0
  84.                     player.movingImage = player.image
  85.                 if event.key == pygame.K_DOWN:
  86.                     player.moving = 1
  87.                     player.movingImage = rotateImage(player.image,180)
  88.                    
  89.         #Movement
  90.         if player.moving == 0:
  91.             player.move(0,-3)
  92.         if player.moving == 1:
  93.             player.move(0,3)
  94.         if player.moving == 2:
  95.             player.move(3,0)
  96.         if player.moving == 3:
  97.             player.move(-3,0)
  98.        
  99.         #Border
  100.         if player.rect.x > width - 20:
  101.             break
  102.         if player.rect.x < 0:
  103.             break
  104.         if player.rect.y > heigth - 20:
  105.             break
  106.         if player.rect.y < 0:
  107.             break
  108.        
  109.         #Calculate Snake
  110.         i = len(snakeBody) - 1
  111.         lastX = player.rect.x
  112.         lastY = player.rect.y
  113.         if player.moving == 0:
  114.             lastY = player.rect.y - 20
  115.         if player.moving == 1:
  116.             lastY = player.rect.y + 20
  117.         if player.moving == 2:
  118.             lastX = player.rect.x + 20
  119.         if player.moving == 3:
  120.             lastX = player.rect.x - 20
  121.         while i > -1:
  122.             print "moved: x:%d y:%d"%(lastX,lastY)
  123.             snakeBody[i].move(lastX,lastY)
  124.             lastX = snakeBody[i].rect.x
  125.             lastY = snakeBody[i].rect.y
  126.             i = i - 1
  127.        
  128.         #Render
  129.         display.fill((0,0,0))
  130.         display.blit(bg,(0,0))
  131.         for object in snakeBody[:]:
  132.             object.render()
  133.         player.render()
  134.         apple.render()
  135.        
  136.         #Flip
  137.         pygame.display.flip()
  138.         #Delay
  139.         pygame.time.delay(20)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement