Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- import pygame
- import random
- from time import *
- #Settings
- width = 500
- heigth = 500
- #End settings
- pygame.init()
- pygame.display.set_caption("Snake")
- display = pygame.display.set_mode((width,heigth))
- bg = pygame.image.load("res/grass.jpg")
- #Objects
- class SnakeHead():
- def __init__(self,disp):
- self.moving = 0 #0 up,1 down,2 right,3 left
- self.display = disp
- self.image = pygame.image.load("res/head.png")
- self.movingImage = self.image
- self.rect = self.image.get_rect()
- self.move(200,200)
- def move(self,x,y):
- self.rect = self.rect.move(x,y)
- def render(self):
- self.display.blit(self.movingImage,self.rect)
- class SnakePart():
- def __init__(self,disp,x,y,tail):
- self.display = disp
- if tail == 1:
- self.image = pygame.image.load("res/tail.png")
- else:
- self.image = pygame.image.load("res/body.png")
- self.movingImage = self.image
- self.rect = self.image.get_rect()
- self.lastDirection = 1
- self.move(x,y)
- def move(self,x,y):
- self.rect = self.rect.move(x,y)
- def render(self):
- self.display.blit(self.movingImage,self.rect)
- class Apple():
- def __init__(self,disp,x,y):
- self.image = pygame.image.load("res/apple.png")
- self.rect = self.image.get_rect()
- self.rect = self.rect.move(x,y)
- self.display = disp
- def render(self):
- self.display.blit(self.image,self.rect)
- #Functions
- def rotateImage(image, angle):
- orig_rect = image.get_rect()
- rot_image = pygame.transform.rotate(image, angle)
- rot_rect = orig_rect.copy()
- rot_rect.center = rot_image.get_rect().center
- rot_image = rot_image.subsurface(rot_rect).copy()
- return rot_image
- #Main Loop
- while 1:
- #Create Objects
- player = SnakeHead(display)
- apple = Apple(display,10,10)
- snake = [(200,210,0),(200,220,0),(200,230,0),(200,240,0),(200,250,0),(200,260,0)]
- #Game Loop
- while 1:
- #Calculate Snake
- if player.moving == 0:
- snake.insert(0,(player.rect.x,player.rect.y - 10,player.moving))
- if player.moving == 1:
- snake.insert(0,(player.rect.x,player.rect.y + 10,player.moving))
- if player.moving == 2:
- snake.insert(0,(player.rect.x + 10,player.rect.y,player.moving))
- if player.moving == 3:
- snake.insert(0,(player.rect.x - 10,player.rect.y,player.moving))
- snake.pop()
- #Get Events
- for event in pygame.event.get():
- if event.type == pygame.QUIT:
- sys.exit()
- if event.type == pygame.KEYDOWN:
- if event.key == pygame.K_LEFT:
- player.moving = 3
- player.movingImage = rotateImage(player.image,90)
- if event.key == pygame.K_RIGHT:
- player.moving = 2
- player.movingImage = rotateImage(player.image,270)
- if event.key == pygame.K_UP:
- player.moving = 0
- player.movingImage = player.image
- if event.key == pygame.K_DOWN:
- player.moving = 1
- player.movingImage = rotateImage(player.image,180)
- #Movement
- if player.moving == 0:
- player.move(0,-5)
- if player.moving == 1:
- player.move(0,5)
- if player.moving == 2:
- player.move(5,0)
- if player.moving == 3:
- player.move(-5,0)
- #Border
- if player.rect.x > width - 20:
- break
- if player.rect.x < 0:
- break
- if player.rect.y > heigth - 20:
- break
- if player.rect.y < 0:
- break
- #Render
- display.fill((159,207,159))
- player.render()
- for object in snake[:]:
- tmp = SnakePart(display,object[0],object[1],0)
- tmp.render()
- apple.render()
- #Flip
- pygame.display.flip()
- #Delay
- pygame.time.delay(20)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement