티스토리 뷰

녹음 2025-01-03 182742.mp4
1.80MB

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 = pygame.image.load("C:\\Users\\tpdlr\\Python\\pygame\\background.png") 
    
# 캐릭터(스프라이트) 만들기
character = pygame.image.load("C:\\Users\\tpdlr\\Python\\pygame\\rabbit.png") 
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  #화면 세로 크기 가장 아래에 해당하는 곳에 위치

# 이동할 좌표
to_x = 0

# 이동 속도
character_speed = 0.5

# 적 enemy 캐릭터 만들기
enemy = pygame.image.load("C:\\Users\\tpdlr\\Python\\pygame\\ddong.png") 
enemy_size = enemy.get_rect().size #이미지의 크기 구해온다
enemy_width = enemy_size[0]
enemy_height = enemy_size[1]
enemy_x_pos = random.randint(0, screen_width - enemy_width)
enemy_y_pos = 0

# 적 enemy 캐릭터 속도
enemy_speed = 5

# 폰트 정의
game_font = pygame.font.Font(None, 40) # 폰트 객체 생성 (폰트, 크기)

# 총 시간
total_time = 10

# 시작 시간 정보
start_ticks = pygame.time.get_ticks() # 현재재 tick 을 받아옴

# 이벤트 루프 (마우스나 키보드가 동작하고 있는지 검사)
running = True # 게임이 진행중인가 확인
while running:
    dt = clock.tick(60) # 게임화면의 초당 프레임 수를 설정, 보통 30 아니면 60

  # print("fps : " + str(clock.get_fps()))

# 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
            elif 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 * dt

    # 화면 밖으로 나가는거 수정 
    # 가로 경계값 처리
    if character_x_pos < 0:
        character_x_pos = 0
    elif character_x_pos > screen_width - character_width:
        character_x_pos = screen_width - character_width

    enemy_y_pos += enemy_speed

    # 적 계속 나오게 하기
    if enemy_y_pos > screen_height:
        enemy_y_pos = 0
        enemy_x_pos = random.randint(0, screen_width - enemy_width)


# 4. 충돌 처리

    # 충돌 처리를 위한 rect 정보 업데이트
    character_rect = character.get_rect()
    character_rect.left = character_x_pos
    character_rect.top = character_y_pos

    enemy_rect = enemy.get_rect()
    enemy_rect.left = enemy_x_pos
    enemy_rect.top = enemy_y_pos

    # 충돌 체크
    if character_rect.colliderect(enemy_rect):
        print("충돌")
        running = False

# 5. 화면에 그리기
    screen.blit(background,(0 , 0)) # 백그라운드 이미지 위치 좌표

    screen.blit(character, (character_x_pos, character_y_pos)) # 캐릭터 그리기

    screen.blit(enemy, (enemy_x_pos, enemy_y_pos)) # 적 그리기

    # 타이머 집어 넣기
    # 경과 시간 계산
    elapsed_time = (pygame.time.get_ticks() - start_ticks ) / 1000
    # 경과 시간(ms)을 1000으로 나누어서 초(s) 단위로 표시

    timer = game_font.render(str(int(total_time - elapsed_time)), True, (0, 0, 0))
    # 출력할 글자, True, 글자 색상 코드
    screen.blit(timer,(10, 10))

    # 만약 시간이 0초 이하로 내려가면 게임 종료
    if total_time - elapsed_time <= 0:
        print("타임아웃")
        running = False

    pygame.display.update() # 게임화면 계속 실행 무존거 해야하는 것

# 잠시 대기
pygame.time.delay(2000) # 2초 정도 대기

# pygame 종료
pygame.quit()
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2025/01   »
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 31
글 보관함