내일배움캠프 AI - 6일차 TIL, 2022.04.25

Dongwoo Kim·2022년 4월 25일
1

TIL / WIL

목록 보기
7/113

스파르타 코딩클럽

내일배움캠프 AI 웹개발자양성과정 2회차

2022.04.25. 6일차- TIL

1. 개인 프로젝트 시작

09:00-10:00 프로젝트 발제
10:00-11:00 pygame 추가 강의

미니 팀 프로젝트를 진행했던 지난 주와 달리 이번 주는 개인 프로젝트로 시작했다. 프로젝트 주제는 pygame을 이용하여 python으로 나만의 게임을 만든는 것. 어떤 주제를 할지 고민이 되었다. 게임을 만들어본 경험은 대학교에서 컴퓨터그래픽스 라는 수업을 들으면서 팀 과제로 만든 적이 있다. 그 때 팀원들과 열심히 노력한 만큼 좋은 결과는 얻지 못해서 안좋은 기억이 있었는데 이번 기회에 한번 제대로 만들어볼까도 싶었다. 하지만 그 때 만든 것처럼 3D 레이싱 게임을 만들기에는 너무 힘들지 않을까 싶어서 2D로 생각을 바꾸었고 결국 2d 횡스크롤 격투게임을 만들기로 정했다.

2. 게임 설계

11:00-12:30 프로젝트 설계 및 데모
12:30-13:00 팀원들과 공유

주제를 정하고 제일 먼저 한 것은 프로젝트 정의. 내가 이 프로젝트를 통해 얻고자 하는 것이 무엇인지, 이 프로젝트의 목적이 무엇인지 먼저 확실히 하는 것이 개발이나 프로젝트 진행에 있어서 도움이 많이 되는 것 같다.

https://velog.io/@kimphysicsman/내일배움캠프-python-게임-만들기-1-설계

이후 간단한 데모 버전을 만들어 보았다. 유저의 캐릭터를 Fighter 클래스로 만들어서 랜덤으로 공격을 주고 받고 hp가 0이 되는 캐릭터가 지는 식이었다.

from random import randint

class Fighter():
    hp = 100
    alive = True

    def damage(self, attack):
        self.hp = self.hp - attack
        if self.hp < 0:
            self.alive = False

    def attack(self, attack_type, enemy):
        if attack_type:
            enemy.damage(10)
        else:
            enemy.damage(15)

a = Fighter()
b = Fighter()

while a.alive and b.alive:
    x = randint(1, 2)
    y = randint(1, 2)

    if x == 1:
        a.attack(y, b)
    else:
        b.attack(y, a)

    print(x, y, f'a hp : {a.hp}, b hp : {b.hp}')
데모 결과

3. 본격적인 개발 시작

13:00-14:00 점심시간
14:00-16:00 게임 개발
16:00-16:30 진행상황 리뷰
16:30-19:00 게임 개발

클래스에 먼저 공격과 피격을 정의하는 함수를 만들고 이후 pygame을 이용해 Figther 객체를 화면에 그리고 공격 모션을 만들었다. 공격 범위와 적이 충돌하는지 확인하고 충돌한다면 최종적으로 공격 판정을 내리도록 했다.

이후 팀원들과 간단하게 각자의 진행상황에 대해 리뷰했고 이후에 수비모드까지 넣어서 공격 판정에 수비를 했는지 안했는지 까지 고려했다.

나는 이렇게 뭔가 개발을 할 때 하나하나 조금씩 확실하게 살을 붙여가면서 만드는 게 편한 것 같다. 물론 그렇게 하지 않는 경우도 있다. 같은 팀원 중 한명은 고스톱을 주제로 만들고 있었는데 처음부터 모든 경우의 수를 클래스로 만들어서 전체적인 그림을 그려나가고 있었다.

4. 일일 결과물

19:00-20:00 저녁시간
20:00-20:30 결과물 공유
20:30~ 일일회고 및 TIL 작성

그렇게 해서 만들어진 첫날의 결과물은 나름 준수했다고 생각한다. 캐릭터의 이동함수와 공격함수를 main함수에서 객체의 함수로 옮기는 작업에서 오류가 조금 나긴 했지만 현재 상황까지는 재밌게 잘 하고 있는 듯하다.

내일부터는 궁극기와 크리티컬 데미지, 피격 경직 등을 적용시켜보고 여유가 된다면 콤보공격, 다양한 패턴의 캐릭터들을 추가해보고 싶다.

profile
kimphysicsman

0개의 댓글