You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
75 lines
2.3 KiB
75 lines
2.3 KiB
# -*- coding: utf-8 -*-
|
|
"""
|
|
Created on Wed May 21 20:08:31 2025
|
|
|
|
@author: Administrator
|
|
"""
|
|
|
|
import pygame
|
|
import random
|
|
|
|
pygame.init()
|
|
|
|
WIDTH, HEIGHT = 800, 600
|
|
screen = pygame.display.set_mode((WIDTH, HEIGHT))
|
|
|
|
WHITE, RED, GREEN = (255, 255, 255), (255, 0, 0), (0, 255, 0)
|
|
|
|
SNAKE_SIZE = 20
|
|
SNAKE = [(5 * SNAKE_SIZE, 5 * SNAKE_SIZE),
|
|
(4 * SNAKE_SIZE, 5 * SNAKE_SIZE),
|
|
(3 * SNAKE_SIZE, 5 * SNAKE_SIZE)]
|
|
|
|
FOOD = (random.randint(0, (WIDTH // SNAKE_SIZE) - 1) * SNAKE_SIZE,
|
|
random.randint(0, (HEIGHT // SNAKE_SIZE) - 1) * SNAKE_SIZE)
|
|
|
|
DIRECTION = "RIGHT"
|
|
|
|
running = True
|
|
|
|
clock = pygame.time.Clock()
|
|
|
|
while running:
|
|
for event in pygame.event.get():
|
|
if event.type == pygame.QUIT:
|
|
running = False
|
|
elif event.type == pygame.KEYDOWN:
|
|
if event.key == pygame.K_LEFT and DIRECTION != "RIGHT":
|
|
DIRECTION = "LEFT"
|
|
elif event.key == pygame.K_RIGHT and DIRECTION != "LEFT":
|
|
DIRECTION = "RIGHT"
|
|
elif event.key == pygame.K_UP and DIRECTION != "DOWN":
|
|
DIRECTION = "UP"
|
|
elif event.key == pygame.K_DOWN and DIRECTION != "UP":
|
|
DIRECTION = "DOWN"
|
|
|
|
head = SNAKE[0]
|
|
if DIRECTION == "RIGHT":
|
|
new_head = (head[0] + SNAKE_SIZE, head[1])
|
|
elif DIRECTION == "LEFT":
|
|
new_head = (head[0] - SNAKE_SIZE, head[1])
|
|
elif DIRECTION == "UP":
|
|
new_head = (head[0], head[1] - SNAKE_SIZE)
|
|
elif DIRECTION == "DOWN":
|
|
new_head = (head[0], head[1] + SNAKE_SIZE)
|
|
|
|
if new_head == FOOD:
|
|
SNAKE.insert(0, new_head)
|
|
FOOD = (random.randint(0, (WIDTH // SNAKE_SIZE) - 1) * SNAKE_SIZE,
|
|
random.randint(0, (HEIGHT // SNAKE_SIZE) - 1) * SNAKE_SIZE)
|
|
else:
|
|
SNAKE.insert(0, new_head)
|
|
SNAKE.pop()
|
|
|
|
# Check if snake hit itself or wall
|
|
if (new_head[0] < 0 or new_head[0] >= WIDTH or
|
|
new_head[1] < 0 or new_head[1] >= HEIGHT or
|
|
new_head in SNAKE[1:]):
|
|
running = False
|
|
|
|
screen.fill(WHITE)
|
|
pygame.draw.rect(screen, RED, (FOOD[0], FOOD[1], SNAKE_SIZE, SNAKE_SIZE))
|
|
for segment in SNAKE:
|
|
pygame.draw.rect(screen, GREEN, (segment[0], segment[1], SNAKE_SIZE, SNAKE_SIZE))
|
|
pygame.display.flip()
|
|
clock.tick(10) |