overactive

khgdf

Jul 28th, 2018
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 3.12 KB | None | 0 0
  1. import pygame
  2. import random
  3. import time
  4.  
  5. snakeColor = (255,255,255)
  6. foodColor = (255,255,0)
  7. width = 600
  8. height = 600
  9. grid = 20
  10. direction = 'up'
  11. MAX_X = width/grid
  12. MAX_Y = height/grid
  13.  
  14. openWindow = True
  15.  
  16. canvas = pygame.display.set_mode((width,height))
  17. pygame.display.set_caption('Snake')
  18.  
  19. class Square():
  20.     def __init__(self, x, y, color):
  21.         self.x = x
  22.         self.y = y
  23.         self.color = color
  24.  
  25.     def show(self):
  26.         pygame.draw.rect(canvas, self.color, (self.x * grid, self.y * grid, grid, grid), 0)
  27.  
  28.     def returnVal(self):
  29.         return (self.x == o.x and self.y == o.y)
  30.  
  31. class Food():
  32.     def __init__(self, x, y,):
  33.         self.x = x
  34.         self.y = y
  35.  
  36.     def randomizeFood(self):
  37.         self.x = random.randint(0, MAX_X - 1)
  38.         self.y = random.randint(0, MAX_Y - 1)
  39.  
  40.         return (self.x, self.y)
  41.  
  42.     def showFood(self, x, y):
  43.         pygame.draw.rect(canvas, foodColor, (self.x*grid, self.y*grid, grid, grid), 0)
  44.  
  45. class Snake():
  46.     def __init__(self,x,y):
  47.         self.x = x
  48.         self.y = y
  49.         self.speed = 1
  50.         self.snake =[]
  51.  
  52.         self.snake.append(Square(x, y, snakeColor))
  53.  
  54.     def updateSnake(self, direction):
  55.         if direction == 'up':
  56.             snakeHead = Square(self.snake[0].x, self.snake[0].y - self.speed, snakeColor)
  57.         if direction == 'down':
  58.             snakeHead = Square(self.snake[0].x, self.snake[0].y + self.speed, snakeColor)
  59.         if direction == 'left':
  60.             snakeHead = Square(self.snake[0].x - self.speed, self.snake[0].y, snakeColor)
  61.         if direction == 'right':
  62.             snakeHead = Square(self.snake[0].x + self.speed, self.snake[0].y, snakeColor)
  63.  
  64.         self.snake.insert(0, snakeHead)
  65.         global xFood, yFood
  66.  
  67.         if xFood == snakeHead.x and yFood == snakeHead.y:
  68.             xFood, yFood = f.randomizeFood()
  69.         else:
  70.             self.snake.pop()
  71.  
  72.         f.showFood(xFood, yFood)
  73.      
  74.     def showSnake(self):
  75.         if self.snake[0].x >= MAX_X:
  76.             self.snake[0].x = MAX_X-1
  77.         if self.snake[0].x <= 0:
  78.             self.snake[0].x = 0
  79.  
  80.         if self.snake[0].y >= MAX_Y:
  81.             self.snake[0].y = MAX_Y-1
  82.         if self.snake[0].y <= 0:
  83.             self.snake[0].y = 0
  84.        
  85.         for pos in range(len(self.snake)):
  86.             pygame.draw.rect(canvas, snakeColor, (self.snake[pos].x*grid, self.snake[pos].y*grid, grid, grid), 0)
  87.  
  88. def keyPressed():
  89.     keys = pygame.key.get_pressed()
  90.     global direction
  91.  
  92.     if (keys[pygame.K_RIGHT]):
  93.         direction = 'right'
  94.     if (keys[pygame.K_LEFT]):
  95.         direction = 'left'
  96.     if (keys[pygame.K_UP]):
  97.         direction = 'up'
  98.     if (keys[pygame.K_DOWN]):
  99.         direction = 'down'
  100.  
  101.     return direction
  102.  
  103.  
  104. xFood, yFood = 20, 10
  105. f = Food(xFood, yFood)
  106. s = Snake(15, 15)
  107.  
  108. while openWindow == True:
  109.     canvas.fill((0,0,0))
  110.     snakeDir = keyPressed()
  111.  
  112.     s.updateSnake(snakeDir)
  113.     s.showSnake()
  114.    
  115.     pygame.display.flip()
  116.     time.sleep(0.1)
  117.  
  118.     for event in pygame.event.get():
  119.         if event.type == pygame.QUIT:
  120.             openWindow = False
Advertisement
Add Comment
Please, Sign In to add comment