Gyvatės žaidimas naudojant Python modulį

Esu įsitikinęs, kad šis rašinys bus naudingas jums, jei esate gyvačių žaidimo gerbėjas. Šiame įraše paaiškinsiu, kaip sukurti paprastą žaidimą, kurį net Python naujokams bus lengva sukurti. PyGame biblioteka Python, kuris yra Python paketas, kurį naudojame žaidimams kurti, yra vienas iš įvairių žaidimo kūrimo būdų.

Naudotis bibliotekos vėžliuku yra papildoma strategija. Naudodami šį modulį vartotojai gali kurti grafiką ir piešti formas ant internetinės drobės, kuri jau įdiegta su Python. Taigi, šioje pamokoje, naudosime vėžlių biblioteką, kad sukurtume savo pagrindinę gyvatę

Gyvatės žaidimas Python

  • laiko modulis. Ši technika leidžia mums sekti, kiek sekundžių praėjo nuo ankstesnio karto.
  • gyvatės žaidimas Atsitiktinis modulis – Jis sukuria atsitiktinius skaičius Python.

Kiti įrankiai, kurių jums prireiks, yra jūsų pageidaujamo teksto rengyklė. Šiame įraše naudosiu VSCode. Žinoma, jums reikės norint nustatyti Python 3 savo įrenginyje, jei jo dar neįdiegėte. Taip pat galite atsisiųsti, kad įdiegtumėte „Geekflare Compiler“.. Tai gali būti labai maloni patirtis!

turinys

Kaip veikia gyvatės žaidimas

Žaidėjai turi manipuliuoti gyvate, kad gautų maistą, kuris rodomas ekrane, kad pasiektų geriausią įmanomą rezultatą šiame žaidime. Žaidėjas nukreipia gyvatę paspausdamas vieną iš keturių krypties klavišų, kurie rodo gyvatės judėjimo kryptį.

Gyvatė bus pašalinta iš žaidimo, jei ji atsitrenks į žaidėją ar objektą. Procedūros, kurias naudosime žaisdami šį žaidimą.

  • Iš anksto įdiegtų modulių importavimas į mūsų programas (vėžlio laikas, vėžlys, taip pat atsitiktinis).
  • Žaidimo ekranas sukurtas naudojant Turtle modulį.
  • Nustatykite mygtukus, kad valdytumėte gyvatės judėjimo ekrane kryptį.
  • Žaidimo įgyvendinimas.

Sukurkite failą snakegame.py, prie kurio pridėsime diegimo programą.

Modulių importavimas

Šioje programos dalyje įkeliamas „Python“ įdiegtas laikas, vėžlys, ir atsitiktiniai moduliai. Be, numatytieji žaidėjo pradinio rezultato skaičiai, maksimalų balą, kurį jie gali pasiekti, ir bus nustatytas laikas, kurį žaidėjas uždels tarp kiekvieno ėjimo. Siekiant nustatyti, kiek laiko buvo atidėtas, reikalingas laiko modulis.

import turtle
import random
import time

player_score = 0
highest_score = 0
delay_time = 0.1

Žaidimo ekrano kūrimas

Mūsų įdiegtas vėžlio modulis leidžia sukurti virtualų ekraną, kuris bus žaidimo lango ekranas. Tada galime sukurti gyvatės kūną, taip pat maisto produktus, kuriuos valgys gyvatė. Ekrane taip pat bus rodomas žaidėjo stebėjimo priemonės rezultatas.

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

Kodas pirmiau minėtoje ištraukoje pirmiausia sukuria vėžlio ekraną prieš pridedant pradinį pavadinimą ir fono spalvą. Pirmiausia pasirenkame dydį, prieš nubraižydami gyvatės formą ant skaitmeninės drobės. Kad vėžliui judant neatsirastų linijos, penup metodas paima vėžlio rašiklį.

Naudojant savo goto techniką, vėžlys gali būti nukreiptas į tikslią vietą naudojant koordinates. Maistas, kurį valgo gyvatė, gaminamas mūsų pačių.

Kiekvieną kartą, kai gyvatė renka maistą, norime parodyti kiekvieno žaidėjo rezultatą. Taip pat norime parodyti aukščiausią balą, kurį žmogus gauna žaidimo metu. Dėl šios priežasties, mes naudojame rašiklius. Kaip rašiklis, rašyti. Aprašykite užbaigimo būdą.

Gyvatės nuorodų klavišų nustatymas

Šiuo atveju, užprogramuojame tam tikrus klavišus, kad valdytume gyvatės judesį ekrane. Mes naudosime laišką “L” kaip kairysis klavišas, “R” už kairę, “U” į viršų, ir “D” į apačią. Šios instrukcijos bus įgyvendintos iškviečiant gyvatę naudojant vėžlio krypties funkciją.

Įtraukite šiuos kodo pavyzdžius į savo.

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

Judėti() aukščiau minėta funkcija leidžia gyvatei judėti nurodytoje koordinatėje nurodytoje padėtyje. Klausyk() veikia kaip įvykių klausytojas, kuris iškviečia metodus, kurie nukreipia gyvatę tam tikra kryptimi, kai vartotojas paspaudžia mygtuką.

Žaidimo žaidimo įgyvendinimas gyvatės pavidalu

Sukūrus pagrindinę struktūrą, žaidimas turės būti paverstas tiesioginiu. Tai bus įtraukta:

  • pailginant gyvatės ilgį vis kita spalva, kai ji valgo maistą.
  • kai tik gyvatė valgo, žaidėjo rezultatas yra padidintas, ir tada sekamas aukščiausias balas.
  • Gyvatę galima laikyti, kad ji neatsitrenktų į sieną ar net savo kūną.
  • Atsitrenkęs į gyvatę, žaidimas tęsiasi.
  • Tačiau ekrane, yra aukščiausias žaidėjo rezultatas, net jei žaidėjo rezultatas yra nulinis, kai žaidimas pradedamas iš naujo.
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()

Aukščiau esančiame kodo fragmente, kurį naudojome, ekrane paskyrėme atsitiktinę vietą gyvatės maistui. Kiekvieną kartą, kai gyvatė valgo maistą, kūnas auga kitos spalvos, šiuo atveju balta, kad būtų aišku, kad jo augimas yra skirtingas.

Kai gyvatė surenka maistą ir nesusiduria, maistas rodomas atsitiktinėje vietoje 270 laipsnių ekrano dydžio koordinačių srityje. Kiekvieną kartą, kai gyvatė paima maistą, žaidėjo rezultatas padidėja 5. Jei gyvatė patenka į susidūrimą su žaidėju, jų rezultatas iš naujo nustatomas į 0 ir ekranas išlaiko aukščiausią balą.

išvada

Vėžlių biblioteka yra įdomus ir paprastas būdas sukurti gyvačių žaidimą, kurį matėme šioje pamokoje. Taip pat galite naudoti PyGame biblioteką Python, kad įgyvendintumėte tą patį žaidimą. Sužinokite, kaip galite kitaip panaudoti žaidimą, skaitydami juos PyGame nurodymus.

Atsisiųskite linksmą gyvatės žaidimą Snake Rivals

Snake Run Race 3D bėgimo žaidimas

Atsisiųskite Snake.io – linksmus Snake .io žaidimus