RPG 게임 제작하면서 알게 된 점
· 4 min read
📚 오늘의 학습 내용
- 오늘 최종적으로 과제를 제출할 수 있었다. 과제를 하면서 확실히 어떻게 코드를 구성해야 하는지 생각해 보고 문법 강의에서 배웠던 내용들을 프로젝트에 사용해 봄으로써 내 것으로 만들 수 있었다.
- 무지성으로 프로그래밍을 하다 보면 코드가 지저분해지는데 조금 더 코드 리펙토링을 해 가면서 깔끔하게 쓸 수 있도록 바꿔나가는 게 필요할 것 같다.
✍️ 주요 학습 내용
새로 알게된 개념
- 생성자에서 일부는 미리 지정을 해줄 때가 헷갈렸는데 아래의 두 가지 방법으로 가능했다!
class Game{
late Character character;
List<Monster> monsterList;
int killedMonster = 0;
Game({
required this.character,
required this.monsterList
});
Game(this.character, this.monsterList);
}
입력 받기
- 입력받을 때 null handling을 이런 식으로 강사님이 하시고 계셨다.
stdout.write('이름을 입력해라 짜슥아');
String? name = stdin.readLineSync();
if(name == null){
return ; // 프로그램 종료
}
몬스터 입력
file.readAsLinesSync()
- 이것을 통해서 줄별로 리스트에 넣어줄 수 있다.
- 이것을 몰라서
split(’,’)
으로 코딩을 해서 고쳤다.
File file = File('monsters.txt');
List<String> lines = file.readAsLinesSync();
// line 단위로 List에 넣어줌
for(var line in lines){
List<String> stats = line.split(',');
if(stats.length != 3) throw FormatException('Invalid Monster');
String name = stats[0];
String name = int.parse(stats[1]);
String name = int.parse(stats[2]);
}
기타
- while 조건문에서 bool 변수를 만들어 줘서 코딩을 했는데
isNotEmpty
같은 함수를 활용해서 조금 더 간결하게 코드를 짤 수 있었다.
throw StateError('몬스터가 없습니다');
max(0, attack - monster.defense);
= 큰 값을 골라주는 것
while(monsterList.isNotEmpty){}
정규표현식
RegExp(r'^[a-zA-Z가-힣]+$').hasMatch(name);
// regular expression
결과저장
//game class
saveResult(){}
랜덤 30%
- 100 중에서 30까지 나오면 실행
Random random = Random();
- 도전 기능 메서드로 구현하기!
increaseDefence(){
defence += 2;
}
실습한 내용
- RPG game 만들기
🚨 발생한 문제/에러
📝 코드 스니펫
// 오늘 배운 주요 코드
List<String> lines = file.readAsLinesSync();
📚 내일 학습할 내용
- 과제 코드 리펙토링
💭 오늘의 회고
잘한 점 👍
- 과제 마무리한 것
개선할 점 🔨
- 과제 복습 및 문법 부족한 부분 복습하자
배운 점 💡
- 여러 가지
✏️ 참고 자료
- Flutter 공식 문서: https://docs.flutter.dev