게임 개발_HISTORY

내배캠_TIL251013 [TextRPG도전과제 제출] 본문

Development In Unity/내일배움캠프_Unity 12기

내배캠_TIL251013 [TextRPG도전과제 제출]

EVANJ 2025. 10. 13. 09:58

⏰ 일정

  • 9:00~16:00 개인과제 [TextRPG] 도전기능 과제 구현 및 제출 완료
  • 16:00 TextRPG 해설 및 자료 제공
  • 16:00~21:00 개인 자습 : C# 문법 종합반 강의 수강

📝 학습 요약

  • TIL 글 제목 학습내용 표기하기
  • TextRPG 도전기능 추가 및 제출하기

🧩 학습 내용

✔️ TIL 제목 시인성 높이기

5분 기록을 수행하면서 관련 내용을 TIL에서 첨부하려고 하니 TIL 게시물 중 어느 것이 내가 원하는 것인지 구분이 가질 않았다.
그래서 제목에 요약된 내용을 추가가 필요해 보였다.
제목에
내배캠_TILyymmdd_[학습내용요약]
으로 양식을 갖춰 통일 시켜야 겠다.

✔️ TextRPG 도전기능 추가

▫️클래스와 구조체 차이점
class : 상속을 사용하거나 복잡한 로직을 포함하는 객체, 혹은 여러 곳에서 공유되어야 하는 데이터를 다룰 때 사용된다.

struct : 단순한 데이터를 묶어 사용할 때, 복사할 때마다 원본이 아닌 별도의 복사본을 원할 때 사용한다.

특징 클래스 (Class) 구조체 (struct)
형식 참조 형식 값 형식
메모리 할당 힙(Heap) 스택(Stack)
상속 참조 값 복사 (힙에 있는 객체를 참조) 값 복사 (모든 데이터가 새로 복사)
생성 방식 가능 불가능
생성 방식 new 키워드를 사용하여 인스턴스화 new 키워드 없이도 가능 (권장)
데이터 크기 작고 복잡한 데이터에 유리 작고 단순한 데이터에 유리 (성능 이점)

 

▫️도전 기능 구현

1. 아이템 정보를 클래스/구조체로 활용해 보기

: 기존 필수 과제 기능에서 클래스로 구현했다. 아이템을 추가, 삭제, 수정, 사용함으로 플레이어 기본 스탯이 바뀌는 유동성의 데이터이기 때문에 클래스로 구조를 짜는 것이 합리적이라고 생각했다. 이미 클래스로 작성되어 특별한 수정사항은 없다.

2. 아이템 정보를 배열로 관리하기

: 여기서 배열을 사용하라는 조건이 보여 튜터님에게 문의를 해보았다. 현재 내가 아이템을 List로 구현했기 때문에 배열보다는 List가 더 효율적이라고 피드백을 주셔서 이 부분 또한 수정할 사항은 없었다.

3. 아이템 추가하기
: 견습용 가죽 부츠라는 아이템을 추가해 보았다. 해당 아이템의 방어력도 상태보기에서 정상적으로 계산되며 출력된다.
                        new Item("견습용 가죽 부츠", "방어력", 2, "견습생을 위한 가죽소재의 부츠이다.")

4. 콘솔 꾸미기

: 콘솔 꾸미기는 해당 코드를 작성하면 구현 가능한 색 범위내에서 구현이 된다.

기능 설명 예시 코드
Console.ForegroundColor 글자 색 변경 Console.ForegroundColor = ConsoleColor.Yellow;
Console.BackgroundColor 배경 색 변경 Console.BackgroundColor = ConsoleColor.DarkBlue;
Console.ResetColor() 색 초기화 Console.ResetColor();
문자열 정렬 PadLeft, PadRight, String.Format 등 "공격력".PadRight(10)
구분선 출력 시각적 구분선 추가 Console.WriteLine(new string('-', 30));

 

사실 구현 가능한 색의 범위도 상당히 좁다. 그래서 내가 입력한 색은 darkcyan 이지만 하늘색이 출력된다.

5. 스탯 추가하기 / 5-1. 랜덤 모험
 : 해당 기능은 if 절을 이용하여 구현하면 별다른 어려움없이 구현할 수 있다. 다만 클래스를 따로 분리해서
해당 선택지를 골랐을 때 호출하는 방법으로 수정하면 더욱 깔끔한 구조로 만들 수 있다. 



💡 현재 스스로 다른 부가적인 도움없이 기능 구현 문제를 풀이할 때 시간 너무 많이 낭비된다는 느낌을 받아,
학습법에 문제가 있는지 튜터님에게 피드백을 받아 보았다. 튜터님께서는 지금까지 학습해온 기간은 너무나도 짧고 기능 구현할 때, 처음 문제를 맞딱드리면 뭐부터 해야할지 모르겠고 머리가 하얘지는 현상은 아주 자연스러운 모습이라고 말씀해주셨다. 하지만 그럼에도 불구하고 이를 붙잡고 최대한 풀이를 해보는 고군분투 과정에서 문제를 풀이하고 스스로 기능 구현할 수 있는 힘을 기를 수 있다고 하셨다. 시간과 에너지가 과하게 소비된다는 느낌은 자연스러운 것이라고 이해했다.
매니저님께서 Programmers 라는 사이트를 소개해주셨다. 여기서는 문제를 마음껏 풀어볼 수 있는 양의 문제들이 많다.
여기서 반복학습을 해 나가면 아주 좋을 것 같다.

 

💡 이렇게 코드가 흐려지는 의미는 현재 해당 코드를 사용하지 않고 있다는 뜻이다.

 

💡      static void Main(string[] args) 에서 괄호 안에 있는 코드는

외부에서 프로그램 실행 시 입력되는 값(명령줄 인자) 를 받을 공간이다.

string[] : 문자열 여러 개를 담을 수 있는 배열

args : 프로그램 시작 시 전달받는 외부 입력값
따라서 명령줄 인자를 안쓴다면 괄호는 비워 둬도 문제없다.

🚀 내일 할 일 (To-do)

  • C# 심화 문법 발제 및 입문