본문 바로가기
TIL

[TIL] 과제 보충

by chengzior 2024. 11. 8.

 

내 과제 코드와 해설 코드를 비교해보며 느낀 점은
dart의 고차함수를 잘 사용을 못하고 있다는 것이었다.

예를 들어 전투 결과를 저장할 때 승리인지 패배인지를 판단하는 함수를

          if(gameResult==true){
            writeFile('승리');  
          }else{
            writeFile('패배');  
          }

이렇게 작성했는데 고차함수로 작성하면 

final result = victory ? '승리' : '패배';

이렇게 간단하게 작성할 수 있었다.
완전 일맥상통하는 코드는 아니어도 잘 활용한다면 코드도 간결해지고 가독성도 좋아질 것 같다.

 

또한 로직도 내가 복잡하게 생각한 게 많았다.

  Monster getRandomMonster() {
    if (monsters.isEmpty) {
      throw StateError('몬스터 리스트가 비어있습니다.');
    }

    return monsters[Random().nextInt(monsters.length)];
  }

랜덤으로 몬스터를 불러오는 코드를 이렇게 작성할 수 있는데

    if (monsterList.isEmpty) {
      print('몬스터 리스트가 비어있습니다. 게임을 종료합니다');
      if (killedMonster>0){
        askWriteFile();
      }
      isTerminated = true;
      return Monster();
    }

몬스터 리스트가 비어있을 때 죽인 몬스터의 수를 판단해서....
코드 작성 전에 로직을 어떻게 짤 지 구상을 먼저 한 다음에 작성하는 것이 좋겠다는 생각이 들었다.

 

또 가장 어려웠던 로직이 캐릭터가 아이템을 한 턴 동안만 쓸 수 있고 그 다음 턴에는 캐릭터의 공격력을 원래대로 해주는 거였는데

  void useItem() {
    if (!usedItem) {
      print('특수 아이템을 사용하여 ${name}의 공격력이 두 배가 됩니다!');
      attack *= 2; // 한 턴 동안 공격력 두 배 처리
      usedItem = true; // 아이템 사용 완료 처리
    } else {
      print('이미 특수 아이템을 사용하셨습니다.');
    }
  }

해설 코드를 보니 이렇게 캐릭터 클래스 내부에서 다 처리를 해 줄 수 있는 코드였는데,

      //아이템 한 번씩만 쓸 수 있게
      character.power = originalPower;

내가 작성한 코드는 캐릭터 클래스 내에서 함수를 작성해주고 battle() 내에서도 계속 연산을 해주는 형식이어서
연산이 늘어나는 단점이....

 

'TIL' 카테고리의 다른 글

[TIL] 리스트 압축  (2) 2024.11.12
[TIL]플러터 기초  (0) 2024.11.11
RPG 전투 게임  (0) 2024.11.07
[TIL] 큐&연결리스트  (0) 2024.11.06
[TIL] 리스트 빈도 구하기  (0) 2024.11.05