본문 바로가기
🐍 | Python/pygame

pygame_(3)_스프라이트(캐릭터)

by KASSID 2021. 11. 5.

목차

    728x90
    import pygame
    
    
    def main():
        pygame.init()
    
        # 타이틀
        pygame.display.set_caption("MYGAME") #게임 이름
    
        # 화면 크기 설정
        screen_width = 480 #가로 크기
        screen_height = 640 #세로 크기
        screen = pygame.display.set_mode((screen_width, screen_height))
        
        # 스프라이트 불러오기(캐릭터)
        character = pygame.image.load(캐릭터 이미지 경로)
        character_size = character.get_rect().size # rect = 사각형 / 이미지의 크기를 구해옴
        character_width = character_size[0] # 캐릭터의 가로 크기
        character_height = character_size[1] # 캐릭터의 세로 크기
        character_x_pos = screen_width / 2 - character_width / 2# 화면 가로길이의 절반에 해당하는 곳에 위치(가로)
        character_y_pos = screen_height - character_height # 화면 세로길이 가장 아래에 해당하는 곳에 위치(세로)
    
    
        # 로고 설정
        logo = pygame.image.load(로고 이미지 경로)
        pygame.display.set_icon(logo)
        
        # 배경 이미지 불러오기
        background = pygame.image.load(배경 이미지 경로)  
    
        # 이벤트 루프
        running = True
        while running:
            for event in pygame.event.get():
                if event.type == pygame.QUIT:
                    running = False  
            
            screen.blit(background, (0, 0))
            
            screen.blit(character, (character_x_pos,character_y_pos)) # 캐릭터 그리기
    
            pygame.display.update()
    
            
    
    
    
        # pygame 종료
        pygame.quit()
    
    
    
    if __name__ == '__main__':
        main()

    캐릭터(스프라이트)

    이번에는 스크린에 캐릭터를 추가해보는 것을 알아보자.

    캐릭터를 추가하는 것은 사실 이미지를 그리는 것이기 때문에

    크게 다른 것은 많이 없지만 그래도 다뤄보도록 하자!

    70X70

    70X70 짜리 스프라이트를 하나 생성해보자!

    character = pygame.image.load(캐릭터 이미지 경로)
    character_size = character.get_rect().size # rect = 사각형 / 이미지의 크기를 구해옴

    캐릭터 이미지 경로를 로드한 뒤

    .size 를 통해서 이미지의 크기를 구해올 수 있다.

    [가로크기, 세로크기]의 형태로 크기가 저장이 된다.

    character_size = character.get_rect().size
    character_width = character_size[0] # 캐릭터의 가로 크기
    character_height = character_size[1] # 캐릭터의 세로 크기

    캐릭터의 너비와 높이를 각각 인덱싱으로 받아올 수 있다.

     

    # 이벤트 루프 안
    screen.blit(character, (캐릭터 x좌표, 캐릭터 y좌표))

    캐릭터도 블리팅을 하여 스크린에 그려주면 된다.

    이 전에도 한 번 다뤘지만 만약 배경을 그렸다면

    배경을 블리팅한 후 캐릭터를 블리팅해주어야

    배경의 위에 캐릭터가 그려진다.

     

    캐릭터의 좌표를 창의 바닥에 붙이고, 가운데에 위치하고 싶다면?

    아래와 같이 설정을 해주면 된다.

    character_x_pos = screen_width / 2 - character_width / 2
    # 화면 가로길이의 절반에 해당하는 곳에 위치(가로)
    character_y_pos = screen_height - character_height
    # 화면 세로길이 가장 아래에 해당하는 곳에 위치(세로)
    
    # 이벤트 루프 안
    screen.blit(character, (character_x_pos,character_y_pos))

    캐릭터의 x좌표를 ( (스크린 너비 1/2) - (캐릭터의 가로크기 1/2) )로 지정하면

    위의 그림처럼 캐릭터를 가운데에 위치할 수 있다.

     

     

    y좌표를 ( 스크린 높이 - 캐릭터 세로크기 ) 로 지정하면

     

    위의 그림처럼 캐릭터를 바닥에 붙일 수 있다.

     

    예제 실행 결과

     

    '🐍 | Python > pygame' 카테고리의 다른 글

    pygame_(2)_배경, 로고  (0) 2021.11.04
    pygame_(1)_프레임  (0) 2021.11.04
    pygame  (0) 2021.11.03

    댓글