snake game in python

Cómo hacer un juego de serpientes en Python

Publicado por
Comparte en redes sociales


Si te gusta jugar al juego de la serpiente, estoy seguro de que este artículo te interesará.

En este artículo, te enseñaré cómo crear un juego de serpientes simple que incluso un principiante de Python encontraría fácil de desarrollar.

Hay varias formas de crear este juego y una incluye el uso de la biblioteca PyGame de Python, que es una biblioteca de Python que usamos para crear juegos.

El otro método es usar la biblioteca de tortugas. Este módulo viene preinstalado con Python y proporciona un lienzo virtual para que los usuarios creen formas e imágenes.

Por lo tanto, este artículo utilizará la biblioteca de tortugas para implementar nuestro juego de serpientes simple y fácil de usar para principiantes, especialmente para desarrolladores novatos de Python.

Además de este módulo, también utilizaremos otros dos módulos, a saber;

  • Módulo de tiempo: este método nos permitirá realizar un seguimiento de la cantidad de segundos que han pasado desde la última vez.
  • Módulo aleatorio: genera números aleatoriamente en Python.

Otras herramientas básicas que necesitará usar incluyen un editor de texto de su elección. Usaré VSCode en este artículo. Por supuesto, deberá instalar Python 3 en su máquina si aún no lo tiene. También puede usar el compilador Geekflare.

¡Debería ser divertido!

Cómo funciona el juego de la serpiente

El objetivo final de este juego es que el jugador obtenga la puntuación más alta controlando a la serpiente para recolectar la comida que se muestra en la pantalla.

El jugador controla a la serpiente usando cuatro teclas de flecha que son relativas a la dirección en la que se mueve la serpiente. Si la serpiente golpea un bloque o se golpea a sí misma, el jugador pierde el juego.

Los siguientes pasos vamos a seguir para implementar este juego.

  • Importación a nuestros programas de módulos preinstalados (tortuga, tiempo y aleatorio).
  • Creación de la visualización de la pantalla del juego utilizando el módulo de tortuga.
  • Configuración de las teclas para la dirección en que la serpiente se mueve alrededor de la pantalla.
  • Implementación del juego.

Cree un archivo snakegame.py donde agregaremos el código de implementación.

Importación de módulos

Esta parte del código importará los módulos de tortuga, tiempo y aleatorio que están preinstalados de forma predeterminada en Python. Además, estableceremos valores predeterminados para el puntaje inicial del jugador, el puntaje más alto que logrará el jugador y la cantidad de tiempo que el jugador demora en cada movimiento. El módulo de tiempo se utiliza aquí para calcular el tiempo de retardo.

Leer también  MidJourney vs. Stable Diffusion vs. Bing Image Creator

Agregue el siguiente fragmento de código a su archivo snakegame.py.

import turtle
import random
import time

player_score = 0
highest_score = 0
delay_time = 0.1

Creación de la visualización de la pantalla del juego

El módulo tortuga que importamos aquí nos permitirá crear un lienzo virtual que será la pantalla de la ventana del juego, a partir de ahí podremos crear el cuerpo de la serpiente y la comida que recogerá la serpiente. Nuestra pantalla también mostrará la puntuación registrada del jugador.

Agregue este código al archivo de Python.

. . .
# window screen created
wind = turtle.Screen()
wind.title("Snake Maze🐍")
wind.bgcolor("red")

# The screen size
wind.setup(width=600, height=600)


# creating the snake 
snake = turtle.Turtle()
snake.shape("square")
snake.color("black")
snake.penup()
snake.goto(0, 0)
snake.direction = "Stop"

# creating the food
snake_food = turtle.Turtle()
shapes = random.choice('triangle','circle')
snake_food.shape(shapes)
snake_food.color("blue")
snake_food.speed(0)
snake_food.penup()
snake_food.goto(0, 100)

pen = turtle.Turtle()
pen.speed(0)
pen.shape('square')
pen.color('white')
pen.penup()
pen.hideturtle()
pen.goto(0, 250)
pen.write("Your_score: 0 Highest_Score : 0", align="center", 
font=("Arial", 24, "normal"))
turtle.mainloop()

El fragmento de código anterior comienza con la inicialización de la pantalla de la tortuga y pasa un título y un color de fondo a la pantalla. Después de configurar el tamaño de la ventana de nuestra pantalla, dibujamos la forma de la serpiente en el lienzo virtual.

El método penup() simplemente toma el bolígrafo de la tortuga para que no se dibuje una línea a medida que la tortuga se mueve. El método goto(x,y) contiene posiciones de coordenadas que mueven la tortuga a una posición absoluta.

Luego creamos la comida que recolecta la serpiente. Querremos mostrar la puntuación del jugador cada vez que la serpiente recoge comida y la puntuación más alta que ha alcanzado el jugador durante el juego. Por lo tanto, usamos el método pen.write() para implementar esto. hideturtle() oculta el icono de la tortuga de la pantalla en la sección del encabezado donde se escribe este texto.

Es importante agregar turtle.mainloop() al final de su código, lo que mostrará la pantalla por más tiempo para que usted, el usuario, haga algo en la pantalla.

Ejecute el archivo y debería tener el siguiente resultado:

La exhibición de serpiente y comida con la puntuación inicial y más alta del jugador.

Configuración de las teclas de flecha para la serpiente

Aquí configuraremos teclas específicas que guiarán la dirección en la que se moverá la serpiente en la pantalla. Usaremos ‘L’ para izquierda, ‘R’ para derecha, ‘U’ para arriba, ‘D’ para abajo. Implementaremos estas direcciones usando la función de dirección de tortuga que llamaremos a la serpiente.

Agregue el siguiente fragmento de código a su código.

