초보자를위한 PyGame

비디오 게임에 매료되어 자신 만의 게임을 만들고 싶었던 적이 있습니까? 어린 시절부터 모든 사람이 자신 만의 게임을 만들고 자신 만의 규칙을 디자인하는 환상을 가지고 있다고 생각합니다. 저를 포함한 많은 사람들이 게임을 만드는 것이 어렵다고 생각했지만 다양한 옵션을 살펴 보았을 때 PyGame을 발견했습니다. 제가 꿈꾸던 게임을 만드는 데 도움이 된 매우 흥미로운 과정이었습니다.

원하는 게임을 만들려면 약간의 파이썬 프로그래밍 만 있으면됩니다. 내 블로그는 반드시 자신 만의 게임을 만드는 데 도움이 될 것입니다. 이제 기본 사항을 이해하고 구현하는 데 도움이되는 PyGame 튜토리얼을 시작하겠습니다.

소개

PyGame이란 무엇입니까?

PyGame은 Python 언어 라이브러리입니다. 2D 게임 개발에 사용되며 Python 모듈 세트를 사용 하여 게임을 개발할 수있는 플랫폼 입니다. 이해하기 쉽고 초보자 친화적 인 플랫폼으로 게임을 빠르게 개발할 수 있습니다. PyGame의 공식 웹 사이트를 통해 실제로 무엇인지 알 수 있습니다.

파이 게임의 공식 웹 사이트는 다음과 같습니다 - https://www.pygame.org

시작하기 전에 어떤 기본 준비가 필요합니까?

  1. 소스 코드를 작성하려면 Python IDLE 이 있어야 합니다. 공식 IDLE은 다음 웹 사이트에서 다운로드 할 수 있습니다 .- www.python.org. 이 링크는 다운로드로 리디렉션됩니다. 운영 체제에 따라 최신 버전의 Python을 다운로드하십시오. 다운로드하는 동안 경로추가 할 확인란을 선택하는 것을 잊지 마십시오 . 라이브러리 파이 게임을 다운로드하고 프로그래밍을 할 수있는 PyCharm을 사용할 수도 있습니다 .
Python IDLE 다운로드

pip install pygame
Something like this will appear.

가장 먼저 필요한 것은 PyGame을 가져 와서 게임 창을 만드는 것입니다. 아래 코드를 참조하십시오.

import pygame
pygame.init()
screen = pygame.display.set_mode((500, 500))
done = False
while not done:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
done = True
pygame.display.flip()
  1. import pygame :- 이 명령은 PyGame 프레임 워크에 액세스하는 데 사용됩니다. 게임 개발 과정을 시작하는 첫 번째 단계입니다.
  2. pygame.init () :- 이것은 PyGame에 필요한 모든 모듈을 초기화합니다.
  3. pygame.display.set_mode ((width, height)) :- 원하는 크기의 창을 시작합니다.
  4. pygame.event.get () :- 게임은 일련의 이벤트 이므로이 구문은 새 이벤트를 추가하기 전에 이벤트 큐를 비우는 데 도움이됩니다.
  5. pygame.quit :- 이 구문은 프로그램을 완전히 종료하는 데 사용됩니다.
  6. pygame.display.flip () : -PyGame은 이중 버퍼링되어 버퍼를 교체합니다. 알아야 할 것은 게임 화면에 대한 업데이트가 표시되기 위해이 호출이 필요하다는 것입니다.

위의 코드를 실행하면이 게임 창이 나타납니다 .👇

다소 평범 해 보이죠? 🤔 먼저 화면에 콘텐츠를 추가해 보겠습니다.

게임 창에 제목과 아이콘 부여

pygame.display.set_caption ( ' Name ') 으로 제목을 추가하고 icon = pygame.image.load ( 'game.jpg ') 로 제목을 추가 하고 아이콘을 설정하는
pygame.display.set_icon (icon) 을 추가 할 수 있습니다.

게임 창에 사각형 추가

