Python 모듈을 사용한 스네이크 게임

뱀 게임의 팬이라면 이 에세이가 도움이 될 것이라고 확신합니다.. 이 게시물에서는 Python 초보자도 쉽게 만들 수 있는 간단한 게임을 만드는 단계를 안내합니다.. Python의 PyGame 라이브러리, 게임 개발에 사용하는 Python 패키지입니다., 게임을 설계하는 다양한 접근 방식 중 하나입니다..

라이브러리 거북이를 활용하는 것은 추가 전략입니다.. 사용자는 이 모듈 덕분에 온라인 캔버스에서 그래픽을 생성하고 양식을 그릴 수 있습니다., Python과 함께 이미 설치되어 있는. 그래서, 이 튜토리얼에서, 거북이 라이브러리를 사용하여 기본적인 뱀을 만들 것입니다.

Python의 뱀 게임

  • 시간 모듈. 이 기술을 사용하면 이전 시간 이후 경과된 시간(초)을 추적할 수 있습니다..
  • 뱀 게임 랜덤 모듈 – 파이썬에서 난수를 생성합니다..

필요한 다른 도구에는 선호하는 텍스트 편집기가 포함됩니다.. 이 게시물에서는 VSCode를 사용하겠습니다.. 물론이야, Python을 설정하려면 다음이 필요합니다. 3 아직 설치하지 않은 경우 장치에. Geekflare Compiler를 다운로드하여 설치할 수도 있습니다.. 이것은 많은 즐거운 경험이 될 수 있습니다!

내용

뱀 게임은 어떻게 작동합니까

플레이어는 이 게임에서 가능한 최고의 점수를 얻기 위해 뱀을 조작하여 화면에 표시되는 음식을 획득해야 합니다.. 플레이어는 뱀이 움직이는 방향을 가리키는 네 방향 키 중 하나를 눌러 뱀을 지시합니다..

뱀이 플레이어나 물체를 치면 게임에서 제거됩니다.. 앞으로 이 게임을 플레이하는 데 사용할 절차.

  • 사전 설치된 모듈을 애플리케이션으로 가져오기 (거북이 시간, 거북이뿐만 아니라 무작위).
  • 게임의 화면 디스플레이는 Turtle 모듈로 생성됩니다..
  • 화면에서 뱀의 이동 방향을 제어하는 ​​키 설정.
  • 게임의 구현.

구현 프로그램을 추가할 snakegame.py 파일을 생성합니다..

모듈 가져오기

프로그램의 이 섹션은 Python 설치 시간을 로드합니다., 거북이, 그리고 랜덤 모듈. 또한, 플레이어의 초기 점수에 대한 기본 숫자, 도달할 수 있는 최대 점수, 각 이동 사이에 플레이어가 지연하는 시간이 정의됩니다.. 얼마나 많은 시간이 지연되었는지 확인하기 위해, 시간 모듈이 필요합니다.

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

앞서 언급한 발췌문의 코드는 초기 제목과 배경색을 추가하기 전에 먼저 거북이 화면을 설정합니다.. 디지털 캔버스에 뱀 ​​모양을 스케치하기 전에 먼저 크기를 선택합니다.. 거북이가 움직이는 동안 줄이 생기지 않도록, Penup 방식은 거북이의 펜을 집는다..

goto 기술을 사용하여, 거북이는 좌표를 사용하여 정확한 위치로 향할 수 있습니다.. 뱀이 먹는 음식은 우리가 만든 것이다.

뱀이 먹이를 모을 때마다, 각 플레이어의 점수를 표시하고 싶습니다.. 우리는 또한 게임 중에 사람이 받은 최고 점수를 보여주고 싶습니다.. 이런 이유로, 우리는 펜을 사용합니다. 펜으로, 쓰다. 완료 방법 설명.

뱀의 방향 키 설정

이 경우, 화면에서 뱀의 움직임을 제어하기 위해 특정 키를 프로그래밍합니다.. 우리는 편지를 사용할 것입니다 “엘” 왼쪽 키로, “아르 자형” 왼쪽, “유” 위쪽으로, 과 “디” 아래로. 이 지침은 거북이의 방향 기능을 사용하여 뱀을 호출하여 실행됩니다..

다음 코드 예제를.

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

이동하다() 위에서 언급한 기능은 지정된 좌표 내에서 지정된 위치에서 뱀의 움직임을 허용합니다.. 듣다() 사용자가 버튼을 누르면 뱀을 특정 방향으로 안내하는 메서드를 호출하는 이벤트 리스너로 기능합니다..

뱀의 형태로 게임 플레이 구현

기본 구조가 확립된 후 게임을 실사로 전환해야 합니다.. 이것이 포함될 것입니다.:

  • 음식을 먹을 때마다 다른 색으로 뱀의 길이를 늘립니다..
  • 뱀이 음식을 먹을 때마다, 플레이어의 점수가 증가합니다., 그런 다음 가장 높은 점수가 추적됩니다..
  • 뱀이 벽이나 자신의 몸에 부딪히지 않도록 보호하기 위해 잡아둘 수도 있습니다..
  • 뱀을 친 후, 게임은 계속된다.
  • 그런데 화면에, 게임을 다시 시작할 때 플레이어의 점수가 0으로 재설정되더라도 플레이어의 최고 점수입니다..
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()

우리가 사용한 위의 코드 스니펫에서, 화면에서 뱀의 먹이를 위한 임의의 위치를 ​​지정했습니다.. 뱀이 영양분을 먹을 때마다, 몸은 다른 ​​색으로 자랍니다., 이 경우 흰색, 그것의 성장이 뚜렷하다는 것을 분명히하기 위해.

뱀이 먹이를 모으고 충돌하지 않을 때, 화면 크기의 270도 좌표 영역 내 임의의 위치에 음식이 표시됩니다.. 뱀이 먹이를 먹을 때마다, 플레이어의 점수는 다음과 같이 증가합니다. 5. 뱀이 플레이어와 충돌하는 경우, 그들의 점수는 0 그리고 화면은 최고 점수를 유지합니다.

결론

거북이 라이브러리는 이 튜토리얼에서 본 뱀 게임을 만드는 재미있고 간단한 방법입니다.. Python의 PyGame 라이브러리를 사용하여 동일한 게임을 구현할 수도 있습니다.. 다음을 읽고 게임을 다르게 활용할 수 있는 방법을 알아보십시오. 파이게임 지침.

Snake Rivals 재미있는 뱀 게임 다운로드

스네이크 런 레이스 3D 러닝 게임

Snake.io 다운로드 - 재미있는 Snake .io 게임