반응형
SMALL
먼저 게임 오버화면 구성은 handleGameOver 함수와 마지막에 남은 자물쇠의 갯수만큼 별을 표시하는 drawStar 함수로 구성된다.
def handleGameOver(padlock,gameWin,gameLose):
while True:
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
exit(0)
elif event.type==pygame.KEYDOWN:
if event.key==pygame.K_q:
pass
elif event.type==pygame.KEYUP:
if event.key==pygame.K_q:
pass
font = pygame.font.Font(None,80)
if gameWin:
text = font.render("!!CONGRATULATION!!",True,(51,255,0),(0,0,0))
drawStar(padlock) # 함수 호출
elif gameLose:
text = font.render("!!GAME OVER!!",True,(255,0,0),(0,0,0))
screen.blit(sad,(290,135))
screen.blit(sad,(410,135))
text_rect = text.get_rect()
text_rect.center = (400,250)
screen.blit(text,text_rect.topleft)
pygame.display.flip()
fpsClock.tick(FPS)
handleGameOver 함수에서 키 이벤트를 처리하는 함수를 넣지 않으면 게임오버시에 화면을 닫으려고 하면 에러가 뜬다.
다른 방법으로 해결하는 방법이 있을텐데 더 찾아보고 다시 정리해야겠다.
def drawStar(padlock):
starx=[]
plus=30
for index in range(padlock.count):
starx.insert(index,140+plus)
plus += 100
for x in starx:
screen.blit(star,(x,130))
남은 자물쇠의 개수만큼 게임 승리시 별이 표시된다. 별의 개수는 항상 다르므로 따로따로 정해주지는 않았다.
다음으로 게임 시작화면이다. 이 부분은 startScreen 함수를 따로 만들어서 처리하였다.
def startScreen():
keyC = False
while True:
screen.fill((0,0,0))
font = pygame.font.Font(None,100)
title = font.render("Defend Padlock",True,(0,198,255))
title_rect = title.get_rect()
title_rect.center = (400,80)
screen.blit(title,title_rect.topleft)
font = pygame.font.Font(None,40)
winText = font.render("WIN --> ",True,(0,255,0))
loseText = font.render("LOSE --> ",True,(255,0,0))
secondText = font.render("Defend for 90 seconds",True,(255,255,255))
thirdText = font.render("All padlocks -> keys or Player dies",True,(255,255,255))
pressText = font.render("Press c to continue...",True,(255,255,0))
screen.blit(winText,(90,200))
screen.blit(loseText,(90,260))
screen.blit(secondText,(250,200))
screen.blit(thirdText,(250,260))
screen.blit(pressText,(250,380))
pygame.display.flip()
for event in pygame.event.get():
if event.type==pygame.QUIT:
pygame.quit()
exit(0)
elif event.type==pygame.KEYDOWN:
if event.key==pygame.K_c:
keyC = True
elif event.type==pygame.KEYUP:
if event.key==pygame.K_c:
keyC=False
if keyC:
break
c를 누르면 게임이 시작된다.
이렇게 모든 게임의 주요 클래스와 함수 정리가 끝났고 마지막에
startScreen()
main()
두 개의 함수를 차례대로 호출해주면 게임이 실행된다.
<앞으로 더 추가하고자 하는 사항>
- 게임오버시 키를 누르면 게임이 완전히 처음부터 다시 시작되도록(시작화면 제외)
- 더 좋은 코드 생각해보기
파이썬을 이용해서 처음으로 게임을 만들어보았는데 나름 얻은 것도 많았고 재미있었다. 이번에 게임을 만들어보면서 유니티도 공부해보고 싶다는 마음이 생겼다. 우선 현재 공부하고 있는 자바 자료구조 유튜브 영상을 다 보고 유니티를 공부해야겠다. 그와 동시에 do it 시리즈의 '자료구조와 함께 배우는 알고리즘' 자바편도 공부해야겠다.(2020.8.13)
반응형
LIST
'python 프로젝트(pygame)' 카테고리의 다른 글
3. 게임작동 메인함수 (0) | 2020.08.13 |
---|---|
2. pygame 기본적인 클래스 구성 + 코드 (0) | 2020.08.11 |
1. pygame 게임 실행화면 (0) | 2020.08.11 |
댓글