기본 뼈대를 펼쳐놓고, 만들기
1. frame 뼈대 만들기
screen = pygame.display.set_mode((screen_width, screen_height))
# 화면타이틀 : pygame.display.set_caption("나도게임")
# 이벤트루프
running = True
while running:
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
#종료 pygame.quit()
2. 백그라운드 이미지 -> blit
1. background = pygame.image.load("경로")
#이벤트루프 안에서, 배경 그리기. blit, 튜플로 좌표, display.update()
2. screen.blit(background, (0,0))
3. pygame.display.update()
3. 캐릭터 추가
1. 캐릭터 추가 pygame.image.load ( 캐릭터 위치X-> 안보이는 상태)
2. 캐릭터크기와 캐릭터의 화면상 위치 구하기
character_size = character.get_rect().size
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
4. 키보드 이벤트
1. 키보드 이벤트(KEYDOWN 과 KEYUP 시 이벤트->위치 조정)
if event.type == pygame.KEYDOWN:
if event.key ==pygame.K_LEFT:
to_x += 5
elif
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
to_x = 0
elif
character_x_pos += to_x
character_y_pos += to_y
2. 가로/세로 경계값 처리
# 가로 경계값 처리
if character_x_pos < 0:
character_x_pos = 0
elif character_x_pos > screen_width - character_width:
character_x_pos = screen_width - character_width
# 세로 경계값 처리
5. fps : to_x = to_x -5 (-5를 character_speed = 0.6 으로)
1. clock = pygame.time.Clock()
2. dt = clock.tick(10) #화면 속 초당 프레임수
3. charactr_x_pos += to_x * dt
6. collision : enemy 출현. 충돌처리를 위한 rect 정보 업데이트
1. character_rect = character.get_rect()
character_rect.left = character_x_pos
2. if character_rect.colliderect(enemy_rect):
print("충돌")
running = False
7. 텍스트 표시
1. game_font = pygame.font.Font(None, 40)
2. 카운트 다운 설정(total_time 과 pygame.time.get_ticks())
3. elpased time = (현재시간-시작시간)/1000
4. screen.blit(timer, (10,10))
5. 카운트다운 종료 : (total_time - elapsed_time) <= 0
8 프레임
낙하 속도 높이기 추가
import random
import pygame
##############################################################
# 기본 초기화 (반드시 해야 하는 것들)
pygame.init()
# 화면 크기 설정
screen_width = 480 # 가로 크기
screen_height = 640 # 세로 크기
screen = pygame.display.set_mode((screen_width, screen_height))
# 화면 타이틀 설정
pygame.display.set_caption("똥피하기")
# FPS
clock = pygame.time.Clock()
##############################################################
# 1. 사용자 게임 초기화 (배경 화면, 게임 이미지, 좌표, 속도, 폰트 등)
#background
background = pygame.image.load("C:/projects/나도코딩/1_game/background.png")
#ddong
character = pygame.image.load("C:/projects/나도코딩/1_game/character.png")
character_size = character.get_rect().size
# print(character.get_rect().size) --> (70, 70)
character_size_width = character_size[0]
character_size_height = character_size[1]
character_x_pos = screen_width/2 - character_size_width/2
character_y_pos = screen_height - character_size_height
# 이벤트 루프에 blit
# 이동 위치
to_x = 0
character_speed = 10
#ddong
ddong = pygame.image.load("C:/projects/나도코딩/1_game/enemy.png")
ddong_size = ddong.get_rect().size
ddong_size_width = ddong_size[0]
ddong_size_height = ddong_size[1]
# ddong_x_pos = random.range(0,screen_width)
ddong_x_pos = random.randint(0,screen_width-ddong_size_width)
ddong_y_pos = 0
ddong_speed = 10
running = True
while running:
dt = clock.tick(30)
# 2. 이벤트 처리 (키보드, 마우스 등)
for event in pygame.event.get():
if event.type == pygame.QUIT:
running = False
if event.type == pygame.KEYDOWN:
if event.key == pygame.K_LEFT:
to_x -= character_speed
if event.key == pygame.K_RIGHT:
to_x += character_speed
if event.type == pygame.KEYUP:
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
to_x = 0
# 3. 게임 캐릭터 위치 정의
character_x_pos += to_x #키입력 한번 실행 때마다 x축 반영
# character_y_pos += to_y # 좌우만 이동 가능
if character_x_pos < 0:
character_x_pos = 0
elif character_x_pos > (screen_width - character_size_width):
character_x_pos = (screen_width - character_size_width)
# 똥 떨어트리기
ddong_y_pos += ddong_speed
if ddong_y_pos > screen_height: # 스크린높이보다 크면(0-->스크린높이)
ddong_y_pos = 0 # 스크린 높이(길이)보다 커지면=떨어지면, 다시 0 위치로
if ddong_speed < 18:
ddong_speed += 2 # 낙하 속도 높이기
ddong_x_pos = random.randint(0, screen_width - ddong_size_width)
# 4. 충돌 처리
# rect 값
character_rect = character.get_rect()
character_rect.left = character_x_pos
character_rect.top = character_y_pos
ddong_rect = ddong.get_rect()
ddong_rect.left = ddong_x_pos
ddong_rect.top = ddong_y_pos
if character_rect.colliderect(ddong_rect):
print("충돌했어요")
running = False
# 5. 화면에 그리기
screen.blit(background, (0,0))
screen.blit(character, (character_x_pos, character_y_pos))
screen.blit(ddong, (ddong_x_pos, ddong_y_pos))
pygame.display.update()
pygame.quit()
'python(0821-0908) > 활용1 게임(0830-0902-)' 카테고리의 다른 글
게임 3 활용 : 팡팡 (0) | 2022.09.01 |
---|---|
게임 1 기초 (0) | 2022.08.31 |
댓글