Untitled
unknown
plain_text
a year ago
3.6 kB
2
Indexable
Never
import pygame import random # Initialize Pygame pygame.init() # Set up the display width, height = 640, 480 window = pygame.display.set_mode((width, height)) pygame.display.set_caption("Snake Game") # Set up colors black = pygame.Color(0, 0, 0) white = pygame.Color(255, 255, 255) red = pygame.Color(255, 0, 0) green = pygame.Color(0, 255, 0) # Set up the snake and food snake_position = [100, 50] snake_body = [[100, 50], [90, 50], [80, 50]] food_position = [random.randrange(1, (width // 10)) * 10, random.randrange(1, (height // 10)) * 10] food_spawn = True # Set up initial game variables direction = "RIGHT" change_to = direction score = 0 # Set up the game clock clock = pygame.time.Clock() fps = 20 # Function to display the score def show_score(choice, color, font, size): score_font = pygame.font.SysFont(font, size) score_surface = score_font.render('Score : ' + str(score), True, color) score_rect = score_surface.get_rect() if choice == 1: score_rect.midtop = (80, 10) else: score_rect.midtop = (width // 2, height // 1.25) window.blit(score_surface, score_rect) # Main game loop while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() # Check for arrow key presses elif event.type == pygame.KEYDOWN: if event.key == pygame.K_RIGHT or event.key == ord('d'): change_to = "RIGHT" if event.key == pygame.K_LEFT or event.key == ord('a'): change_to = "LEFT" if event.key == pygame.K_UP or event.key == ord('w'): change_to = "UP" if event.key == pygame.K_DOWN or event.key == ord('s'): change_to = "DOWN" # Validate direction changes if change_to == "RIGHT" and direction != "LEFT": direction = "RIGHT" if change_to == "LEFT" and direction != "RIGHT": direction = "LEFT" if change_to == "UP" and direction != "DOWN": direction = "UP" if change_to == "DOWN" and direction != "UP": direction = "DOWN" # Update snake position if direction == "RIGHT": snake_position[0] += 10 if direction == "LEFT": snake_position[0] -= 10 if direction == "UP": snake_position[1] -= 10 if direction == "DOWN": snake_position[1] += 10 # Snake body mechanism snake_body.insert(0, list(snake_position)) if snake_position[0] == food_position[0] and snake_position[1] == food_position[1]: score += 1 food_spawn = False else: snake_body.pop() # Food spawn if not food_spawn: food_position = [random.randrange(1, (width // 10)) * 10, random.randrange(1, (height // 10)) * 10] food_spawn = True # Draw Snake and Food window.fill(black) for pos in snake_body: pygame.draw.rect(window, green, pygame.Rect(pos[0], pos[1], 10, 10)) pygame.draw.rect(window, red, pygame.Rect(food_position[0], food_position[1], 10, 10)) # Game Over conditions if snake_position[0] < 0 or snake_position[0] > width - 10: pygame.quit() if snake_position[1] < 0 or snake_position[1] > height - 10: pygame.quit() for block in snake_body[1:]: if snake_position[0] == block[0] and snake_position[1] == block[1]: pygame.quit() # Refresh game screen pygame.display.update() # Update game clock clock.tick(fps)