Como fazer um jogo de cobra em Python

Se você gosta de jogar o jogo da cobra, tenho certeza de que achará este artigo interessante.

Neste artigo, vou ensinar a você como criar um jogo de cobra simples que até mesmo um iniciante em Python acharia fácil de desenvolver.

Existem várias maneiras de criar este jogo e uma inclui o uso da biblioteca PyGame do Python, que é uma biblioteca Python que usamos para criar jogos.

A outra maneira é pelo uso da biblioteca turtle. Este módulo vem pré-instalado com o Python e fornece uma tela virtual para os usuários criarem formas e imagens.

Portanto, este artigo usará a biblioteca turtle para implementar nosso jogo snake simples, que é amigável para iniciantes, especialmente para desenvolvedores iniciantes em Python.

Além deste módulo, também usaremos outros dois módulos a saber;

  • Módulo de tempo – Este método nos permitirá acompanhar o número de segundos decorridos desde o tempo anterior.
  • Módulo Random – Gera números aleatoriamente em Python.

Outras ferramentas básicas que você precisará usar incluem um editor de texto de sua escolha. Vou usar o VSCode neste artigo. Claro, você precisará instalar o Python 3 em sua máquina se ainda não o tiver. Você também pode usar o compilador etechpt.com.

Isso deve ser divertido!

Como funciona o jogo da cobra

O objetivo final deste jogo é que o jogador alcance a maior pontuação controlando a cobra para coletar a comida que a tela exibe.

O jogador controla a cobra usando quatro teclas de direção que são relativas à direção em que a cobra está se movendo. Se a cobra atingir um bloco ou a si mesma, o jogador perde o jogo.

As etapas a seguir seguiremos para implementar este jogo.

  • Importando para nossos programas os módulos pré-instalados (tartaruga, hora e aleatório).
  • Criando a tela do jogo usando o módulo turtle.
  • Configurando as teclas para a direção de movimento da cobra ao redor da tela.
  • A implementação da jogabilidade.
  Como gravar uma chamada telefônica no seu iPhone

Crie um arquivo snakegame.py no qual adicionaremos o código de implementação.

Importando os módulos

Essa parte do código importará os módulos turtle, time e random que são pré-instalados por padrão no Python. Além disso, definiremos valores padrão para a pontuação inicial do jogador, a pontuação mais alta que o jogador atingirá e o tempo de atraso do jogador em cada movimento. O módulo de tempo é usado aqui para calcular o tempo de atraso.

Adicione o seguinte trecho de código ao seu arquivo snakegame.py.

import turtle
import random
import time

player_score = 0
highest_score = 0
delay_time = 0.1

Criando a tela do jogo

O módulo turtle que importamos aqui nos permitirá criar uma tela virtual que será a tela da janela do jogo. A partir daqui, podemos criar o corpo da cobra e a comida que a cobra irá coletar. Nossa tela também exibirá a pontuação rastreada do jogador.

Adicione este código ao arquivo 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()

O trecho de código acima começa com a inicialização da tela da tartaruga e passa um título e uma cor de fundo para a tela. Depois de definir o tamanho da janela de nossa tela, desenhamos a forma da cobra na tela virtual.

O método penup() simplesmente pega a caneta da tartaruga para que uma linha não seja desenhada enquanto a tartaruga se move. O método goto(x,y) contém posições de coordenadas que movem a tartaruga para uma posição absoluta.

Em seguida, criamos a comida que a cobra coleta. Queremos exibir a pontuação do jogador toda vez que a cobra coletar a comida e a pontuação mais alta que o jogador atingir durante o jogo. Portanto, usamos o método pen.write() para implementar isso. O hideturtle() oculta o ícone da tartaruga da tela na seção do cabeçalho em que este texto está escrito.

  12 melhores sites de hospedagem de imagens pessoais para empresas

É importante adicionar o turtle.mainloop() no final do seu código, que exibirá a tela por mais tempo para permitir que o usuário faça algo na tela.

Execute o arquivo e você deve ter a seguinte saída:

Configurando as teclas de direção para a cobra

Aqui, configuraremos teclas específicas que guiarão a direção em que a cobra se moverá na tela. Usaremos o ‘L’ para esquerda, ‘R’ para direita, ‘U’ para cima, ‘D’ para baixo. Implementaremos essas direções usando a função de direção da tartaruga que chamaremos na cobra.

Adicione o seguinte trecho de código ao seu 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')

A função move() acima define o movimento da cobra na posição definida dentro de um valor de coordenada preciso.

A função listen() é um ouvinte de eventos que chama os métodos que movem a cobra para uma direção específica quando o jogador pressiona a tecla.

A implementação da jogabilidade do jogo snake

Depois de estabelecer as perspectivas básicas do nosso jogo de cobras, teremos que fazer o jogo em tempo real.

Isso envolverá o seguinte:

  • Aumentando o comprimento da cobra toda vez que ela coleta o alimento, de preferência usando uma cor diferente.
  • Incrementando a pontuação do jogador cada vez que a cobra coleta a comida e rastreando a pontuação mais alta.
  • O jogador é capaz de controlar a cobra de colidir com a parede ou seu próprio corpo.
  • O jogo recomeça quando a cobra colide.
  • A pontuação do jogador é zerada quando o jogo é reiniciado, enquanto a tela mantém a pontuação mais alta do jogador.

Adicione o restante deste código ao seu arquivo python.

segments = []

#Implementing the gameplay
while True:
    wind.update()
    if snake.xcor() > 290 or snake.xcor() < -290 or snake.ycor() > 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()

No trecho de código acima, definimos uma posição aleatória para a comida da cobra na tela. Cada vez que a cobra coleta esse alimento, seu segmento corporal aumenta com uma cor diferente; branco, neste caso, para distinguir o seu crescimento.

  Como melhorar a precisão do rastreamento por GPS em seus aplicativos de treino

Depois que a cobra coleta a comida sem colidir, a comida é colocada em uma posição aleatória dentro do intervalo de 270 coordenadas do tamanho da tela. Toda vez que a cobra coleta comida, a pontuação do jogador aumenta em 5. Quando a cobra colide, a pontuação do jogador é definida como 0, enquanto a tela mantém sua pontuação mais alta.

Agora retorne o arquivo Python e você deverá ver sua tela de tartaruga assim:

Conclusão 🐍

Usar a biblioteca de tartarugas é uma maneira divertida e fácil de criar o jogo da cobra, como vimos neste artigo. Alternativamente, você pode implementar o mesmo usando a biblioteca PyGame. Você pode conferir o Tutorial PyGame aqui e veja como você pode implementar o jogo de forma diferente.

Você também pode experimentar um jogo de adivinhação de números em Python ou como obter dados JSON em Python.
Aproveite a codificação!