지급받은 파이썬 기초와 심화 인강을 들었다
기존에 알았던 내용이지만 기초를 다지고 정리하는데 도움이 되었다
파이썬 인강을 바탕으로 개인 프로젝트가 시작되었다
class를 이용해 객체를 생성하고 1:1전투를 구현하는 프로젝트다
프로젝트 조건에서는 print()문 출력만으로 턴제 게임을 구현하는 것으로 생각했지만 기왕 게임 만들어 보는 거 공부도 더 할 겸 재밌는 아이디어가 떠올랐다
바로 포켓몬스터 클론코딩.
똑같이 따라하면 재미없으니 내일배움캠프를 이용해 이것저것 구현해보고자 한다
어떻게 화면을 구현해야하나 구글링 하던 중에 pygame 모듈로 게임을 만들 수 있는 것을 알았다
설치하고 이것저것 해보면서 구현해보고 있는 중이다
포켓몬스터 골드게임 인트로를 gif로 변환해 포토샵에서 합성한 후 프리미어에서 다시 gif파일로 만들어서 pygame Sprite객체로 만들어 재생시켰다
pygame에서는 gif파일을 그대로 재생시킬 수는 없고 프레임 별로 자른 뒤에 그룹을 지어주고 재생을 시켜야했다
# load gif and divide frame by frame
def loadGIF(filename):
pilImage = Image.open(filename)
frames = []
for frame in ImageSequence.Iterator(pilImage):
frame = frame.convert('RGBA')
pygameImage = pygame.image.fromstring(
frame.tobytes(), frame.size, frame.mode).convert_alpha()
frames.append(pygameImage)
return frames
# move a image group
class AnimatedSpriteObject(pygame.sprite.Sprite):
def __init__(self, x, bottom, images):
pygame.sprite.Sprite.__init__(self)
self.images = images
self.image = self.images[0]
self.rect = self.image.get_rect(midbottom=(x, bottom))
self.image_index = 0
def update(self):
self.image_index += 1
self.image = self.images[self.image_index % len(self.images)]
스택 오버플로우에서 gif파일 나누고 그룹을 지어주는 코드를 찾았고 이걸 적당히 이용해서 아래와 같이 움직이도록 만들었다
pygame.draw.rect()로 화면 하단에 텍스트박스를 출력하는 함수를 만들었다
대사가 너무 길어지면 화면 바깥으로 나가버리니 텍스트의 길이가 34보다 크면 텍스트를 두 줄로 나눠서 출력할 수 있도록 만들었다
포켓몬 대신 프로그래밍 언어를 쓰면 어떨까 하는 아이디어로 그냥 구현해봤다
파이리, 꼬부기, 이상해씨 대신 내일배움캠프에서 배우고 있는 파이썬, SQL, JavaScript다
포토샵으로 각자 달랐던 이미지 크기를 맞춰주는데 시간이 좀 걸렸다
마우스를 hover하면 네모난 테두리가 생기고 선택을 하면 선택한 프로그래밍 언어로 전투에 들어갈 수 있다
처음 화면부터 차근차근 만들다 보니 은근 재밌고 완성도 되어가는 것 같아서 더 욕심이 난다
이번주 수요일까지 개인과제 마무리하고 그 이후에는 팀 과제로 넘어간다고 하는데 그때까지 내가 생각하는 만큼 마무리 짓고자 한다