Advertisement
AceW0lf_BOt

Snake Game (Python)

Feb 24th, 2023
707
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.26 KB | None | 0 0
  1. import pygame as pg
  2. from random import randrange
  3.  
  4. WINDOW = 800
  5. TILE_SIZE = 35
  6. RANGE = (TILE_SIZE // 2, WINDOW - TILE_SIZE // 2, TILE_SIZE)
  7. get_random_position = lambda: [randrange(*RANGE), randrange(*RANGE)]
  8. snake = pg.rect.Rect([0,0, TILE_SIZE - 2, TILE_SIZE - 2])
  9. snake.center = get_random_position()
  10. length = 1
  11. segments = [snake.copy()]
  12. snake_dir = (0, 0)
  13. time, time_step = 0, 110
  14. food = snake.copy()
  15. food.center = get_random_position()
  16. screen = pg.display.set_mode([WINDOW] * 2)
  17. clock = pg.time.Clock()
  18. dirs = {pg.K_w: 1, pg.K_s: 1, pg.K_a: 1, pg.K_d: 1}
  19.  
  20. while True:
  21.     for event in pg.event.get():
  22.         if event.type == pg.QUIT:
  23.             exit()
  24.         if event.type == pg.KEYDOWN:
  25.             if event.key == pg.K_w and dirs[pg.K_w]:
  26.                 snake_dir = (0, -TILE_SIZE)
  27.                 dirs = {pg.K_w: 1, pg.K_s: 0, pg.K_a: 1, pg.K_d: 1}
  28.             if event.key == pg.K_s and dirs[pg.K_s]:
  29.                 snake_dir = (0, TILE_SIZE)
  30.                 dirs = {pg.K_w: 0, pg.K_s: 1, pg.K_a: 1, pg.K_d: 1}
  31.             if event.key == pg.K_a and dirs[pg.K_a]:
  32.                 snake_dir = (-TILE_SIZE, 0)
  33.                 dirs = {pg.K_w: 1, pg.K_s: 1, pg.K_a: 1, pg.K_d: 0}
  34.             if event.key == pg.K_d and dirs[pg.K_d]:
  35.                 snake_dir = (TILE_SIZE, 0)
  36.                 dirs = {pg.K_w: 1, pg.K_s: 1, pg.K_a: 0, pg.K_d: 1}
  37.     screen.fill('black')
  38.     # check Borders and selfeating
  39.     self_eating = pg.Rect.collidelist(snake, segments[:-1]) != -1
  40.     if snake.left < 0 or snake.right > WINDOW or snake.top < 0 or snake.bottom > WINDOW or self_eating:
  41.         snake.center, food.center = get_random_position(), get_random_position()
  42.         length, snake_dir = 1, (0, 0)
  43.         segments = [snake.copy()]
  44.     # check food
  45.     if snake.center == food.center:
  46.         food.center = get_random_position()
  47.         length += 1
  48.     # draw food
  49.     pg.draw.rect(screen, "red", food)
  50.     # draw snake
  51.     [pg.draw.rect(screen, "green", segment) for segment in segments]
  52.     # move snake
  53.     time_now = pg.time.get_ticks()
  54.     if time_now - time > time_step:
  55.         time = time_now
  56.         snake.move_ip(snake_dir)
  57.         segments.append(snake.copy())
  58.         segments = segments[-length:]
  59.     pg.display.flip()
  60.     clock.tick(60)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement