[TIL] RPG 게임2 - 필수 기능 보충

티라노·2024년 11월 6일
0

Today I Learned

목록 보기
15/21

지난 게시글에서 남긴 메모

  • 이번에는 동기 프로그래밍으로 File reading 을 구현했지만, async 라이브러리의 클래스로 바꿔서 비동기로 다시 구현해야 한다.

    -> 이번에는 읽어올 파일의 크기가 작지만, 파일 크기가 언제든지 바뀔 수 있으므로 비동기적으로 프로그래밍하는 것이 좋을 거서 같다.
    -> 기존 코드에서 Future 를 어떻게 집어넣어야 할지 고민을 오래 했다...
    그러다가 저녁에 팀원들과 회의하는 시간에 힌트를 얻었는데, 파일에서 데이터를 읽어오는 코드를 클래스로 따로 분리하면 좋을 것 같다.
    -> 캐릭터 정보와 몬스터 정보를 각각 다른 방식으로 읽으므로 두 개 작성해야 한다.

  • 게임 결과를 저장할지 말지 여부를 입력받는 부분에서 예외처리가 잘못되었으니 수정해야 한다.

    -> 기존에는String 타입 변수를 입력받는데 잘못된 입력의 대비로 예외처리를 해두었다. 그런데 웬만해서 String 에 불가능한 문자열을 넣기 쉽지 않다.
    -> 따라서 y를 입력하는 경우, n을 입력하는 경우, 둘 다 아닌 경우는 default 로 나눠서 case 를 구별해주었다.

  • 게임 종료 조건을 목표치만큼 몬스터를 해치우는 것이 아닌, 리스트의 모든 몬스터를 해치우는 것으로 잘못 설정해두었기 때문에 수정했다.

    -> monsterCount 를 미리 설정해두고 battle 메서드에서 몬스터를 물리칠 때마다 변수에서 1씩 빼면, monsterCount 가 0이 될 때 목표한 수만큼 몬스터를 해치웠다고 볼 수 있다.

String fightResult='승리';
if(character.hp<=0&&monsterCount!=0){
  fightResult='패배';
}
else if(character.hp<=0&&monsterCount==0){
  fightResult='무승부';
}

승패 판별 조건을 monsterList.isEmpty 에서 monsterCount 가 0인지 아닌지로 바꿨다.

도전 기능 1 - 보너스 체력

캐릭터가 게임을 시작하는 시점에 확률적으로 보너스 체력 10을 얻는 기능이다.
30% 확률로 보너스를 얻기 때문에, if 문의 조건으로 Random() 값을 넣어주고 확률이 0.3이 되도록 설정했다.

void getBonusHp(){
    if(Random().nextInt(10)<3){
      character.hp+=10;
      print('보너스 체력을 얻었습니다! 현재 체력: ${character.hp}');
    }
  }

이 함수를 게임을 시작할 때 호출하여 캐릭터가 보너스를 얻게 한다.

0개의 댓글