일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 파이썬
- 무료강의
- 참가후기
- django multi image
- error
- 22938번
- ㅐㄱ이
- 프론트엔드
- 프로그래머스입문
- jquery
- 장고이미지처리
- GIT
- 20492번
- useState
- MongoDB
- python
- 코딩기초트레이닝
- sql
- css
- React
- 스파르타코딩클럽
- 장고 다중이미지
- SEF2022
- html
- 네이버커넥트재단
- 프로그래머스
- 반응형
- 스파르타
- 개인정보수집유효기간
- 파이썬무료강의
- Today
- Total
코딩,해볼까
💫 03.31. class 팀 과제 (고도화된 턴제 rpg 게임 제작) 제출 및 해설 + update_04.04 본문
0. 오늘 배운 것
조과제 해설강의와
튜터님에게 조과제 피드백을 받았다.
1. 문제점
<우리 조원들이 함께 생각한 문제점 정리..>
1. action 순서가 조금 뒤죽박죽이다.
- 게임의 순서와 들어갈 함수를 먼저 줄글로 정리하면서 진행하지 못했다...
2. action 에 있어야하는 함수가 main에 있기도 하다.
3. 인벤토리를 구현하고 싶었는데 구현하지 못하고, 획득 후 바로 장착되며 장착되는 아이템들이 마치 스탯처럼 계속해서 증가만 하고 있다. (장착해제가 되지 않고 누적된다..)
울 팀원분들 다들 진짜 똑또캐 너무 멋있어요... 짱짱..!!!!💜💜
2. 시행착오
문제점 3의 인벤토리를 추가하면서 겪은 시행착오를 메모한다.
우리팀은 class 함수들이 있는 main.py와 게임이 실행되는 전반적인 함수들이 담긴 action.py로 나누어 진행했다.
1. Inventory 클래스를 만들어서 기본적인 기능인 use, remove, view_items 라는 함수를 만들었다. 아이템에는 아래와 같은 추가적인 기능이 필요하다.
- 같은 아이템을 획득하면 카운트가 올라가야 한다.
- 물약은 먹으면 바로 없어져야 하는 소모품이다.
- 장비는 장착했다가 장착 해제가 가능해야하며 그 때, 스텟이 바뀌어야 한다.(player 클래스와 연관)
- 장비는 몬스터가 드랍한다. (monster 클래스와 연관)
- 장비와 물약은 Eqipment 클래스로 만들어졌다. (eqipment 클래스와 연관)
처음에는 Inventiry 클래스에는 Eqipment 클래스만 있으면 된다고 생각하였는데, 각각의 클래스 안에도 이 item 들에 대한 함수가 들어있다보니 하나 고치면 다른곳에서 오류가 나는 등 여기저기서 오류를 뱉어냈다. (Inventory 클래스.. player와 monster, eqipment 를 인자로 받아서 사용하기도 하고 빼보기도 하고... 다양한 시도를 했다.) 게임을 계속 실행하면서 오류를 하나씩 잡아나갔는데 뭔가 시원하게 해결이 되지 않고 제자리걸음 같았다.
2. 문제가 해결되지 않아 Inventioy 클래스를 삭제하고, 내용들을 전부 action.py에 낱개 함수들로 담아야하나 고민하던 중에 세 함수의 연결고리를 유심히 보니 해결방법이 떠올랐다. player 클래스를 상속받는 각각의 직업의 attack, magic_attack 스킬에 공격했을 때 몬스터의 체력이 0과 같으면 아이템을 드랍하라는 함수가 있었다. drop 함수는 monster 클래스 안에 있었다. 여기서 action함수와 class함수의 역할을 명확하게 하고, 분리를 해주어야 겠다는 생각이 들었다. 으로 빼서 함수로만 구성해야겠다는 새로운 생각이 들었다.
- 이 함수를 인벤토리로 가져오고, 몬스터가 쓰러지는 시점으로 드랍 아이템 함수를 배치해봤다.
1) 이 함수가 main의 monster 클래스가 가지고 있는 drop 함수 실행 부분이다. 실행은 각 직업들의 공격과 마법공격 아래에 모두 추가되어 있었다.
if target.hp == 0:
print(f"{target.id}이(가) 쓰러졌습니다.")
target.drop_item(self) # 몬스터가 죽으면 드랍
2) action의 몬스터 데스 함수로 이동시킨 모습이다.
# 몬스터 리스트 제거 함수(반복문으로 간략화 가능해 보임)
def monster_death(monsters_list, player):
for m in monsters_list:
if m.hp <= 0:
print(f"{m.id}이(가) 쓰러졌습니다.")
monsters_list.remove(m)
player.gain_exp(m.get_exp())
inventory.drop_item(p1)
3. 해결방법
23.04.03. 인벤토리 함수를 연결하는 것 까지 성공하였다.
해결된다면 이 게시물에 업데이트 할 예정이다.
4. 알게된 점
해결방법과 함께 업데이트할 예정이다.
'Back > TIL' 카테고리의 다른 글
04.04. 본격 Django 실습 / Window PyCharm 인코딩 오류 (0) | 2023.04.04 |
---|---|
04.03. Django 초급 수업 시작! (0) | 2023.04.03 |
03.28. class 보충수업 및 과제 제출 (0) | 2023.03.28 |
03.27. class 함수 공부와 과제 (1) | 2023.03.28 |
03.24. 점프 투 파이썬 02장 완료 (0) | 2023.03.28 |