개인과제로 TextRPG를 만들게 되었다
예전에 c++로 만든적이 있는데 확실히 문법에 대해 익숙해지는 경험이었는데 C#도 그럴 기회가 생겼다!
그래서 나는 요새 개인과제에 푹 빠져있다 오늘 배운것들도 다 개인과제 하면서 배웠다
문자열 포맷
인벤토리를 서식에 맞춰서 출력하기 위해 찾아보다가 시도해본 방법이
Console.WriteLine("{0},-10}", name);
name을 10개의 문자가 들어갈 공간을 만들어주고 채워넣는다, 부호는 왼쪽/오른쪽 맞춤에 사용된다
PadLeft("문자를 붙인 후 문자열 전체 길이 수 ", 문자열에 붙이고 싶은 문자);
PadRight("문자를 붙인 후 문자열 전체 길이 수", 문자열에 붙이고 싶은 문자);
문자열에 붙이고 싶은 문자를 띄어쓰기로 넣어주면 위와 같이 나타낼 수 있다
하지만 이런 방법은 다른 크기의 문자열 (ex.영어 + 한글) 을 포맷 할 때는 쉽지 않았다
그래서 나는 그냥 Console.SetCursorPosition을 이용하여 출력 위치를 정해서 만들었다
정렬
아이템을 List로 관리하고 있기에 OrderBy()를 사용하였다
원래 알고있던 함수였는데 쓰는게 생각보다 쉽지 않아 더 자세하게 찾아보았다
내가 사용한 코드를 분석해보며 설명하자면
Inventory = Inventory.OrderBy(item => item.StatsType == STATSTYPE.Atk ? 0 : 1).ThenByDescending(item => int.Parse(item.Stats)).ToList();
item.StatsType은 enum문으로 조건식을 달아 참이면 0 거짓이면 1 이라는 키 값을 주고 오름차순으로 스탯 타입을 정렬
ThenBy으로 정렬 조건을 하나 더 정할 수 있는데 Descending를 붙여서 내림차순으로 스탯 수치를 정렬하였다
입력 경고 메세지
string? answer = Console.ReadLine();
Nullable Reference Type의 일부인 ? 키워드를 사용해 Console.ReadLine()에 대한 경고 메세지를 없애주었다
저 키워드는 타입을 엄격하게 만들어서 null값에 대한 정보를 명시적으로 처리하는 것이다
'TIL' 카테고리의 다른 글
[TIL] 내일 배움 캠프 _Unity 개인과제 제출 및 후기, 4주차 강의 (0) | 2023.08.23 |
---|---|
[TIL] 내일배움캠프_Unity 개인과제 버그 (0) | 2023.08.22 |
[TIL] 내일배움캠프 _Unity static, 코딩 팁, 컴퓨터구조&운영체제, 코드컨벤션 특강, 코드리뷰 (0) | 2023.08.18 |
[TIL] 내일배움캠프_Unity C# 문법 종합반 3주차 과제 복습, 게임 로직 관련, 학습법 특강(feat.ChatGPT) (0) | 2023.08.17 |
[TIL] 내일배움캠프_Unity C# 문법 종합반 3주차, 고민해결 (0) | 2023.08.16 |