직사각형을 그리는 것은 매우 간단합니다. pygame.draw.rect 를 사용 하여 하나를 그립니다. 이제 직사각형을 만들려면 화면에 표시 할 높이, 너비 및 좌표와 같은 함수에 치수를 입력해야합니다.

# Add this somewhere after the event pumping and before the display.flip()
pygame.draw.rect(screen, (0, 128, 255), pygame.Rect(60, 60, 90, 90))

import pygame
pygame.init()
screen = pygame.display.set_mode((500, 500))
done = False
x=60
y=60
while not done:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                done = True
        pygame.draw.rect(screen, (0,128,255), pygame.Rect(x, y, 90, 90))        
        pygame.display.flip()

마찬가지로 많은 모양을 만들 수 있습니다. 게임 개발을위한 PyGame의 몇 가지 기능이 있으며 기본 사항을 알고 나면 탐색 할 수 있습니다. PyGame이 개발중인 게임의 그래픽을 제어하는 ​​데 사용된다는 사실을 아는 것이 중요합니다. 때로는 게임의 논리를 제어 할 수 있습니다. 이 PyGame 튜토리얼을 계속 읽으면 자신 만의 게임을 만드는 단계를 알 수 있습니다.

게임에 음악 및 이미지 추가

게임을 더 재미있게 만들기 위해 음악과 이미지를 추가 할 수 있습니다.

  1. 이미지를 추가하려면 pygame.image, load ( ' image.jpg ')를 사용합니다.
  2. 음악을 추가하려면 pygame.mixer.music, load ( ' music.mp3 ')를 사용합니다. 하지만 먼저 믹서를 가져 와서 초기화해야합니다. 자세한 내용은 아래 제공된 코드를 참조하십시오.

import pygame
pygame.init()
from pygame import mixer
mixer.init()
screen = pygame.display.set_mode((500, 500))
done = False
x=60
y=60
image=pygame.image.load(r'C:\Users\Tanishq\Downloads\wallpaper.jpg')
screen.blit(image, (0, 0))
pygame.mixer.music.load(r'C:\Users\Tanishq\Desktop\song.mp3')
pygame.mixer.music.play(-1)
while not done:
        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                done = True
        pygame.draw.rect(screen, (255,0,0), pygame.Rect(x, y, 90, 90))
        
        pygame.display.flip()
r :- 위 코드에서 코드를 제공하기 전에 r '..'문자열 수정자가 '..'문자열을 문자 그대로 해석하기 때문에 'r'를 작성 합니다. 즉, r'My \ Path \ Without \ Escaping '은 백 슬래시가 문자를 이스케이프하지 않고'My \ Path \ Without \ Escaping '으로 평가됩니다. 이전은 'My \\ Path \\ Without \\ Escaping'문자열과 동일하지만 원시 수정자는 없습니다. screen.blit (image, (0,0)) :- 윈도우 게임에서 이미지를 스크린합니다. pygame.mixer.music.play (-1) :- 숫자는 음악 트랙의 주파수를 나타냅니다. 이렇게하면 음악이 무한히 재생됩니다. 숫자를 쓰면 그렇게 많이 재생됩니다. 0은 한 번 재생됨을 의미합니다. pygame.mixer.music.queue ( 'next_song.mp3') :- 다음에 재생할 노래를 대기열에 습니다. pygame.mixer.music.stop () :- 음악을 중지합니다.

상자 색상 변경

파란색 상자가 약간 지루해 보이면 상자의 색상을 변경해 보겠습니다. RGB 색상 코드를 얻으려면 다음 웹 사이트로 이동하십시오 .- https://www.rapidtables.com/web/color/RGB_Color.html

이제 스페이스 바를 누르면 상자의 색상이 갈색으로 변경됩니다. 동일한 코드는 다음과 같습니다.

is_red = True
#in infinite while loop:-
if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE:
                        is_red = not is_red
        if is_red: color = (255, 0, 0)
        else: color = (102, 0, 0)

직사각형 이동

