Snake játék a Python modul használatával

Biztos vagyok benne, hogy ez az esszé hasznos lesz számodra, ha rajongsz a kígyójátékért. Ebben a bejegyzésben végigvezetem egy egyszerű játék létrehozásának lépésein, amelyet még a Python kezdők is könnyen létrehozhatnak. A PyGame könyvtár Pythonban, amely egy Python csomag, amelyet játékok fejlesztésére használunk, a játék tervezésének egyik különféle megközelítése.

A könyvtári teknős használata egy további stratégia. Ennek a modulnak köszönhetően a felhasználók grafikákat generálhatnak és űrlapokat rajzolhatnak online vásznon, amely már telepítve van a Pythonnal. Így, ebben az oktatóanyagban, a teknőskönyvtárat fogjuk használni az alapvető kígyónk megépítésére

Snake játék Pythonban

  • időmodul. Ez a technika lehetővé teszi számunkra, hogy nyomon kövessük az előző alkalom óta eltelt másodpercek számát.
  • a kígyó játék Random modul – Véletlen számokat hoz létre Pythonban.

Egyéb eszközök, amelyekre szüksége lesz, közé tartozik a kívánt szövegszerkesztő. Ebben a bejegyzésben a VSCode-ot fogom használni. természetesen, szüksége lesz a Python beállításához 3 készülékén, ha még nincs telepítve. Le is töltheti a Geekflare Compiler telepítéséhez. Ez nagyon kellemes élmény lehet!

tartalom

Hogyan működik a kígyós játék

A játékosoknak manipulálniuk kell a kígyóval, hogy megszerezzék a képernyőn megjelenő táplálékot, hogy a lehető legjobb pontszámot érjék el ebben a játékban. A játékos a kígyó mozgásának irányába mutató négy iránybillentyű egyikének megnyomásával irányítja a kígyót.

A kígyót eltávolítják a játékból, ha eltalál egy játékost vagy tárgyat. Azok az eljárások, amelyeket ennek a játéknak a folytatásában használunk.

  • Az előre telepített modulok importálása alkalmazásainkba (teknős idő, teknős, valamint véletlenszerű).
  • A játék képernyője a Turtle modullal készült.
  • Állítsa be a gombokat a kígyó mozgási irányának szabályozásához a képernyőn.
  • A játék megvalósítása.

Hozd létre a snakegame.py fájlt, amelyhez hozzáadunk egy implementációs programot.

A modulok importálása

A program ezen része betölti a Python által telepített időt, teknősbéka, és véletlenszerű modulok. Továbbá, alapértelmezett számok a játékos kezdeti pontszámához, az elérhető maximális pontszámot, és az idő, ameddig a játékos késik az egyes lépések között, meghatározásra kerül. Annak megállapítására, hogy mennyi idő késett, időmodulra van szükség.

import turtle
import random
import time

player_score = 0
highest_score = 0
delay_time = 0.1

A játék képernyőjének elkészítése

Az általunk telepített teknős modul lehetővé teszi egy virtuális képernyő létrehozását, amely a játék ablakaként fog szolgálni. Ezután megépíthetjük a kígyó testét, valamint az élelmiszerek, amelyeket a kígyó megeszik. A képernyőn megjelenik a játékos nyomkövetőjének pontszáma is.

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

A fent említett kivonatban szereplő kód először létrehozza a teknős képernyőt, mielőtt hozzáadna egy kezdeti címet és háttérszínt. Először kiválasztjuk a méretet, mielőtt felvázolnánk a kígyó formáját a digitális vásznunkra. Annak megakadályozására, hogy vonalak keletkezzenek, miközben a teknős mozog, a penup módszer felveszi a teknős tollat.

Goto technikájának használatával, a teknős pontos pozícióba irányítható koordináták segítségével. Az ételt, amit a kígyó eszik, mi magunk készítjük.

Minden alkalommal, amikor a kígyó élelmet gyűjt, minden játékos pontszámát szeretnénk megjeleníteni. Azt is szeretnénk megmutatni, hogy az ember a legmagasabb pontszámot kapja a játék során. Emiatt, tollat ​​használunk. Mint a toll, ír. Ismertesse a befejezés módját.

Útmutató gombok beállítása a kígyó számára

Ebben az esetben, programozunk bizonyos billentyűket a kígyó mozgásának vezérlésére a képernyőn. Használjuk a levelet “L” mint a bal gomb, “R” balra, “U” felfelé, és “D” lefelé. Ezeket az utasításokat a gyakorlatban úgy ültetik át, hogy a teknős irányító funkciójával hívják a kígyót.

Szerelje be a következő kódpéldákat.

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

Mozog() A fent említett funkció lehetővé teszi a kígyó mozgását a megadott koordinátán belüli pozícióban. Hallgat() eseményfigyelőként működik, amely meghívja azokat a módszereket, amelyek a kígyót egy bizonyos irányba irányítják, ha a felhasználó megnyomja a gombot.

A játék játékmenetének megvalósítása kígyó formájában

A játékot élőszereplővé kell alakítani, miután az alapstruktúra létrejött. Ez lesz benne:

  • a kígyó hosszának meghosszabbítása minden alkalommal más színnel, amikor táplálékot fogyaszt.
  • valahányszor a kígyó táplálékot fogyaszt, a játékos pontszáma nő, és a legmagasabb pontszámot követi nyomon.
  • A kígyót meg lehet tartani, hogy megóvja a falnak vagy akár a saját testének csapódásától.
  • Miután lecsapott a kígyóra, a játék folytatódik.
  • A képernyőn azonban, a játékos legmagasabb pontszáma, még akkor is, ha a játékos pontszáma nullára áll a játék újraindításakor.
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()

Az általunk használt fenti kódrészletben, véletlenszerű helyet jelöltünk ki a képernyőn a kígyó táplálékának. Minden alkalommal, amikor a kígyó megeszi a táplálékot, a test más színben nő, jelen esetben fehér, egyértelművé tenni, hogy növekedése határozott.

Amikor a kígyó összeszedte a táplálékot, és nem ütközik, az étel véletlenszerű helyen jelenik meg a képernyő méretének 270 fokos koordinátáján belül. Minden alkalommal, amikor a kígyó eszik, a játékos pontszáma eggyel nő 5. Ha a kígyó ütközik a játékossal, pontszámuk visszaáll 0 és a képernyő megtartja a legmagasabb pontszámot.

Következtetés

A teknőskönyvtár szórakoztató és egyszerű módja annak, hogy elkészítsd a kígyók játékát, amelyet ebben az oktatóanyagban láthattunk.. Ugyanennek a játéknak a megvalósításához használhatja a Python PyGame könyvtárát is. Olvassa el ezeket, és megtudhatja, hogyan használhatja másként a játékot PyGame utasítás.

Töltse le a Snake Rivals Fun Snake játékot

Snake Run Race 3D futójáték

Töltse le a Snake.io – Fun Snake .io játékokat