Cum să faci un joc cu șarpe în Python

Dacă sunteți unul căruia îi place să joace jocul șarpelui, sunt sigur că veți găsi acest articol interesant.

În acest articol, vă voi învăța cum să veniți cu un simplu joc de șarpe pe care chiar și un începător în Python l-ar găsi ușor de dezvoltat.

Există o serie de moduri de a crea acest joc și una include utilizarea bibliotecii PyGame a lui Python, care este o bibliotecă Python pe care o folosim pentru a crea jocuri.

Cealaltă cale este prin utilizarea bibliotecii țestoase. Acest modul vine preinstalat cu Python și oferă o pânză virtuală pentru ca utilizatorii să creeze forme și imagini.

Prin urmare, acest articol va folosi biblioteca țestoase pentru a implementa jocul nostru simplu cu șarpe, care este prietenos pentru începători, în special pentru dezvoltatorii Python începători.

Pe lângă acest modul, vom folosi și alte două module și anume;

  • Modul de timp – Această metodă ne va permite să ținem evidența numărului de secunde care au trecut de la ora anterioară.
  • Modul aleatoriu – generează numere aleatoriu în Python.

Alte instrumente de bază pe care va trebui să le utilizați includ un editor de text la alegere. Voi folosi VSCode în acest articol. Desigur, va trebui să instalați Python 3 pe computer dacă nu îl aveți deja. De asemenea, puteți utiliza compilatorul tipstrick.ro.

Ar trebui să fie distractiv!

Cum funcționează jocul șarpelor

Scopul final al acestui joc este ca jucătorul să obțină cel mai mare scor controlând șarpele pentru a colecta alimentele afișate pe ecran.

Jucătorul controlează șarpele folosind patru taste de direcție care sunt relativ la direcția spre care se mișcă șarpele. În cazul în care șarpele lovește un bloc sau el însuși, jucătorul pierde jocul.

Următorii pași îi vom urma pentru a implementa acest joc.

  • Importarea în programele noastre a modulelor preinstalate (turtle, time și aleatoriu).
  • Crearea ecranului jocului folosind modulul țestoasă.
  • Setarea tastelor pentru direcția de mișcare a șarpelui în jurul ecranului.
  • Implementarea gameplay-ului.
  Cum să utilizați rețeaua Airtel 5G în India

Creați un fișier snakegame.py în care vom adăuga codul de implementare.

Importul modulelor

Acest fragment de cod va importa modulele testoase, de timp și aleatorii care sunt implicit preinstalate în Python. În plus, vom seta apoi valorile implicite pentru scorul inițial al jucătorului, cel mai mare scor pe care îl va obține jucătorul și timpul de întârziere luat de jucător la fiecare mișcare. Modulul de timp este utilizat aici pentru a calcula timpul de întârziere.

Adăugați următorul fragment de cod în fișierul dvs. snakegame.py.

import turtle
import random
import time

player_score = 0
highest_score = 0
delay_time = 0.1

Crearea ecranului de afișare a jocului

Modulul broască țestoasă pe care îl importăm aici ne va permite să creăm o pânză virtuală care va fi ecranul fereastra jocului. De aici, putem crea corpul șarpelui și hrana pe care o va colecta șarpele. Ecranul nostru va afișa, de asemenea, scorul urmărit de jucător.

Adăugați acest cod în fișierul 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()

Fragmentul de cod de mai sus începe cu inițializarea ecranului broască țestoasă și transmite un titlu și o culoare de fundal pe ecran. După ce definim dimensiunea ferestrei ecranului nostru, desenăm forma șarpelui pe pânza virtuală.

Metoda penup() preia pur și simplu stiloul broaștei țestoase, astfel încât să nu fie trasată o linie în timp ce țestoasa se mișcă. Metoda goto(x,y) conține poziții de coordonate care mută țestoasa într-o poziție absolută.

Creăm apoi hrana pe care o colectează șarpele. Vom dori să afișăm scorul jucătorului de fiecare dată când șarpele colectează hrana și cel mai mare scor pe care îl atinge jucătorul în timpul jocului. Prin urmare, folosim metoda pen.write() pentru a implementa acest lucru. Hideturtle() ascunde pictograma țestoasă din ecranul din secțiunea antet în care este scris acest text.

  8 moduri de a remedia eroarea de conexiune slabă în Clubhouse

Este important să adăugați turtle.mainloop() la sfârșitul codului, care va afișa ecranul mai mult pentru a vă permite utilizatorului să facă ceva pe ecran.

Rulați fișierul și ar trebui să aveți următorul rezultat:

Configurarea tastelor de direcție pentru șarpe

Aici, vom configura taste specifice care vor ghida direcția în care șarpele se va mișca pe ecran. Vom folosi „L” pentru stânga, „R” pentru dreapta, „U” pentru sus, „D” pentru jos. Vom implementa aceste direcții folosind funcția de direcție a țestoasei pe care o vom apela șarpelui.

Adăugați următorul fragment de cod la codul dvs.

# 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')

Funcția move() de mai sus stabilește mișcarea șarpelui în poziția definită într-o valoare de coordonată precisă.

Funcția listen() este un ascultător de evenimente care apelează la metodele care mută șarpele într-o anumită direcție atunci când jucătorul apasă tasta.

Implementarea gameplay-ului jocului șarpe

După ce am stabilit perspectiva de bază a jocului nostru cu șarpe, va trebui să facem jocul în timp real.

Aceasta va implica următoarele:

  • Creșterea lungimii șarpelui de fiecare dată când colectează hrana folosind, de preferință, o culoare diferită.
  • Creșterea scorului jucătorului de fiecare dată când șarpele colectează mâncarea și urmărirea celui mai mare scor.
  • Jucătorul este capabil să controleze șarpele să nu se ciocnească de peretele sau de propriul său corp.
  • Jocul repornește când șarpele se ciocnește.
  • Scorul jucătorului este resetat la zero când jocul repornește, în timp ce ecranul păstrează cel mai mare scor al jucătorului.
  Cum să estompați o fotografie pe iPhone

Adăugați restul acestui cod în fișierul dvs. 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()

În fragmentul de cod de mai sus, setăm o poziție aleatorie pentru hrana șarpelui în ecran. De fiecare dată când șarpele colectează această hrană, segmentul său corporal crește cu o culoare diferită; alb, în ​​acest caz, pentru a-i distinge creșterea.

După ce șarpele colectează hrana fără să se ciocnească, hrana este setată într-o poziție aleatorie în intervalul de 270 de coordonate al dimensiunii ecranului. De fiecare dată când șarpele colectează mâncare, scorul jucătorului crește cu 5. Când șarpele se ciocnește, scorul jucătorului este setat la 0, în timp ce ecranul își păstrează cel mai mare scor.

Acum returnați fișierul Python și ar trebui să vedeți ecranul țestoasei arătând astfel:

Concluzie 🐍

Utilizarea bibliotecii țestoase este o modalitate distractivă și ușoară de a crea jocul șarpelui, așa cum am văzut în acest articol. Alternativ, puteți implementa același lucru folosind biblioteca PyGame. Puteți verifica Tutorial PyGame aici și vezi cum ai putea implementa jocul altfel.

De asemenea, puteți încerca un joc de ghicire a numărului în Python sau cum să obțineți date JSON în Python.
Bucurați-vă de codificare!