카테고리 없음

2025_02_05 TIL

chajungto0211 2025. 2. 5. 20:55

오늘 적어볼 것은 내가 당일에 완성했던 TextRPG의 복습개념이다.

TextRPG 제작과정

내가 처음에 이 과제를 보았을 떄 이렇게 해보면 어떨까?라는 생각이 많이 들어서 계속해서 아이디어를 짜냈었다. 그리고 떠오른 것들을 메모장에 하나하나 아이디어를 적어 놓았고, 나중에 코드로 구현할 때 자주 참고했었다. 그리고 마침내 "내가 생각하기에 이 정도면 내가 생각한거는 다 구현했다"하고 생각이 들만큼 완성했다. 

 

제출 후 보이는 것들

그렇게 다 제출했다고 조금 안심하고 있었지만, 복습하려는 차원에서 내가 짠 코드를 전체적으로 둘러보았다. 그런데 내가 보기에도 조금 아쉬운 부분들이 있었다. 일일이 하드코딩하느라 놓친건지, 그냥 내가 귀찮다고 생각해서 놓친건지 잘 구분도 가지 않았다. 그래서 오늘 이런 부분들을 한번 적어볼까 한다.

 

혹시나 코드가 궁금한 사람들은 잘 못만든 코드긴 하지만 "이 사람은 이렇게 했구나~" 라는 느낌으로 봐주면 될것 같다. 

https://github.com/chajungto/TextRPG

 

GitHub - chajungto/TextRPG: TextRPG

TextRPG. Contribute to chajungto/TextRPG development by creating an account on GitHub.

github.com

굳이 깃허브까지 안가도 이해를 위해 다이어그램을 간단하게 그렸다. (오랜만에 그린거라 부정확 할 수 있음)

자주 쓰이는 부분들

내가 코딩을 하면서 자주 쓰인다고 생각되는 것들은 묶어두어서 함수로 만들어 간편하게 쓴다. 이때까지 그런 줄 알았다. 하지만 이번에 내가 코딩한 걸 보니 여전히 함수로 묶어두면 괜찮다고 생각되는 부분들이 눈에 보였고, 실제로 간소화가 많이 될 것 같았다. 다음부터는 조금 더 신경써야 되겠다고 생각했던 부분이었다.

Console.WriteLine("");
Console.WriteLine("\t이제 당신의 직업을 선택해주세요.");
Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++");
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("1. 기사 \t\t 공격력을 획득하고 시작합니다. 하지만..");
Console.ForegroundColor = ConsoleColor.Blue;
Console.WriteLine("2. 부자 \t\t 많은 골드를 획득하고 시작합니다. 하지만..");
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine("3. 도박사 \t\t 자신의 스탯을 운에 맡깁니다.");
Console.ResetColor();
Console.WriteLine("+++++++++++++++++++++++++++++++++++++++++++++++++++++++++");

/////글자 색깔을 바꾸고 리셋시키는 부분을 함수로 만들었으면 괜찮았을것 같다.

 

과도한 변수들

이번 과제를 하면서 애용하던 코드 중에 하나가 Random함수였다. 랜덤으로 무언가를 받아오는 부분들이 많았는데, 거기서 Random자체를 많이 쓰게 되었다. 근데 내가 제작한 코드를 보면, 같은 클래스 내에서 굳이 랜덤을 다른곳에 여러번 선언해서 많은 랜덤들이 나오게 되었고, 그에 따른 내가 선언한 randomIndex도 많아지게 되었다. 변수를 적극적으로 사용해 코드를 유연하게 짜는것은 좋다고 생각이 들지만, 그렇다고 너무 과도하게 선언을 해버리면 나중에는 어떤 변수인지 구분이 안 갈수도 있고 찾기 어려워진다고 생각을 한다. 그리고 그 생각이 지금 내 코드를 보면서 나오게 되었다. 앞으로는 과도하게는 사용하지 말고 유연하게 사용해야 되지 않을까 싶다. 

// 클래스 Selection 중 많은 Random들과 그에 따른 변수들

Random randoom_03 = new Random();
int randomIndex_03 = randoom_03.Next(1, 3);
int ChoosedIndex_03 = ChooseNumber();

.
.
.
Random randoom_08 = new Random();
int randomIndex_08 = randoom_08.Next(1, 4);

.
.
.

Random random_09 = new Random();
int randomIndex_09 = random_09.Next(0, 101);
ch.GetGold(randomIndex_09);

 

마치며

지금 쓴 단점은 대표적으로 2개지만, 전체적으로 단점투성이라고 생각이 든다. 아직 걸어가야 할 길이 많다는 뜻이기도 하다. 하지만, 결국에는 TextRPG를 로그라이크 형식으로 내가 원하는 게임 진행 방식을 구현했다는 점에서는 어느정도 뿌뜻하다는 느낌은 든다. 오늘 한게 끝이 아닐거고, 앞으로도 실수와 부족함들이 많이 나오겠지만, 나아가는 과정이라고 생각하고 그 과정에서 생기는 뿌뜻함을 많이 느껴봤으면 좋겠다.

(왜 손발이 오그라들지)