import pygame
pygame.init() # 초기화(반드시 필요)
#화면 크기 설정
screen_width = 400 #가로크기
screen_height = 640 #세로 크기
screen = pygame.display.set_mode((screen_width,screen_height))
#화면 타이틀 설정
pygame.display.set_caption("Nado.Game") #게임 이름
#FPS
clock = pygame.time.Clock()
#배경 이미지 불러오기
backgound = pygame.image.load("C:/Users/82102/Desktop/PANGPANG/backgound.png")
# 캐릭터 (스프라이트) 불러오기
charater = pygame.image.load("C:/Users/82102/Desktop/PANGPANG/charater.png")
charater_size = charater.get_rect().size #이미지 크기를 구해옴
charater_width = charater_size[0] #캐릭터의 가로크기
charater_height = charater_size[1] #케릭터의 세로크기
charater_x_pos = (screen_width / 2) - (charater_width / 2) #화면 가로의 절반 크기에 해당하는 곳에 위치(가로)
charater_y_pos = screen_height - charater_height#화면 세로 크기 가장 아래에 해당하는 곳에 위치(세로)
#이동할 좌표
to_x = 0
to_y = 0
#이동속도
charater_speed = 0.6
# 적 enemy 캐릭터
enemy = pygame.image.load("C:/Users/82102/Desktop/PANGPANG/enemy.png")
enemy_size = enemy.get_rect().size #이미지 크기를 구해옴
enemy_width = enemy_size[0] #캐릭터의 가로크기
enemy_height = enemy_size[1] #케릭터의 세로크기
enemy_x_pos = (screen_width / 2) - (enemy_width / 2) #화면 가로의 절반 크기에 해당하는 곳에 위치(가로)
enemy_y_pos = (screen_height / 2) - (enemy_height /2) #화면 세로 크기 가장 아래에 해당하는 곳에 위치(세로)
# 폰트정의
game_font = pygame.font.Font(None,40) #폰트객제 생성(폰트,크기)
#총 시간
total_time = 10
# 시작 시간
start_ticks = pygame.time.get_ticks() # 현재 시간 tick 을 빋아옴
# 이벤트 후프
running = True #게임이 진행중인가?
while running:
dt = clock.tick(90) #게임화면의 초당 프레임 수를 설정
# 캐릭터가 1초 동안에 100만큼 이동을 해야함
# 10 fps : 1초 동안에 10번 동작 -> 1번에 몇 만큼! 10 * 10 =100
# 20 fps : 1초 동안에 20번 동작 -> 1번에 5만큼 5 * 20 = 100
# print("frs:"+str(clock.get_fps()))
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 -= charater_speed #to_x = to_x-5
elif event.key == pygame.K_RIGHT: #캐릭터를 오른쪽으로
to_x += charater_speed #to_x
elif event.key == pygame.K_UP: #캐릭터를 위로
to_y -= charater_speed
elif event.key == pygame.K_DOWN: #캐릭터를 아래로
to_y += charater_speed
if event.type == pygame.KEYUP: #방양키를 뗴면 멈춤
if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:
to_x = 0
elif event.key == pygame.K_UP or event.key == pygame.K_DOWN:
to_y = 0
charater_x_pos += to_x * dt
charater_y_pos += to_y * dt
#가로 경계값 처리
if charater_x_pos < 0:
charater_x_pos =0
elif charater_x_pos > screen_width - charater_width:
charater_x_pos = screen_width - charater_width
#세로 경계값 처리
if charater_y_pos < 0 :
charater_y_pos = 0
elif charater_y_pos > screen_height - charater_height:
charater_y_pos = screen_height - charater_height
#충돌처리
charater_rect = charater.get_rect()
charater_rect.left = charater_x_pos
charater_rect.top = charater_y_pos
enemy_rect = enemy.get_rect()
enemy_rect.left = enemy_x_pos
enemy_rect.top = enemy_y_pos
# 충돌체크
if charater_rect.colliderect(enemy_rect):
print("충돌~")
running = False
screen.fill((0,0,255)) #배경 설정
# screen.blit(backgound, (0,0)) #배경그리기
screen.blit(charater,(charater_x_pos,charater_y_pos)) #캐릭터 그리기
screen.blit(enemy,(enemy_x_pos,enemy_y_pos)) #적 그리기
#타이머 집어넣기
# 경과 시간 계산
elapsed_time = (pygame.time.get_ticks()-start_ticks) / 1000
#경과시간을 1000으로 나누어 초(s)단위로표시
timer = game_font.render(str(int(total_time - elapsed_time)),True,(255,255,255))
# 출력할 글자, True, 글자색상
screen.blit(timer,(10,10))
#만약 시간이 0 이하이면 게임 종료
if total_time - elapsed_time <= 0:
print("타임아웃")
running = False
pygame.display.update() # 게임화면을 다시 그리기.
# 잠시 대기
pygame.time.delay(2000) # 2초 정도 대기(ms)
# pygame 종료
pygame.quit()