Notice
Recent Posts
Recent Comments
Link
«   2024/11   »
1 2
3 4 5 6 7 8 9
10 11 12 13 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30
Tags
more
Archives
Today
Total
관리 메뉴

개발자입니다

[유튜브 소놀코딩] 6강.벽에 닿았을 때 튕기기 / 7강.캐릭터 추가하기 본문

파이게임/파이썬 게임 만들기 강의(유튜브 소놀코딩)

[유튜브 소놀코딩] 6강.벽에 닿았을 때 튕기기 / 7강.캐릭터 추가하기

끈기JK 2023. 8. 31. 19:54

pygame14.py

떨어지는 바나나

바나나의 x, y 좌표를 1씩 증가시키면 오른쪽 아래 대각선으로 떨어진다. 벽을 만나도 계속 가서 사라진다.

import pygame

pygame.init()

background = pygame.display.set_mode((480, 360))
pygame.display.set_caption("SONOL")

image_bg = pygame.image.load("image/image3.jpg")
image_banana = pygame.image.load("image/image2.png")

size_bg_width = background.get_size()[0]
size_bg_height = background.get_size()[1]

size_banana_width = image_banana.get_rect().size[0]
size_banana_height = image_banana.get_rect().size[1]

x_pos_banana = size_bg_width/2 - size_banana_width/2
y_pos_banana = 0

x_speed_banana = 1
y_speed_banana = 1

play = True
while play:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            play = False

    x_pos_banana += x_speed_banana
    y_pos_banana += y_speed_banana

    background.blit(image_bg, (0, 0))
    background.blit(image_banana, (x_pos_banana, y_pos_banana))
    pygame.display.update()

pygame.quit()

 

 

 

pygame15.py

벽에 튕기는 바나나

벽에 바나나가 닿았을 때 튕기도록 만든다.

  • x_speed_banana, y_speed_banana 를 만든다.
  • while 문 안에서 x_pos_banana, y_pos_banana 에 speed 를 더한다.
  • 바나나의 x 좌표가 0보다 작거나 같을 때 x_speed_banana 의 부호를 반대로 바꿔준다.
  • 바나나의 x 좌표가 (배경 너비 - 바나나 너비) 보다 클 때 역시 부호를 반대로 바꿔준다.
  • 바나나의 y 좌표가 0보다 작거나 같을 때 y_speed_banana 의 부호를 반대로 바꿔준다.
  • 바나나의 y 좌표가 (배경 높이 - 바나나 높이) 보다 클 때 역시 부호를 반대로 바꿔준다.
import pygame

pygame.init()

background = pygame.display.set_mode((480, 360))
pygame.display.set_caption("SONOL")

image_bg = pygame.image.load("image/image3.jpg")
image_banana = pygame.image.load("image/image2.png")

size_bg_width = background.get_size()[0]
size_bg_height = background.get_size()[1]

size_banana_width = image_banana.get_rect().size[0]
size_banana_height = image_banana.get_rect().size[1]

x_pos_banana = size_bg_width/2 - size_banana_width/2
y_pos_banana = 0

x_speed_banana = 1
y_speed_banana = 1

play = True
while play:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            play = False

    x_pos_banana += x_speed_banana
    y_pos_banana += y_speed_banana

    if x_pos_banana <= 0:
        x_speed_banana = -x_speed_banana
        x_pos_banana = 0
    elif x_pos_banana >= size_bg_width-size_banana_width:
        x_speed_banana = -x_speed_banana
        x_pos_banana = size_bg_width-size_banana_width
    
    if y_pos_banana <= 0:
        y_speed_banana = -y_speed_banana
        y_pos_banana = 0
    elif y_pos_banana >= size_bg_height-size_banana_height:
        y_speed_banana = -y_speed_banana
        y_pos_banana = size_bg_height-size_banana_height
    
    background.blit(image_bg, (0, 0))
    background.blit(image_banana, (x_pos_banana, y_pos_banana))
    pygame.display.update()

pygame.quit()

 

 

 

pygame16.py

좌우로 조종하는 원숭이 추가

pygame12.py 의 원숭이 코드를 가져온다.

  • 좌우로만 움직이게 to_x 만 추가한다.
  • 좌우 화살표 키를 누르면 to_x 에 값을 할당하다가 키를 떼면 0을 할당한다.
  • 원숭이 x좌표가 0보다 작으면 0을 할당한다. 원숭이 x좌표가 (배경가로 - 원숭이 가로)보다 크면 (배경가로 - 원숭이 가로) 를 할당한다.
  • 그 외에는 x_pos_monkey 에 to_x 를 더해준다.
import pygame

pygame.init()

background = pygame.display.set_mode((480, 360))
pygame.display.set_caption("SONOL")

image_bg = pygame.image.load("image/image3.jpg")
image_banana = pygame.image.load("image/image2.png")
image_monkey = pygame.image.load("image/image1.png")

size_bg_width = background.get_size()[0]
size_bg_height = background.get_size()[1]

size_bg_width = background.get_size()[0]
size_bg_height = background.get_size()[1]

size_banana_width = image_banana.get_rect().size[0]
size_banana_height = image_banana.get_rect().size[1]

x_pos_banana = size_bg_width/2 - size_banana_width/2
y_pos_banana = 0

x_speed_banana = 1
y_speed_banana = 1

size_monkey_width = image_monkey.get_rect().size[0]
size_monkey_height = image_monkey.get_rect().size[1]

x_pos_monkey = size_bg_width/2 - size_monkey_width/2
y_pos_monkey = size_bg_height - size_monkey_height

to_x = 0

play = True
while play:
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            play = False
        if event.type == pygame.KEYDOWN:
            if event.key == pygame.K_RIGHT:
                to_x = 1
            if event.key == pygame.K_LEFT:
                to_x = -1
                
        if event.type == pygame.KEYUP:
            if event.key == pygame.K_RIGHT:
                to_x = 0
            if event.key == pygame.K_LEFT:
                to_x = 0

    if x_pos_monkey<0:
        x_pos_monkey = 0
    elif x_pos_monkey>size_bg_width-size_monkey_width:
        x_pos_monkey =size_bg_width-size_monkey_width
    else:
        x_pos_monkey += to_x


    x_pos_banana += x_speed_banana
    y_pos_banana += y_speed_banana

    if x_pos_banana <= 0:
        x_speed_banana = -x_speed_banana
        x_pos_banana = 0
    elif x_pos_banana >= size_bg_width-size_banana_width:
        x_speed_banana = -x_speed_banana
        x_pos_banana = size_bg_width-size_banana_width
    
    if y_pos_banana <= 0:
        y_speed_banana = -y_speed_banana
        y_pos_banana = 0
    elif y_pos_banana >= size_bg_height-size_banana_height:
        y_speed_banana = -y_speed_banana
        y_pos_banana = size_bg_height-size_banana_height
    
    background.blit(image_bg, (0, 0))
    background.blit(image_banana, (x_pos_banana, y_pos_banana))
    background.blit(image_monkey, (x_pos_monkey, y_pos_monkey))
    pygame.display.update()

pygame.quit()