# -*- 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)