Untitled
user_4616709
plain_text
2 years ago
2.2 kB
3
Indexable
import pygame import random # Constants SCREEN_WIDTH, SCREEN_HEIGHT = 800, 600 GRID_SIZE = 20 GRID_WIDTH, GRID_HEIGHT = SCREEN_WIDTH // GRID_SIZE, SCREEN_HEIGHT // GRID_SIZE FPS = 10 # Colors WHITE = (255, 255, 255) GREEN = (0, 128, 0) RED = (255, 0, 0) # Initialize pygame pygame.init() screen = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HEIGHT)) pygame.display.set_caption("Baby Snake") clock = pygame.time.Clock() def draw_grid(): for x in range(0, SCREEN_WIDTH, GRID_SIZE): pygame.draw.line(screen, WHITE, (x, 0), (x, SCREEN_HEIGHT)) for y in range(0, SCREEN_HEIGHT, GRID_SIZE): pygame.draw.line(screen, WHITE, (0, y), (SCREEN_WIDTH, y)) def draw_snake(snake): for segment in snake: pygame.draw.rect(screen, GREEN, (segment[0] * GRID_SIZE, segment[1] * GRID_SIZE, GRID_SIZE, GRID_SIZE)) def generate_food(): while True: food_pos = (random.randint(0, GRID_WIDTH - 1), random.randint(0, GRID_HEIGHT - 1)) if food_pos not in snake: return food_pos # Main game loop snake = [(GRID_WIDTH // 2, GRID_HEIGHT // 2)] direction = (0, -1) food = generate_food() running = True 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_UP and direction != (0, 1): direction = (0, -1) elif event.key == pygame.K_DOWN and direction != (0, -1): direction = (0, 1) elif event.key == pygame.K_LEFT and direction != (1, 0): direction = (-1, 0) elif event.key == pygame.K_RIGHT and direction != (-1, 0): direction = (1, 0) # Move the snake head = (snake[0][0] + direction[0], snake[0][1] + direction[1]) snake.insert(0, head) # Check for collisions if head == food: food = generate_food() else: snake.pop() screen.fill((0, 0, 0)) draw_grid() pygame.draw.rect(screen, RED, (food[0] * GRID_SIZE, food[1] * GRID_SIZE, GRID_SIZE, GRID_SIZE)) draw_snake(snake) pygame.display.flip() clock.tick(FPS) pygame.quit()
Editor is loading...