나의 메모장/파이썬 나의 메모장

4월 27일 TIL(pygame 마무리, git 특강)

khw7876 2022. 4. 27. 21:32

오늘은 pygame을 마무리 했다.

내가 만든 game은 pump게임이다!!

여기에 압축한 파일을 넣으려고 했으나, 파일 크기때문에 git에 올리려고 한다.

새로 알게 된 pygame의 코드를 작성해보자!!

 

SB = 0
while SB == 0:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_SPACE:
                SB = 1
    screen.blit(background,(0,0))
    font = pygame.font.Font(None, 30)
    font_title = pygame.font.Font(None, 50)
    text = font.render("Press C to continue...", True, (255,255,255))
    text_title = font_title.render("Welcome to Pump Game!!", True, (204,255,51))
    screen.blit(text, (200,500))
    screen.blit(text_title,(20,20))
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
                    pygame.quit()
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_c:
                SB += 1


    pygame.display.flip()

같은 조의 선영님의 도움으로 로딩화면을 만들어봤다!!

while문을 이용하여서, 본 게임으로 들어가기 전 로딩 화면을 구현 해 보았다.

조건이 갖추어 지지 않는다면, while문에서 벗어나지 못하도록 하는 점을 이용했다.

SB라는 변수를 통하여 while문을 통제 하였는데, 나같은 경우는 C라는 키가 입력이 될 경우 SB가 0보다 커지게 되어서

while 문을 벗어난다고 설정을 하였다.

 

화면에 background 이미지를 가져와서 펼쳐서 보여준 후, font를 이용하여, text로 설명을 해 놓았다.

font_title = pygame.font.Font(None, 50)

text_title = font_title.render("Welcome to Pump Game!!", True, (204,255,51))

screen.blit(text_title,(20,20))

자 주요 text를 화면에 출력하는 코드이다!!

코드를 하나씩 보자면, font_title로는 pygame에서 폰트를 지정해 주는건데, 기본 폰트를 사용한다는 None, 폰트크기 50!

그 다음은, 방금 지정한 font체를 사용하여, "welcome~"의 text를 지정해주고, rgb색상을 입힌다!!

자, 이제 폰트와 text 설정을 해주었으면, screen.blit을 이용해서 (20,20)좌표에 띄워주면 text 출력 끝!

 

음.. 이번에는 pygame 내부에서 배경음악, 효과음 설정을 알아보자!!

pygame.mixer.init()
pygame.mixer.music.load('mypygame/music/music.mp3')
pygame.mixer.music.play()
shot_sound = pygame.mixer.Sound('mypygame/music/hit.ogg')

자, 이 코드는 music을 이용하여, mp3파일을 볼러온다.!!

그리고 설정해놓은 mp3를 play()를 이용하여 배경에서 틀어줌!!

그 다음은 효과음을 설정해준다.

 

이렇게 여기서 설정을 해 주었다면!!

if object_y_pox >= screen_height -10:
    print("놓쳤습니다")
    pygame.mixer.Sound.play(shot_sound)
    penalty += 1

여기서 조건을 갖추었다면, 호출!!

그렇다면, 조건이 충족이 될 때마다 shot_sound가 출력이 된다!!

 

 

음.. 또 코드로는 없지만, 애를 먹었던 구간이 있다!

예를 들어서

ex) 변경 전

if a>10:

  screen.blit(A,(10,20))

elif a > 20:

  screen.blit(A,(20,30))

 

screen.blit(A,(40,40))

 

이런식으로 a의 값에 따라서 A를 그리는 위치를 바꾸는 로직을 만들어 봤다!

결과는!!!

어떠한 경우에라도 마지막에 그려진 40,40을 따라가게 된다.

그래서 느낀점! screen,blit을 한다면, 맨 마지막에 변수처리를 해주자!

ex) 변경 후

A_pos_x =10

 

if a>10:

  A_pos_x + 0

elif a > 20:

  A_pos_x +20

 

screen.blit(A,(A_pos_x ,40))

이렇게 설정을 해 준다면

10보다 작을경우엔 (10,40)으로 그려지고!

10보다 크고 20보다 작을 경우에는 (40,40)으로 그려진다!!

 

git강의는 다음시간에 적도록 하자 ㅎㅎ