#똥 한개씩 피하기
내 소스
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 |
댓글