티스토리 뷰

반응형

youtu.be/ZN7gZVjFj2g

모든 강의 자료 : www.codingnow.co.kr/

print 를 사용하여 별을 출력하는 것에 이어서

이번에는 pygame을 사용하여 별을 출력해 봅니다.

 

이전 강의에서 파이썬과 C언어를 사용하여 강의한 내용입니다.

 

파이썬 삼각형 출력하기 강의 : https://youtu.be/DVWfBz7krHQ

C언어 삼각형, 다이이몬드 별 출력 : https://youtu.be/ksYBu-ysLb4

 

별을 출력하는 알고리즘은 그대로 가져와서 코드 재사용을 하였습니다.

pygame의 간단한 코드를 추가하여 보다 보기 좋게 만들어 보았습니다.

 

 

아래 이미지는 (pixabay.com/) 웹에서 다운로드 하였습니다.

 

자세한 코드 설명은 첨부된 동영상을 참고해주세요.

 

파이썬 별 출력하기 이미지(출처 : https://pixabay.com/)
파이썬 별 출력하기 결과

#이미지파일 출처 : https://pixabay.com/ko/vectors/%EC%8A%A4%ED%83%80-%EC%8B%AC%EC%9E%A5-%EB%B2%A1%ED%84%B0-%EC%95%84%EC%9D%B4%EC%BD%98-2717442/

import pygame

#함수
def event():
    global isActive, STAR_X_START, STAR_Y_START

    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_ESCAPE:
                isActive = False
                # pygame.quit()
            if event.key == pygame.K_LEFT:
                STAR_X_START -= 10
            if event.key == pygame.K_RIGHT:
                STAR_X_START += 10
            if event.key == pygame.K_UP:
                STAR_Y_START -= 10
            if event.key == pygame.K_DOWN:
                STAR_Y_START += 10

def updateStar(x,y):
    global rectStar
    rectStar.centerx = x
    rectStar.centery = y
    SCREEN.blit(star, rectStar)

def drawStar():
    global STAR_LINE
    
    y = STAR_Y_START
    for i in range(STAR_LINE):
        x = STAR_X_START
        for k in range(STAR_LINE, i, -1):
            # print(' ', end='')
            x += STAR_SIZE

        for k in range((i+1)*2-1):
            # print("*", end='')
            x += STAR_SIZE
            updateStar(x, y)
        # print()
        y += STAR_SIZE

    for i in range(STAR_LINE):
        x = STAR_X_START
        for k in range(i+2):
            x += STAR_SIZE
        for k in range((STAR_LINE-1)*2-1, (i*2), -1):
            x += STAR_SIZE
            updateStar(x, y)
        y += STAR_SIZE

#변수
isActive = True
SCREEN_WIDTH = 600
SCREEN_HIGHT = 600
STAR_SIZE = 20
STAR_LINE = 10
STAR_X_START = 100
STAR_Y_START = 100

#pygame 초기화
pygame.init()
SCREEN = pygame.display.set_mode((SCREEN_WIDTH, SCREEN_HIGHT))
pygame.display.set_caption("CodingNow!!")

#star 이미지 가져오기
star = pygame.image.load('star.png')
star = pygame.transform.scale(star, (STAR_SIZE, STAR_SIZE))
rectStar = star.get_rect()
# rectStar.centerx = (SCREEN_WIDTH/2)
# rectStar.centery = (SCREEN_HIGHT/2)

clock = pygame.time.Clock()
#화면&이벤트 업데이트하기
while isActive:
    SCREEN.fill((0,0,0))
    event()    
    drawStar()
    pygame.display.flip()
    clock.tick(500)

반응형