개발자입니다
[유튜브 소놀코딩] 6강.벽에 닿았을 때 튕기기 / 7강.캐릭터 추가하기 본문
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()
'파이게임 > 파이썬 게임 만들기 강의(유튜브 소놀코딩)' 카테고리의 다른 글
[유튜브 소놀코딩] 8강.캐릭터 충돌하기 / 9강.점수 만들기 / 10강.게임 종료하기 (0) | 2023.08.31 |
---|---|
[유튜브 소놀코딩] 4강.이미지 사용하기 / 5강.키보드+마우스+이미지 적용하기 (0) | 2023.08.31 |
[유튜브 소놀코딩] 3강.선, 도형 그리기 (0) | 2023.08.30 |
[유튜브 소놀코딩] 2강.마우스로 조종하기 (0) | 2023.08.30 |
[유튜브 소놀코딩] 1강.키보드로 조종하기 (0) | 2023.08.29 |