Как да направите игра със змия в Python

Ако обичате да играете на змия, сигурен съм, че тази статия ще ви бъде интересна.

В тази статия ще ви науча как да измислите проста игра със змия, която дори начинаещ в Python би намерил лесна за разработване.

Съществуват няколко начина за създаване на тази игра и единият включва използването на библиотеката PyGame на Python, която е библиотека на Python, която използваме за създаване на игри.

Другият начин е чрез използването на библиотеката на костенурките. Този модул идва предварително инсталиран с Python и предоставя виртуално платно за потребителите да създават форми и картини.

Следователно тази статия ще използва библиотеката на костенурките, за да реализира нашата проста игра със змия, която е удобна за начинаещи, особено за начинаещи разработчици на Python.

В допълнение към този модул, ще използваме и два други модула, а именно;

  • Времеви модул – Този метод ще ни позволи да следим броя секунди, които са изминали от предишния път.
  • Случаен модул – Той генерира произволни числа в Python.

Други основни инструменти, които ще трябва да използвате, включват текстов редактор по ваш избор. Ще използвам VSCode в тази статия. Разбира се, ще трябва да инсталирате Python 3 на вашата машина, ако все още не го имате. Можете също така да използвате компилатора pctechbg.net.

Това трябва да е забавно!

Как работи играта със змия

Крайната цел на тази игра е играчът да постигне най-висок резултат, като контролира змията, за да събере храната, която показва екрана.

Играчът контролира змията с помощта на четири клавиша за посока, които са спрямо посоката, към която се движи змията. Ако змията удари блок или себе си, играчът губи играта.

Следващите стъпки ще следваме, за да реализираме тази игра.

  • Импортиране в нашите програми на предварително инсталираните модули (костенурка, време и случаен).
  • Създаване на екрана на играта с помощта на модула костенурка.
  • Задаване на клавишите за посоката на движение на змията около екрана.
  • Реализация на геймплея.
  Копаене на биткойни за манекени: Разбиране на основите

Създайте файл snakegame.py, в който ще добавим кода за внедряване.

Импортиране на модулите

Тази част от кода ще импортира костенурката, времето и произволните модули, които по подразбиране са предварително инсталирани в Python. Освен това след това ще зададем стойности по подразбиране за първоначалния резултат на играча, най-високия резултат, който играчът ще постигне, и времето на забавяне, взето от играча при всеки ход. Времевият модул се използва тук за изчисляване на времето на забавяне.

Добавете следния код към вашия файл snakegame.py.

import turtle
import random
import time

player_score = 0
highest_score = 0
delay_time = 0.1

Създаване на екрана на играта

Модулът за костенурка, който импортираме тук, ще ни позволи да създадем виртуално платно, което ще бъде екранът на прозореца на играта. От тук можем да създадем тялото на змията и храната, която змията ще събира. Нашият екран също ще показва проследения резултат на играча.

Добавете този код към файла на 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()

Кодовият фрагмент по-горе започва с инициализиране на екрана на костенурката и предава заглавие и цвят на фона на екрана. След като определим размера на прозореца на нашия екран, рисуваме формата на змията върху виртуалното платно.

Методът penup() просто взима писалката на костенурката, така че да не се рисува линия, докато костенурката се движи. Методът goto(x,y) съдържа координатни позиции, които преместват костенурката до абсолютна позиция.

След това създаваме храната, която змията събира. Ще искаме да показваме резултата на играча всеки път, когато змията събира храната и най-високия резултат, който играчът достига по време на играта. Затова използваме метода pen.write(), за да приложим това. Hideturtle() скрива иконата на костенурка от екрана в заглавната част, в която е написан този текст.

  Как да накарате вашия iPhone да крещи, когато го включите

Важно е да добавите turtle.mainloop() в края на вашия код, който ще показва екрана по-дълго, за да ви позволи като потребител да направите нещо на екрана.

Стартирайте файла и трябва да имате следния резултат:

Настройване на клавишите за посока за змията

Тук ще настроим конкретни клавиши, които ще насочват посоката, в която змията ще се движи на екрана. Ще използваме ‘L’ за ляво, ‘R’ за дясно, ‘U’ за нагоре, ‘D’ за надолу. Ние ще приложим тези указания, като използваме функцията за насочване на костенурката, която ще извикаме на змията.

Добавете следния кодов фрагмент към вашия код.

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

Функцията move() по-горе задава движението на змията в определената позиция в рамките на точна координатна стойност.

Функцията listen() е слушател на събития, който извиква методите, които преместват змията в определена посока, когато играчът натисне клавиша.

Реализация на геймплея на играта змия

След като изложихме основния изглед на нашата игра със змии, ще трябва да направим играта в реално време.

Това ще включва следното:

  • Увеличете дължината на змията всеки път, когато събира храната, като за предпочитане използвате различен цвят.
  • Увеличаване на резултата на играча всеки път, когато змията събере храната и проследяване на най-високия резултат.
  • Играчът може да контролира змията от сблъсък със стената или със собственото си тяло.
  • Играта се рестартира, когато змията се сблъска.
  • Резултатът на играча се нулира, когато играта се рестартира, докато екранът запазва най-високия резултат на играча.

Добавете останалата част от този код към вашия 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()

В горния кодов фрагмент задаваме произволна позиция за храната на змията в екрана. Всеки път, когато змията събира тази храна, сегментът на тялото й се увеличава с различен цвят; бяло, в този случай, за да се различи растежът му.

  Автоматично превключване от WiFi към мобилни данни, когато сигналът е нисък

След като змията събере храната, без да се сблъсква, храната се поставя на произволна позиция в рамките на 270 координатен диапазон на размера на екрана. Всеки път, когато змията събира храна, резултатът на играча се увеличава с 5. Когато змията се сблъска, резултатът на играча се задава на 0, докато екранът запазва най-високия си резултат.

Сега върнете файла Python и трябва да видите екрана на костенурката да изглежда така:

Заключение 🐍

Използването на библиотеката на костенурките е един забавен и лесен начин за създаване на играта със змии, както видяхме в тази статия. Като алтернатива можете да приложите същото, като използвате библиотеката PyGame. Можете да проверите на Урок за PyGame тук и вижте как можете да внедрите играта по различен начин.

Можете също да изпробвате игра за отгатване на числа в Python или как да получите JSON данни в Python.
Насладете се на кодирането!