코드카타 및 개인 과제

김민재·2024년 8월 23일
0

코드카타 풀이

68.햄버거 만들기
햄버거를 만드는데 햄버거의 재료가 6개,9개가 쌓였을 때 각각 3~6번째 재료와 2,7~9번째 재료를 조합하여 햄버거를 만든다고 적혀있고 이를 통해서 총 만들어낼 수 있는 햄버거의 수를 구하라고 하는데
햄버거 재료가 쌓여있는 배열은 ingredient로 표시가 된다.

처음에 이 문제를 보고 헷갈렸던 것이 햄버거의 재료가 6,9개일 때 처리를 하는 것이라고 생각을 해버렸다...
그렇지만 결론은 빵(1),야채(2),고기(3),빵(1)의 순서대로 되어있는 값을 재료 배열내에 찾아서 해당 배열들을 지우면서 반복하면 되는거더라..

1.배열의 총 길이를 먼저 저장한다.

솔직히 이건 안해도 된다.

2.위의 저장한 배열로 for문을 돌려서 해당하는 값이 연속적으로 1,2,3,1이라면 해당 배열에서 그 값들을 추출하고 i의 값을 빼기전으로 돌려 다시 실행한다.

이정도만 하면 될줄 알았지만.. 마지막 케이스가 늘 삑이 났었는데 그 이유에 대해서 알아보고자 한다.

이 케이스를 보면 알 수 있는데 여기서 출력 값은 처음 배열에서 추출을 하고 난 후 i의 값이 0이기때문에 그대로 가져가는 모습인데
이떄 for문의 마지막 처리 과정인 i++로 이동하게 되면서 i의 값이 증가하여 i의 값이 1이 되어버려 제대로 처리가 안되고 있는 것이었다.

그렇기에 이런방식으로 i가 0에 해당할 경우 -1로 바꾸어주게되면 다음 반복 전에 i의 값은 0이 되기때문에 다시 참조할 수 있게 된다.

개인 과제

피드백에 대한 처리

1.중복된 랜덤 함수 / 중복된 변수 사용
중복되서 random함수를 사용하는 player의 run과 defence에 함수를 선언하여 처리하였다.



그리고 attack이나 conAttack에서 damage 로그를 띄우거나 처리하는 방식에 똑같이 쓰고있기에 하나의 변수로써 통합하였다.

2.Player.run()함수에서 StartGame의 호출을 변경
reStart()라는 함수를 따로 만들어서 run메서드 내에서 도망이 충족되면 로비로 도망가게끔 만들어 놨다.

여기서 문제점이 하나 생겼는데 로비로 돌아가고나서 다시 들어오게되면 몬스터가 기존에 설정해 두었던 패턴으로 바로 행동해버리는 문제가 생겼다..

Battle내에서 설정되어있는 await도 무시하고 그냥 멋대로 행동하는거라서 도무지 이유가 감이 잡히질 않아서 일단 넘어가기로 했다.

3.사용자 입력 예외 값 / motion함수
기존의 코드대로라면 플레이어가 1~5이외의 값을 입력했을 때 처리가 안되어있었지만

다시 함수를 호출하는 것으로 해결하였고 기존의 battle()내에 있었던 긴 로직처리를 함수로 옮겨서 처리를 하게되었다.

다른 구현

1.히든 스테이지 몬스터를 추가

5스테이지마다 보스몬스터 2마리중 하나를 정하여 출현하도록 하였다.

드래곤은 저번에 그대로지만 오크의 경우엔 강화 공격이 플레이어의 Max_HP(피통)을 줄어들도록 만들었다.

이제 힐량이 줄어들겠지?

2.게임 인터페이스를 보강
게임을 시작하면 나오는 인터페이스를 꾸미지 않고 그대로 뒀었는데 제대로 정리했다.

그리고 시작을 고르게되면 스테이지의 수가 출현하면서 async와 await를 이용하여 커여운 사신과 문구가 하나씩 나오게끔 해뒀다.

3.표시 인터페이스를 보강
Player의 HP바나 MP바 / Monster의 HP바를 표시하고 줄나눔을 함으로써 좀 보기 편하게끔 만들었다.


이런식으로 데미지를 받으면 피가 깎이면서 체력바도 깎이게되고 마나도 Heal스킬을 사용하면 마찬가지로 감소하게 되는데,
마나통에 대해서는 힐량인 마나 5를 기준으로 마나통을 짰다.

profile
ㅇㅇ

0개의 댓글