이제 게임 창에서 블록을 이동해 보겠습니다. 아래 주어진 코드를 살펴보십시오. 여기서 '눌림'은 사용자가 누른 키를 제공합니다. 좌표계는 다음과 같습니다. 따라서 UP 키를 누르면 Y 좌표가 뺍니다.

pressed = pygame.key.get_pressed()
        if pressed[pygame.K_UP]: y -= 1
        if pressed[pygame.K_DOWN]: y += 1
        if pressed[pygame.K_LEFT]: x -= 1
        if pressed[pygame.K_RIGHT]: x += 1
if is_red: color = (255, 0, 0)
        else: color = (102, 0, 0)
        
        pygame.draw.rect(screen, color, pygame.Rect(x, y, 90, 90))

각 프레임의 지속 시간은 멋진 컴퓨터가 만들 수있는 한 짧습니다. 프레임 속도는 초당 60 프레임과 같은 정상적인 숫자로 조절되어야합니다. 운 좋게도 pygame.time에는 Clock이라는 간단한 클래스가 있습니다. 원하는 fps 속도를 취하는 tick이라는 메서드가 있습니다.

#Add this before loop.
clock = pygame.time.Clock()
#Add this in loop.
clock.tick(60)

키를 사용하면 다음과 같은 결과를 얻습니다.

이건 매력적이지 않죠? 상자가 이미지 위로 이동해야합니다. 따라서 눌러 진 기능을 정의한 후 하나의 코드를 추가하십시오. 이 기능은 다음 사각형을 그리기 전에 화면을 재설정합니다.

#screen.blit(image, (0, 0))

이제 더 좋아 보이지만 다시 한 번 좌표가 창 크기를 초과하면 상자가 프레임에서 벗어나는 문제에 직면합니다. 눌러 진 함수를 정의한 후 screen.blit () 전에 다음 조건을 추가합니다.

if x<=0:
            x=0
    elif x>=400:
            x=400
    if y>=400:
         y=400
    elif y<=0:
         y=0

원 추가 및 두께 변경

직사각형과 유사하게 원을 추가 할 수 있습니다. pygame.draw.circle (surface, color, (x, y), radius) 함수는 원을 그리는 데 사용됩니다.

pygame.draw.circle(screen, color, (300,60),50)

둘 다 구현은 다음과 같습니다.

#Rectangle thickness
pygame.draw.rect(screen, (255,255,0), pygame.Rect(60, 300, 90, 90),10)
#Circle thikness
pygame.draw.circle(screen, (255,255,0), (300,300),50,10)

제가 만든 'T'모양을 살펴 보겠습니다.

pygame.draw.line(screen, color ,(50,150), (250,150), 10)
pygame.draw.line(screen, color, (150, 150), (150, 250), 10)

GAME OVER 와 같은 텍스트를 추가 할 수 있습니다 . 이것이 어떻게 이루어지는 지 살펴 보겠습니다. 이 코드는 무한 루프와 루프의 마지막 줄 앞에 작성됩니다.

# create a font object.
# 1st parameter is the font file which is present in pygame.
# 2nd parameter is size of the font
font = pygame.font.Font('freesansbold.ttf', 50)
# create a text surface object, on which text is drawn on it.
text = font.render('GAME OVER', True, (255,0,0) , (0,128,255))
# create a rectangular object for the text surface object
textRect = text.get_rect()
# set the center of the rectangular object.
textRect.center = (250, 250)
#Add this in infinite loop.
#To clear everything on screen
screen.fill((255,255,255))
screen.blit(text, textRect)

무작위로 움직이는 적을 게임에 포함 시키려면 그렇게 할 수도 있습니다. 이 절차를 따르십시오.

무작위로 움직이는 공을 봅시다.

  1. 무작위로 가져 오기
  2. random.randint (coordinates)를 사용하여 공 이미지를로드하고 공의 위치를 ​​임의로 설정합니다.-

x_pos=random.randint(0,400)
y_pos=random.randint(50,400)

x_ch=3
y_ch=40

def ball(x_cordinate ,y_cordinate):
        screen.blit(ballimage, (x_cordinate ,y_cordinate))

