Како направити игру змија у Питхон-у

Ако волите да играте игру змија, сигуран сам да ће вам овај чланак бити занимљив.

У овом чланку ћу вас научити како да смислите једноставну игру змија коју би чак и почетнику у Питхон-у било лако развити.

Постоји више начина за креирање ове игре, а један укључује употребу Питхон библиотеке ПиГаме која је Питхон библиотека коју користимо за креирање игара.

Други начин је коришћење библиотеке корњача. Овај модул долази са унапред инсталираним Питхон-ом и пружа виртуелно платно за кориснике да креирају облике и слике.

Стога ће овај чланак користити библиотеку корњача за имплементацију наше једноставне игре змија која је погодна за почетнике, посебно за почетнике Питхон програмере.

Поред овог модула, користићемо још два модула и то;

  • Временски модул – Овај метод ће нам омогућити да пратимо број секунди који су протекли од претходног времена.
  • Рандом модул – Генерише бројеве насумично у Питхон-у.

Остали основни алати које ћете морати да користите укључују уређивач текста по вашем избору. У овом чланку ћу користити ВСЦоде. Наравно, мораћете да инсталирате Питхон 3 на своју машину ако га већ немате. Такође можете користити вдзвдз компајлер.

Ово би требало да буде забавно!

Како игра змија функционише

Крајњи циљ ове игре је да играч постигне највиши резултат контролисањем змије да прикупи храну коју приказује екран.

Играч контролише змију користећи четири тастера за правац који су релативни у односу на смер у ком се змија креће. Ако змија удари блок или себе, играч губи игру.

Следећи кораци које ћемо пратити да бисмо имплементирали ову игру.

  • Увоз у наше програме унапред инсталираних модула (корњача, време и случајни).
  • Креирање екрана игре помоћу модула корњача.
  • Подешавање тастера за смер кретања змије по екрану.
  • Имплементација игре.
  Како дуплирати страницу у Мицрософт Ворд-у

Направите датотеку снакегаме.пи у коју ћемо додати код за имплементацију.

Увоз модула

Овај део кода ће увести корњачу, време и насумичне модуле који су подразумевано унапред инсталирани у Питхон-у. Поред тога, тада ћемо поставити подразумеване вредности за почетни резултат играча, највиши резултат који ће играч постићи и време кашњења које играч узима у сваком потезу. Временски модул се овде користи за израчунавање времена кашњења.

Додајте следећи део кода у датотеку снакегаме.пи.

import turtle
import random
import time

player_score = 0
highest_score = 0
delay_time = 0.1

Креирање екрана игре

Модул корњача који овде увозимо омогућиће нам да креирамо виртуелно платно које ће бити екран прозора игре. Одавде можемо да креирамо тело змије и храну коју ће змија сакупљати. Наш екран ће такође приказати резултат праћеног играча.

Додајте овај код у Питхон датотеку.

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

Исечак кода изнад почиње иницијализацијом екрана корњаче и преноси наслов и боју позадине на екран. Након што дефинишемо величину прозора нашег екрана, цртамо облик змије на виртуелном платну.

Метода пенуп() једноставно подиже корњачино перо тако да се линија не повлачи док се корњача креће. Метод гото(к,и) садржи координатне позиције које померају корњачу у апсолутни положај.

Затим стварамо храну коју змија сакупља. Желећемо да прикажемо резултат играча сваки пут када змија сакупи храну и највећи резултат који играч постигне током игре. Стога користимо методу пен.врите() да бисмо ово имплементирали. Хидетуртле() сакрива икону корњаче са екрана у одељку заглавља у којем је написан овај текст.

Важно је додати туртле.маинлооп() на крај вашег кода, који ће дуже приказивати екран како би вам омогућио корисник да уради нешто на екрану.

  Помоћник за групе картица чини управљање картицама у Фирефок-у приступачнијим

Покрените датотеку и требало би да имате следећи излаз:

Подешавање тастера за правац за змију

Овде ћемо подесити одређене тастере који ће водити смер у коме ће се змија кретати на екрану. Користићемо ‘Л’ за лево, ‘Р’ за десно, ‘У’ за горе, ‘Д’ за доле. Ова упутства ћемо применити користећи функцију правца корњаче коју ћемо позвати на змију.

Додајте следећи исечак кода у свој код.

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

Функција мове() изнад поставља кретање змије у дефинисаној позицији унутар прецизне вредности координата.

Функција листен() је слушалац догађаја који позива методе које померају змију у одређеном правцу када играч притисне тастер.

Имплементација игре змија

Након што поставимо основни изглед наше игре змија, мораћемо да направимо игру у реалном времену.

Ово ће укључивати следеће:

  • Повећање дужине змије сваки пут када сакупља храну по могућству коришћењем друге боје.
  • Повећање резултата играча сваки пут када змија скупља храну и праћење највећег резултата.
  • Играч је у стању да контролише змију од судара са зидом или сопственим телом.
  • Игра се поново покреће када се змија судари.
  • Резултат играча се ресетује на нулу када се игра поново покрене, док екран задржава највиши резултат играча.

Додајте остатак овог кода у своју Питхон датотеку.

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

У горњем исечку кода, поставили смо насумични положај за храну змије на екрану. Сваки пут када змија сакупи ову храну, њен сегмент тела се повећава са другом бојом; бело, у овом случају, да би се разликовао његов раст.

  12 најбољих зомби игара за тестирање својих вештина преживљавања [2023]

Након што змија сакупи храну без судара, храна се поставља на насумични положај унутар опсега од 270 координата величине екрана. Сваки пут када змија скупља храну, резултат играча се повећава за 5. Када се змија судари, резултат играча је постављен на 0 док екран задржава свој највиши резултат.

Сада вратите Питхон датотеку и требало би да видите да екран корњаче изгледа овако:

Закључак 🐍

Коришћење библиотеке корњача је један забаван и једноставан начин за креирање игре змија као што смо видели у овом чланку. Алтернативно, можете имплементирати исто користећи библиотеку ПиГаме. Можете погледати ПиГаме водич овде и видите како можете другачије да примените игру.

Такође можете да испробате игру погађања бројева у Питхон-у или како да добијете ЈСОН податке у Питхон-у.
Уживајте у кодирању!