Pygame의 surface.blit() 함수

Maxim Maeder 2023년6월21일
  1. Pygame의 surface.blit() 함수
  2. Pygame에서 surface.blit() 함수 사용
Pygame의 surface.blit() 함수

이 튜토리얼은 파이게임에서 blit() 함수가 무엇을 하는지 알려줍니다.

여기에 표시된 코드는 유효한 파이게임 창에 대한 완전한 코드가 아닙니다. 베어본 프레임워크에 관심이 있다면 이 문서를 참조하십시오.

Pygame의 surface.blit() 함수

파이게임은 표면을 중심으로 회전하며 blit() 함수는 이러한 표면을 겹칩니다. 이것의 가장 눈에 띄는 예는 본질적으로 단지 표면일 뿐인 우리의 스크린이 될 것이며 우리는 우리가 보는 모든 것을 그 위에 블리팅합니다.

그러나 다른 표면을 만들고 blit()을 사용하여 중첩할 수도 있습니다. 이 작업을 수행하기 전에 이 메서드에 전달할 수 있는 다양한 인수를 설명합니다.

나중에 구체적인 예를 살펴보겠지만 지금은 기능에 중점을 둘 것입니다.

아래에서 blit() 메서드의 구조를 볼 수 있습니다. 표면을 설정하지 않았기 때문에 이 코드는 작동하지 않는다는 점을 기억하십시오.

하나의 표면에서 blit() 함수를 호출하고 오버레이된 표면을 제공하는 것으로 시작합니다. 그런 다음 surfaceTwo의 왼쪽 상단이 surfaceOne에 있을 위치를 지정합니다.

여기서 끝내면 blit()이 작동하지만 두 개의 인수를 더 전달할 수 있습니다. 이 영역은 블리트될 surfaceTwo의 영역을 나타내는 rect입니다.

따라서 그것의 일부와 special_flags만으로 blit의 블렌드 모드를 정의할 수 있습니다.

코드 조각:

surfaceOne.blit(surfaceTwo, destination, area=none, special_flags=none)

Pygame에서 surface.blit() 함수 사용

이제 구체적인 예를 살펴보겠습니다. 일부 표면을 만드는 것으로 시작하겠습니다. 이 코드는 메인 루프 앞에 있음을 명심하십시오.

원하는 치수를 제공해야 하는 Surface() 메서드를 사용하여 새 표면을 만들 수 있습니다. 또한 나중에 볼 수 있도록 두 표면을 색상으로 채웁니다.

코드의 마지막 다섯 줄에서 blit() 함수가 작동하는 것을 볼 수 있습니다.

코드 조각:

surfaceOne = pygame.Surface((100, 100))
surfaceOne.fill(
    (
        200,
        100,
        100,
    )
)

surfaceTwo = pygame.Surface((30, 30))
surfaceTwo.fill(
    (
        100,
        200,
        100,
    )
)

surfaceOne.blit(surfaceTwo, [10, 10], [0, 0, 10, 5])

이제 surfaceOne을 화면에 출력하기만 하면 결과가 표시됩니다. 이 코드는 메인 루프에서 발생합니다.

screen.blit(surfaceOne, [10, 10])

출력:

Pygame의 Blit 함수

완전한 예제 코드

# Imports
import sys
import pygame

# Configuration
pygame.init()
fps = 60
fpsClock = pygame.time.Clock()
width, height = 640, 480
screen = pygame.display.set_mode((width, height), pygame.RESIZABLE)

surfaceOne = pygame.Surface((100, 100))
surfaceOne.fill(
    (
        200,
        100,
        100,
    )
)

surfaceTwo = pygame.Surface((30, 30))
surfaceTwo.fill(
    (
        100,
        200,
        100,
    )
)

surfaceOne.blit(surfaceTwo, [10, 10], [0, 0, 10, 5])

# Game loop.
while True:
    screen.fill((20, 20, 20))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            pygame.quit()
            sys.exit()

    screen.blit(surfaceOne, [10, 10])

    pygame.display.flip()
    fpsClock.tick(fps)
작가: Maxim Maeder
Maxim Maeder avatar Maxim Maeder avatar

Hi, my name is Maxim Maeder, I am a young programming enthusiast looking to have fun coding and teaching you some things about programming.

GitHub

관련 문장 - Pygame Function