Buenas queridos programadores y programadoras!
Aquí tenéis una versión simple del famoso juego de la serpiente, para que aprendáis como es el funcionamiento básico y incluso puedes intentar mejorarlo, añadiendo puntuación, sonidos y gráficos.
Para empezar tenemos que instalar Pygame:
pip install pygame
Después copia y pega el siguiente código en tu editor favorito y ejecutalo:
import pygame import sys import random pygame.init() # Tamaño de la ventana del juego WINDOW_WIDTH, WINDOW_HEIGHT = 800, 600 # Colores WHITE = (255, 255, 255) RED = (255, 0, 0) GREEN = (0, 255, 0) BLACK = (0, 0, 0) # Tamaño del bloque de serpiente BLOCK_SIZE = 20 # Velocidad de movimiento de la serpiente SNAKE_SPEED = 15 # Crear la ventana del juego window = pygame.display.set_mode((WINDOW_WIDTH, WINDOW_HEIGHT)) pygame.display.set_caption('Snake Game') # Función para dibujar la serpiente def draw_snake(snake): for block in snake: pygame.draw.rect(window, GREEN, pygame.Rect(block[0], block[1], BLOCK_SIZE, BLOCK_SIZE)) # Función principal del juego def main(): snake = [[100, 100]] # Lista de bloques que representan la serpiente direction = 'RIGHT' # Dirección inicial de la serpiente clock = pygame.time.Clock() # Comida inicial en una posición aleatoria food_x, food_y = random.randrange(0, WINDOW_WIDTH - BLOCK_SIZE, BLOCK_SIZE), random.randrange(0, WINDOW_HEIGHT - BLOCK_SIZE, BLOCK_SIZE) while True: for event in pygame.event.get(): if event.type == pygame.QUIT: pygame.quit() sys.exit() if event.type == pygame.KEYDOWN: if event.key == pygame.K_UP and direction != 'DOWN': direction = 'UP' elif event.key == pygame.K_DOWN and direction != 'UP': direction = 'DOWN' elif event.key == pygame.K_LEFT and direction != 'RIGHT': direction = 'LEFT' elif event.key == pygame.K_RIGHT and direction != 'LEFT': direction = 'RIGHT' # Mover la serpiente en la dirección actual if direction == 'UP': head = [snake[0][0], snake[0][1] - BLOCK_SIZE] elif direction == 'DOWN': head = [snake[0][0], snake[0][1] + BLOCK_SIZE] elif direction == 'LEFT': head = [snake[0][0] - BLOCK_SIZE, snake[0][1]] elif direction == 'RIGHT': head = [snake[0][0] + BLOCK_SIZE, snake[0][1]] # Añadir la nueva posición de la cabeza de la serpiente snake.insert(0, head) # Comprobar colisiones if snake[0][0] == food_x and snake[0][1] == food_y: # La serpiente ha comido la comida, así que la comida se coloca en una nueva posición aleatoria food_x, food_y = random.randrange(0, WINDOW_WIDTH - BLOCK_SIZE, BLOCK_SIZE), random.randrange(0, WINDOW_HEIGHT - BLOCK_SIZE, BLOCK_SIZE) else: # Si no se ha comido la comida, eliminar el último bloque de la serpiente snake.pop() # Dibujar todo en la ventana window.fill(BLACK) pygame.draw.rect(window, RED, pygame.Rect(food_x, food_y, BLOCK_SIZE, BLOCK_SIZE)) draw_snake(snake) # Actualizar la ventana pygame.display.update() clock.tick(SNAKE_SPEED) if __name__ == "__main__": main()
Al ejecutarlo se nos abrirá una ventana donde comenzará el juego:
Con las flechas de nuestro teclado podremos mover a la serpiente, el objetivo es atrapar los cuadrados rojos y la serpiente se hará mas grande por cada nuevo cuadrado que nos comamos. Con este simple código podrás experimentar ,mejorar el juego y aprender con el proceso.