Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import pygame as pg
- from pygame.math import Vector2
- WIDTH = 500
- FPS = 60
- GRID = 20
- CELLSIZE = WIDTH / GRID
- RIGHT = Vector2(1, 0)
- LEFT = Vector2(-1, 0)
- UP = Vector2(0, -1)
- DOWN = Vector2(0, 1)
- class Game:
- def __init__(self):
- pg.init()
- self.screen = pg.display.set_mode((WIDTH, WIDTH))
- self.clock = pg.time.Clock()
- pg.display.set_caption('Little Python')
- self.apple = Apple(self.screen, 3, 5)
- self.snake = Snake(self.screen)
- self.snake_timer = 500
- self.snake_clk = 0
- def draw(self):
- self.screen.fill('light green')
- [pg.draw.rect(self.screen, 'black', (x * CELLSIZE, y * CELLSIZE, CELLSIZE, CELLSIZE), 1) for y in range(GRID) for x in range(GRID)]
- self.apple.draw()
- self.snake.draw()
- def control(self):
- keys = pg.key.get_pressed()
- if keys[pg.K_UP]:
- self.snake.change_direction(UP)
- elif keys[pg.K_DOWN]:
- self.snake.change_direction(DOWN)
- elif keys[pg.K_LEFT]:
- self.snake.change_direction(LEFT)
- elif keys[pg.K_RIGHT]:
- self.snake.change_direction(RIGHT)
- def update(self):
- pg.display.update()
- self.clock.tick(FPS)
- now = pg.time.get_ticks()
- if now - self.snake_clk > self.snake_timer:
- self.snake_clk = now
- self.snake.move()
- class Snake:
- def __init__(self, screen):
- self.screen = screen
- self.body = [Vector2(10, 10)]
- self.color = 'blue'
- self.direction = RIGHT
- def _get_segment(self, index):
- rect = pg.Rect(self.body[index].x*CELLSIZE, self.body[index].y*CELLSIZE, CELLSIZE, CELLSIZE)
- return rect
- def draw(self):
- for i in range(len(self.body)):
- rect = self._get_segment(i)
- pg.draw.rect(self.screen, self.color, rect)
- def move(self):
- self.body[0] += self.direction
- def change_direction(self, new_dir):
- if new_dir.x == self.direction.x or new_dir.y == self.direction.y:
- return
- self.direction = new_dir
- class Apple:
- def __init__(self, screen, x, y):
- self.screen = screen
- self.x = x
- self.y = y
- def draw(self):
- rect = pg.Rect(self.x * CELLSIZE, self.y * CELLSIZE, CELLSIZE, CELLSIZE)
- pg.draw.rect(self.screen, 'red', rect)
- def main():
- game = Game()
- running = True
- while running:
- for event in pg.event.get():
- if event.type == pg.QUIT:
- running = False
- game.control()
- game.draw()
- game.update()
- pg.quit()
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment