본문 바로가기
코딩(개발)/파이썬

파이썬 똥 피하기 게임

by 플랜데버 2020. 12. 25.

#똥 한개씩 피하기

내 소스

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()

 

#-------------------------------------------------------------------------------#

# 사용자 초기화 

#-------------------------------------------------------------------------------#



# 배경 이미지

background = pygame.image.load("E:/PythonWorkspace/pygame_basic/background.png"

 

#캐릭터 그리기

character = pygame.image.load("E:/PythonWorkspace/pygame_basic/character.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  # 화면 세로 크기 가장 아래에 해당하는 곳에 위치




#똥그리기

# 적 poop 캐릭터

poop = pygame.image.load("E:/PythonWorkspace/pygame_basic/poop.png"

poop_size = poop.get_rect().size 

poop_width = poop_size[0

poop_height = poop_size[1

 

poop_x_pos = random.randint(0,screen_width-poop_width) # from 까지 쓰면 randint(0,screen_width-poop_width)

poop_y_pos = 0



# 이동할 좌표

to_x = 0

 

# 똥 이동 좌표

to_y = 0



#이동 속도

character_speed = 1

 

#똥 스피드

poop_speed = 5

 

# 폰트 정의

game_font = pygame.font.Font(None , 80#None : 디폴트 폰트가 쓰인다. 폰트 객체 생성(폰트,크기)



running = True 

while running:

    dt = clock.tick(60

 

    # 2. 이벤트 처리 (키보드 , 마우스 등)

    for event in pygame.event.get(): 

        if event.type == pygame.QUIT: 

            running = False 

        

        

    # 3. 게임 캐린터 위치 정의

        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: #방향키를 떼면 멈춤. 키를 뗏다면 x,y 좌표값을 변화시키지 않는다.

            if event.key == pygame.K_LEFT or event.key == pygame.K_RIGHT:

                to_x = 0

            

    

    #캐릭터 좌표 바꾸기

    character_x_pos += to_x * dt

 

    #똥 좌표 바꾸기

    poop_y_pos += (to_y+poop_speed)

   

    if character_x_pos < 0 :

        character_x_pos = 0

    elif character_x_pos > screen_width - character_width:

        character_x_pos =  screen_width - character_width

 

    if poop_y_pos > screen_height :

        poop_y_pos = 0

        poop_x_pos = random.randint(0,screen_width-poop_width)

    



    # 4. 충돌처리  

    character_rect = character.get_rect() #캐릭터의 rect 정보를 가지고 온다.

    character_rect.left = character_x_pos

    character_rect.top = character_y_pos

 

    #적도

    poop_rect = poop.get_rect()

    poop_rect.left = poop_x_pos  

    poop_rect.top = poop_y_pos   

 

   

    msgdone = ""

    #충돌 체크

    if character_rect.colliderect(poop_rect) : # 충돌 체크

        print("충돌했어요")

        msgdone = "Done"

        running = False

        

  

 

    # 5.화면에 그리기

    screen.blit(background,(0,0)) # 배경 그리기  

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

    screen.blit(poop,(poop_x_pos,poop_y_pos)) # 똥 그려준다

    #텍스트 그리기

    message = game_font.render(msgdone, True, (0,0,0))  # 출력할 글자 , True, 글자 색상

    screen.blit(message,(10,10)) # 스크린에 그려준다.

    

 

    pygame.display.update() #게임 화면을 다시 그리기! 반드시 계속 호출이 되어야 한다.





# 잠시 대기

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

 

pygame.quit()

 

'코딩(개발) > 파이썬' 카테고리의 다른 글

파이썬 GUI  (0) 2020.12.29
파이썬 게임 2  (0) 2020.12.27
파이썬 게임 만들기  (0) 2020.12.24
파이썬 내장함수 / 외장함수  (0) 2020.12.23
파이썬 모듈 / 패키지  (0) 2020.12.23

댓글