# Assigning directions
def moveleft():
    if snake.direction != "right":
        snake.direction = "left"

def moveright():
    if snake.direction != "left":
        snake.direction = "right"

def moveup():
    if snake.direction != "down":
        snake.direction = "up"

def movedown():
    if snake.direction != "up":
        snake.direction = "down"

def move():
    if snake.direction == "up":
        coord_y = snake.ycor()
        snake.sety(coord_y+20)

    if snake.direction == "down":
        coord_y = snake.ycor()
        snake.sety(coord_y-20)

    if snake.direction == "right":
        coord_x = snake.xcor()
        snake.setx(coord_x+20)

    if snake.direction == "left":
        coord_x = snake.xcor()
        snake.setx(coord_x-20)

wind.listen()
wind.onkeypress(moveleft, 'L')
wind.onkeypress(moveright, 'R')
wind.onkeypress(moveup, 'U')
wind.onkeypress(movedown, 'D')

The move() function above sets the movement of the snake in the defined position within a precise coordinate value.

Leer también  Cómo convertir una cadena a fecha y hora en Python

The listen() function is an event listener that calls on the methods that move the snake to a particular direction when the player presses the key.

The snake game gameplay implementation

After laying down the basic outlook of our snake game, we will have to make the game real-time.

This will involve the following:

  • Growing the snake’s length every time it collects the food by preferably using a different color.
  • Incrementing the player’s score each time the snake collects the food and tracking the highest score.
  • The player is able to control the snake from colliding with the wall or its own body.
  • The game restarts when the snake collides.
  • The player’s score is reset to zero when the game restarts, while the screen retains the player’s highest score.

Add the rest of this code to your python file.

segments = []

#Implementing the gameplay
while True:
    wind.update()
    if snake.xcor() &gt; 290 or snake.xcor() < -290 or snake.ycor() &gt; 290 or snake.ycor() < -290:
        time.sleep(1)
        snake.goto(0, 0)
        snake.direction = "Stop"
        snake.shape("square")
        snake.color("green")

        for segment in segments:
            segment.goto(1000, 1000)
            segments.clear()
            player_score = 0
            delay_time = 0.1
            pen.clear()
            pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))

        if snake.distance(snake_food) < 20:
            coord_x = random.randint(-270, 270)
            coord_y = random.randint(-270, 270)
            snake_food.goto(coord_x, coord_y)

            # Adding segment
            added_segment = turtle.Turtle()
            added_segment.speed(0)
            added_segment.shape("square")
            added_segment.color("white")
            added_segment.penup()
            segments.append(added_segment)
            delay_time -= 0.001
            player_score += 5

            if player_score > highest_score:
                highest_score = player_score
                pen.clear()
                pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))

    # checking for collisions
    for i in range(len(segments)-1, 0, -1):
        coord_x = segments[i-1].xcor()
        coord_y = segments[i-1].ycor()
        segments[i].goto(coord_x, coord_y)

    if len(segments) > 0:
        coord_x = snake.xcor()
        coord_y = snake.ycor()
        segments[0].goto(coord_x, coord_y)
    move()

    for segment in segments:
        if segment.distance(snake) < 20:
            time.sleep(1)
            snake.goto(0, 0)
            snake.direction = "stop"
            snake.color('white')
            snake.shape('square')

            for segment in segments:
                segment.goto(1000, 1000)
                segment.clear()
                player_score = 0
                delay_time = 0.1
                pen.clear()
                pen.write("Player's_score: {} Highest_score: {}".format(player_score, highest_score), align="center", font=("Arial", 24, "normal"))

     time.sleep(delay_time)

turtle.mainloop()

En el fragmento de código anterior, establecemos una posición aleatoria para la comida de la serpiente en la pantalla. Cada vez que la serpiente recupera este alimento, su segmento corporal aumenta en un color diferente; blanco, en este caso, para distinguir su crecimiento.

Leer también  Des noms distinctifs à l'authentification des utilisateurs

Después de que la serpiente recoge la comida sin chocar, la comida se coloca en una posición aleatoria dentro del rango de coordenadas 270 del tamaño de la pantalla. Cada vez que la serpiente recoge comida, la puntuación del jugador aumenta en 5. Cuando la serpiente choca, la puntuación del jugador se establece en 0 mientras que la pantalla mantiene su puntuación más alta.

Ahora vuelva a enviar el archivo de Python y debería ver la pantalla de su tortuga con este aspecto:

Conclusión 🐍

Usar la biblioteca de tortugas es una forma fácil y divertida de crear el juego de la serpiente, como hemos visto en este artículo. Alternativamente, puede implementar lo mismo usando la biblioteca PyGame. Puedes consultar el Tutorial de PyGame aquí y vea cómo podría implementar el juego de manera diferente.

También puedes probar un juego de adivinanzas en Python. ¡Disfruta codificando!



Source link

Si quiere puede hacernos una donación por el trabajo que hacemos, lo apreciaremos mucho.

Direcciones de Billetera:

- BTC: 14xsuQRtT3Abek4zgDWZxJXs9VRdwxyPUS 

- USDT: TQmV9FyrcpeaZMro3M1yeEHnNjv7xKZDNe 

- BNB: 0x2fdb9034507b6d505d351a6f59d877040d0edb0f

- DOGE: D5SZesmFQGYVkE5trYYLF8hNPBgXgYcmrx 

También puede seguirnos en nuestras Redes sociales para mantenerse al tanto de los últimos post de la web:

-Twitter

- Telegram

Disclaimer: En Cryptoshitcompra.com no nos hacemos responsables de ninguna inversión de ningún visitante, nosotros simplemente damos información sobre Tokens, juegos NFT y criptomonedas, no recomendamos inversiones

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *