내 과제 코드와 해설 코드를 비교해보며 느낀 점은
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 |