Igra zmije u korištenju Python modula

Uvjeren sam da će vam ovaj esej biti od pomoći ako ste ljubitelj igre zmija. Provest ću vas kroz korake stvaranja jednostavne igre u ovom postu koju će čak i početnici u Pythonu lako izraditi. Knjižnica PyGame u Pythonu, koji je Python paket koji koristimo za razvoj igara, jedan je od različitih pristupa dizajniranju igre.

Korištenje knjižnične kornjače dodatna je strategija. Korisnici mogu generirati grafike i crtati obrasce na online platnu zahvaljujući ovom modulu, koji je već instaliran s Pythonom. Tako, u ovom vodiču, upotrijebit ćemo biblioteku kornjača za izgradnju naše osnovne zmije

Igra zmija u Pythonu

  • vremenski modul. Ova nam tehnika omogućuje praćenje količine sekundi koje su prošle od prethodnog puta.
  • Nasumični modul igre zmija – Stvara nasumične brojeve u Pythonu.

Ostali alati koji će vam trebati uključuju uređivač teksta koji želite. Koristit ću VSCode u ovom postu. Naravno, koji će vam trebati za postavljanje Pythona 3 na svom uređaju ako ga već nemate instaliran. Također možete preuzeti kako biste instalirali Geekflare Compiler. Ovo bi moglo biti vrlo ugodno iskustvo!

Sadržaj

Kako funkcionira igra zmija

Igrači moraju manipulirati zmijom kako bi dobili hranu koja je prikazana na ekranu kako bi postigli najbolji mogući rezultat u ovoj igri. Igrač usmjerava zmiju pritiskom na jednu od četiri tipke za usmjeravanje koje pokazuju smjer u kojem se zmija kreće.

Zmija će biti uklonjena iz igre ako udari igrača ili predmet. Postupci koje ćemo koristiti za dalje igranje ove igre.

  • Uvoz modula koji su predinstalirani u naše aplikacije (vrijeme kornjače, kornjača kao i slučajni).
  • Zaslon igre kreiran je s modulom Turtle.
  • Postavite tipke za kontrolu smjera kretanja zmije po ekranu.
  • Implementacija igre.

Napravite datoteku snakegame.py kojoj ćemo dodati implementacijski program.

Uvoz modula

Ovaj odjeljak programa učitava vrijeme instalirano na Python, kornjača, i slučajni moduli. Dodatno, zadani brojevi za početni rezultat igrača, najveći rezultat koji mogu postići, i definirat će se vrijeme koje igrač čeka između svakog poteza. Kako bi se utvrdilo koliko je vremena odgođeno, potreban je vremenski modul.

import turtle
import random
import time

player_score = 0
highest_score = 0
delay_time = 0.1

Izrada ekrana za igru

Modul kornjača koji instaliramo omogućuje nam stvaranje virtualnog zaslona koji će služiti kao zaslon prozora igre. Zatim možemo izgraditi tijelo zmije, kao i namirnice koje će zmija jesti. Zaslon će također prikazati rezultat igračevog trackera.

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

Kod u gore spomenutom izvatku prvo uspostavlja zaslon kornjače prije dodavanja početnog naslova i boje pozadine. Prvo biramo veličinu prije nego što skiciramo oblik zmije na naše digitalno platno. Da spriječi stvaranje linija dok se kornjača kreće, penup metoda podiže kornjačinu olovku.

Uz korištenje svoje goto tehnike, kornjača se može usmjeriti na točnu poziciju pomoću koordinata. Hranu koju zmija jede proizvodimo mi.

Svaki put kad zmija skuplja hranu, želimo prikazati rezultat svakog igrača. Također želimo pokazati najveći rezultat koji osoba dobije tijekom igre. Zbog ovog razloga, koristimo olovke. Kao olovka, pisati. Opišite metodu koju treba dovršiti.

Postavljanje tipki za upute za zmiju

U ovom primjeru, programiramo određene tipke za upravljanje kretanjem zmije po ekranu. Iskoristit ćemo pismo “L” kao lijeva tipka, “R” za lijevo, “U” za gore, i “D” za prema dolje. Ove će se upute primijeniti u praksi pozivanjem zmije pomoću funkcije usmjeravanja kornjače.

Uključite sljedeće primjere koda u svoj.

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

Potez() gore navedena funkcija omogućuje kretanje zmije u položaju koji je naveden unutar određene koordinate. Slušati() funkcionira kao slušatelj događaja koji poziva metode koje usmjeravaju zmiju u određenom smjeru nakon što korisnik pritisne gumb.

Implementacija igranja igre u obliku zmije

Igru će trebati pretvoriti u akciju uživo nakon što se uspostavi temeljna struktura. To je ono što će uključivati:

  • produžujući dužinu zmije za drugu boju svaki put kada konzumira hranu.
  • kad god zmija konzumira hranu, rezultat igrača se povećava, a zatim se prati najviši rezultat.
  • Zmiju možete držati kako biste je zaštitili od udaranja o zid ili čak o vlastito tijelo.
  • Nakon što je udario zmiju, igra se nastavlja.
  • Na ekranu međutim, je igračev najveći rezultat iako se igračev rezultat vraća na nulu kada se igra ponovno pokrene.
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()

U gornjem isječku koda koji smo upotrijebili, dodijelili smo nasumično mjesto za zmijsku hranu na ekranu. Svaki put kada zmija pojede hranu, tijelo raste u drugoj boji, bijelo u ovom slučaju, da bi bilo jasno da je njegov rast izrazit.

Kad je zmija skupila hranu i ne sudara se, hrana se prikazuje na nasumičnim mjestima unutar koordinatnog područja od 270 stupnjeva veličine zaslona. Svaki put kad zmija uzme hranu, rezultat igrača se povećava za 5. Ako je zmija uključena u sudar s igračem, njihov se rezultat vraća na 0 a zaslon zadržava svoj najviši rezultat.

Zaključak

Knjižnica kornjača je zabavan i jednostavan način da napravite igru ​​zmija koju smo vidjeli u ovom vodiču. Također možete koristiti biblioteku PyGame u Pythonu za implementaciju iste igre. Čitajući ove, saznajte kako igru ​​možete koristiti drugačije PyGame upute.

Preuzmite zabavnu igru ​​Snake Rivals Snake

Snake Run Race 3D igra trčanja

Preuzmite Snake.io – zabavne Snake .io igre