x_pos+=x_ch
if x_pos<=50:
   x_ch=3
   y_pos+=y_ch
elif x_pos>400:
   x_ch=-3
   y_pos+=y_ch
if y_pos>400:
   y_pos=400

ball(x_pos,y_pos)

PyGame은 매우 흥미롭고 보람이 있지만 자체적 인 과제가 있습니다. 입력하는 명령은 매우 정확해야합니다. 예를 들어, 이러한 명령은 대소 문자를 구분합니다. 또한 PyGame은 일반적으로 더 간단한 2D 게임에 사용됩니다. 여기에는 대부분 모양과 최소한의 그래픽이 포함됩니다. 이 외에도 단일 그래픽에 대해 여러 명령을 사용해야하므로 복잡하고 귀찮을 수 있습니다.

결론

PyGame은 꿈의 게임을 개발하는 데 도움이되는 훌륭하고 유용한 도구입니다. PyGame 사용의 가장 큰 장점은 쉬운 액세스와 엄청난 커뮤니티 지원입니다. 설치, 학습 및 사용이 쉽습니다. 시작 후 몇 시간 이내에 결코 쉽게 할 수 없다고 생각했던 게임을 만들 수 있습니다.

저자 : Tanishq Gandhi

Suggested posts

로지스틱 회귀

또는 범주 형 데이터 분류를위한 시그 모이 드 "squishification"함수를 좋아하는 방법을 배웠습니다.

로지스틱 회귀

이 기사는 내 회귀 시리즈의 짧은 연속입니다. 지금까지 제가 설명한 회귀 예제는 숫자, 숫자, 즉 연속 변수 예측입니다.

정규식을 사용한 문자열의 패턴 일치.

정규식을 사용한 문자열의 패턴 일치.

정규식 또는 정규식은 축약 된 형식 언어로 작성됩니다. 일반적으로 정규식은 소스 데이터가있는 정규식 프로세서에 제공하는 패턴으로 생각할 수 있습니다.

Related posts

"실용적인 프로그래머"의 5 가지 필수 사항

역대 베스트셀러 코딩 북의 요점

"실용적인 프로그래머"의 5 가지 필수 사항

Pragmatic Programmer는 1999 년에 처음 출판되었으며 이후 역대 최고의 프로그래밍 책으로 선정되었습니다. 저자 Andy Hunt와 David Thomas는 Agile Manifesto의 원저자 중 하나였으며 몇 가지 심각한 자격을 가지고 있습니다.

대규모 GraphQL 쿼리 공격으로부터 보호

공격자가 공개적으로 사용 가능한 GraphQL 인터페이스를 사용하여 사이트를 스크랩하거나 서비스 거부 공격을 실행하는 방법에 대해 알아보십시오. 이들은 4 가지 방법 중 하나로이를 수행 할 수 있습니다. 단일 대형 쿼리를 신중하게 구성하여 실행하고, 관련 데이터를 가져올 수있는 병렬 쿼리를 많이 작성하고, 일괄 요청을 사용하여 많은 쿼리를 연속적으로 실행하고, 마지막으로 많은 요청을 보냅니다.

기술 인터뷰의 사회적 구성 요소

코딩 문제는 스트레스가 많지만 스트레스에 대한 당신의 반응은 당신의 기술적 능력보다 더 크게 말합니다.

기술 인터뷰의 사회적 구성 요소

기술 업계의 직책을 위해 인터뷰 할 때 일반적으로 제안을 고려하기 전에 최소한 3 차례의 인터뷰를 거치게됩니다. 라운드는 일반적으로 다음과 같습니다. 그렇게 생각하면 잘못된 것입니다.

훌륭한 개발자의 3 가지 행동 특성

훌륭한 개발자의 3 가지 행동 특성

훌륭한 개발자를 만드는 비 기술적 인 것들 나는이 기사를 작성하는 것을 한동안 미루고 있습니다. 나는 그것을 작성할 자격이 있다고 생각하지 못했습니다. 오늘은 쓸 때라고 생각했습니다.