Skip to content

Instantly share code, notes, and snippets.

@naazeri
Created September 19, 2023 10:36
Show Gist options
  • Save naazeri/674ee76daa8108ff70d6caeafb41df28 to your computer and use it in GitHub Desktop.
Save naazeri/674ee76daa8108ff70d6caeafb41df28 to your computer and use it in GitHub Desktop.
snake_game_in_30_line_python_pygame
import pygame as pg
pg.init()
y, step, head = segments = [15, 16, 17]
n, apple = step, 99
screen = pg.display.set_mode([225] * 2, pg.SCALED)
score = 0
while segments.count(head) % 2 * head % n * (head & 240):
for e in pg.event.get(768):
if e.type == pg.KEYDOWN:
if (e.key == pg.K_UP or e.key == pg.K_w) and step != n:
step = -n
elif (e.key == pg.K_DOWN or e.key == pg.K_s) and step != -n:
step = n
elif (e.key == pg.K_LEFT or e.key == pg.K_a) and step != 1:
step = -1
elif (e.key == pg.K_RIGHT or e.key == pg.K_d) and step != -1:
step = 1
segments = segments[apple != head :] + [head + step]
screen.fill("black")
if apple == head:
apple = segments[0]
score += 1
for i, v in enumerate([apple] + segments):
screen.fill("green" if i else "red", ((v - 1) % n * y, (v - n) // n * y, y, y))
pg.display.flip()
head += step
pg.time.wait(100)
print(f"{score=}")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment