두 번째 팀프로젝트 [TextRPG/프로그래밍기초주차] -2

2025. 10. 15. 22:31개발

우와 오늘 공부 짱 많이 했다

 

 

 

 

 

 

2025년 10월 15일 TODOLIST

 

생각보다 못한거 많네 큼큼

했다고 쳐

 

 

 

 

 

 

 

 


 

오늘의 사담

 

 

 

ummm..나 자꾸 같은데서 막히곤 해.....

클래스에서 막혀........

고급문법 어쩌고...? 당연히 막혀.....

그래서 강의 듣고 듣고 또들어...

그치만 모르겠어yo.

 

당연함.

알고보니 강의가 스탠다드 기준이었음

베이직단계인 나는 이해 못하는게 당연한거였음.

그래서 팀원분께서 따로 유튜브 강의 공유해주셔서

그거 듣고 있음. 

 

아직도 잘 모르겠음.

그래서 알때까지 들어볼거yeah yo......

 

 

 

 

이제 6주차인데

처음보단 그래도 많이 발전했다는걸 스스로 느껴........

아직도 튜터님들의 복장을 터뜨리곤 하지만 ㅎ

스스로 성장했다고 느끼는 감각이 중요한거아님가요?

맞죠?

 

 

 

 

 

레쓰고

 

 

 

 

 

 


 

 

 

 

 

오늘은 인트로 화면을 만들었다.

놀랍게도 다 수정들이 필요하다.

그래도 인트로는 제법 그럴싸하게 연출까지 완료해서

팀원들의 박수갈채를 받았다 ㅋ

 

지피티가 도와주긴 했지만

어쨌든 코드 두들긴건 내 손가락이니까

다 내덕이다.

 

 

 

 

 

 

화면 기록 2025-10-15 오후 9.29.09.mov
2.73MB

 

 

#인트로 구성창

 

 

 

char와 속도조절 코드 이용해서 촤르르 뜨게 연출
한 번 물어보고 (대기)
두번 확인해 (또 대기)
준비 됐다고? 그럼 이름 입력받기
멋지다고 칭찬해주기 and 아무키 누르면 시작

 

 

 

 

 

 

 

 

어때요 멋지죠 나 잘했죠 칭찬해줘

 

 

분명 오전에 나 못따라가겠다고 찡찡거리다가

잘하니까 금새 자신감 올라간 me

업다운레전드세요~ㅎㅋ

 

 

 

이러면서 성장하는거래

 

 

 

 

 

namespace ConsoleRPG
{
    public class Intro
    {
        public void StartIntro()
        {
            Console.OutputEncoding = Encoding.UTF8;
            //콘솔 유니코드 깨짐 방지!


            string logo = @"⠄⠄⠄⠄⢀⢠⡠⠖⢚⣽⣋⡥⠤⠤⣀
⠄⠄⡀⠄⡎⠞⠄⠄⠞⠋⠁⠄⠄⠄⠈⠑⠶⠤⣄
⠄⠄⢓⡶⠗⠄⠄⠄⠄⠄⠄⡀⠄⠄⠄⠄⠄⠄⠄⠑⣄
⠄⢀⠎⠄⠄⠄⢀⣠⢾⢀⣶⠄⢀⠄⠄⠄⠄⠄⠄⠄⠉⠤⣀⣤
⢤⡾⢴⠄⠄⢠⠞⠁⢸⡎⠙⣄⡿⠓⢴⣄⡀⢀⠄⠄⠁⢶⠊⠄
⠄⠄⢆⡠⠄⡞⠄⠄⠘⠄⠄⠈⢶⠄⠈⠏⠳⢎⣆⠄⠄⣈⡷⠤
⠄⠊⢹⣧⢀⠃⠄⢉⣉⡁⠄⠄⠄⠄⢉⣉⡉⠈⠸⠄⣷⡧⠄
⠄⠄⠘⡟⣎⡀⠐⠁⣾⡎⠄⠄⠄⠄⢱⣶⠌⠂⢠⣼⠙⠄
⠄⠄⠄⠳⡡⢡⠄⠄⠉⠄⠄⠄⠄⠄⠄⠉⠄⠄⡎⢌⠞
⠄⠄⠄⠄⠙⠺⡄⠄⠄⣄⡀⠈⠄⢀⢠⠄⠄⢰⠗⠉
⠄⠄⠄⠄⠄⠄⠄⠢⡀⠄⠄⠐⠒⠈⠄⣀⠔⠋
⠄⠄⠄⠄⠄⠄⠄⠄⠈⡖⠤⣀⣀⠤⢢⠁
⠄⠄⠄⠄⢀⣠⢤⠞⡟⠁⠄⠄⠄⠄⠘⡖⢢⠤⣄⡀
⠄⠠⠲⠈⠉⣧⠐⠄⠹⡀⠄⠄⠄⠄⡰⢁⠌⠰⡏⠉⡶⠢⠄
⠄⠄⠄⠁⠄⠁⠂⠄⠄⠄⠂⠄⠄⠄⠁⠄⠄⠁⠄⠄";


            foreach (char emoticon in logo)
            {
                Console.Write(emoticon);
                Thread.Sleep(2);
            }
            
            Thread.Sleep(500);
          
          
              Console.Clear();
              Console.WriteLine("\n\n취준하러 오셨나요?");
              Thread.Sleep(2000);
              Console.WriteLine("험난한 여정일텐데 괜찮으시겠어요?");
              Thread.Sleep(3000);
              Console.WriteLine("각오가 되었다니 좋습니다.");
              
              
              Console.WriteLine("우선 당신의 정보를 입력해주세요.");
              
              Console.Write("이름:");
              string inputName = Console.ReadLine();
              Console.Write("직업:");
              string inputJob = Console.ReadLine();
              
              
              Console.WriteLine($"아하! {inputJob}이시군요. 멋진데요? 좋습니다 {inputName}님. 이제 모든 준비가 끝났습니다.");
              Console.WriteLine("Press any key to start...");
              Console.ReadKey(true);
              
              Console.Clear();
        }
        
    }

    
}

 

 

전체 코드를 보면 이렇습니다. 

 

첫번째는 유니티로 만든 게임이라 

사운드나 이미지, 영상 등 연출을 화려하게 보여줄게 많았는데요.

 

이번 프로젝트는  텍스트기반의 콘솔게임이다보니

지루하지 않도록 하려면 어떻게 하면 좋을까..?

고민을 해보니까, 예전에 제가 자주 쓰던 텍스트 이모티콘이 떠오르는거에요!

 

 

그래서 도트 이모티콘 사이트에서 갖다붙여서 썼습니다.

 

https://snskeyboard.com/dotarteditor/

 

🔮도트아트 에디터(그림 그리기 → 특수문자) ― SNS Keyboard

그림을 그려 도트 아트를 생성할 수 있는 온라인 도구입니다.

snskeyboard.com

 

 

 

 

그리고  이모티콘을 보여주고

Console.Clear();를 이용해서

바로 지우려고 했는데요. 

 

이걸 촤르르르 연출하는게 더 이쁠 것 같다고

지피티가 아이디어를 내주는거에요.

 

그래서 어떻게 연출하면 좋을까...하다가

 

 

foreach (char emoticon in logo)
            {
                Console.Write(emoticon);
                Thread.Sleep(2);
            }
            
            Thread.Sleep(500);

 

지피티가 이렇게 foreach문 힌트를 주더라고요.

 

 

우리 char 자료형 기억하시나요?

한글자만 담을때 쓸 수 있는 자료형이에요.

 

이 자료형을 이용해서 변수에다 담는거에요.

 

 

char emoticon in logo

이런식으로! 

 

char =자료형

emoticon = 변수명 

in logo =로고에다 담아라 

 

 

 

string logo = @"⠄⠄⠄⠄⢀⢠⡠⠖⢚⣽⣋⡥⠤⠤⣀

 

 

 

그러면 여기서부터 이렇게 담기겠죠? 

 

 

 

 

 

근데 그렇다면!

왜 여기서 foreach문으로 써야하느냐? 라는 의문도 생길거에요. 

 

 

 

for문으로 써도 됩니다.

그치만 그렇게 되면 

 

for (int i = 0; i < text.Length; i++)
{
    Console.Write(text[i]);
    Thread.Sleep(100);
}

 

이런식으로 코드가 별로 안이쁘고 덜깔끔하게 짜여요.

조건을 다 넣어주어야하기 때문이에요.

 

 

 

 

근데 우리 foreach문 어떨때 써요?

모든걸 하나씩 꺼내서 쓸 때 쓰죠!!!!!

 

 

왜~ 우리 배열과 리스트 배웠을때도

하나씩 꺼내 써야되기 때문에

foreach문 썼었잖아요.

 

 

그래서 이것도 마찬가지임다.

한글자 한글자 꺼내서! 쓰고 싶기 때문에

foreach문 썼음다.

 

 

 

 

 

그래서 foreach문으로 썼을 때 이점은 

 

oreach (char c in text)
{
    Console.Write(c);   // 한 글자씩 출력
    Thread.Sleep(100);  // 0.1초 쉬었다가 다음 글자 출력
}

 

for문에 비해 예쁘죠?

바로 이겁니다.ㅋ

(저 성장한 느낌 들어서 뿌듯해요)

 

 

 

 

⭐️

또한 이 코드에서 배운점이 하나 더 있어요.

Thread.Sleep(); 이용하면

시간차를 두면서 출력할 수 있어요. 그렇대요.

 

 

 

그래서 이 코드를 응용해서 글자 출력할때도

조금 천천히 물어보고 답 듣는 느낌으로 연출해주었습니다.

 

 

 Console.Clear();
              Console.WriteLine("\n\n취준하러 오셨나요?");
              Thread.Sleep(2000);
              Console.WriteLine("험난한 여정일텐데 괜찮으시겠어요?");
              Thread.Sleep(3000);
              Console.WriteLine("각오가 되었다니 좋습니다.");
              
              
              Console.WriteLine("우선 당신의 정보를 입력해주세요.");

 

바로 이륵케~

 

 

 

 

 

 

 

 

 

 


 

 

 

anyway, 

까먹기 전에 적어두는 오늘의 생성자 개인특강

 

 

 

 

 

변수를 만들때 어떻게 만드나요?

 

int (자료형)

a (변수명)

=5; (5라는 '값')

 

 

그래서 int a=5; 라는 변수 하나가 생성이 된거죠?

 

main에서 클래스 호출할때도 마찬가지임.

 

가영 클래스를 불러오고 싶으면 

new gayeong(); 을 써주면 되는거죠

 

 

 

new(새로운이라는 뜻/ 자료형)

gayeong(가영 클래스명)

 

 

 

 

근데 튜터님이 가영이 지갑에서 돈을 빼오고 싶어요?

 

그래서 new gayeong().wallet = 100000; 만들어주고 

돈 빼와요? 

 

뺄 수 있어요 없어요????????

 

없어요~~~

 

왜냐면 new gayeong().wallet=100000; 은 사실 가영이가 아니거든요..

새로운 가영이거든요..... 

 

 

 

 

 

 

 

이게 무슨 소리야 ....싶죠?

 

 

자 봐바요 우리 아까전에 new 하면 새로운 애가 생성이 되는거라고 했잖아요.

그니까 여기서의 new gayeong은 유가영이 아니라 뉴가영이 된다는 말씀. 

동명이인의 지갑에 손을 댔다는 그 말씀이다~~~이올시다.

 

 

 

 

 

 

 

그럼 나 유가영이 지갑에 손대고 싶어! 

그럼 어떻게 해야하나요?

 

이것도 걍 변수 만들듯이 하면 됩니다.

 

 

gayeong (값형/자료형)

g (변수명 임의로 짓기)

=(담다)

new gayeong (내가 불러오고 싶은 '그' 유가영을)

 

 

gayeong g = new gayeong();

그러면 g라는 변수명에다가 유가영이 담긴거겠죠??

 

 

그러면 g.wallet = 100000; 

하면?

 

가영의.지갑의 만원이 되는거에요.

여기서 온점은 ~의 라는 뜻인거 이제 다들 알거라 믿어.

 

 

 

 

 

 

 

자 여기서 그러면 yh가 gy의 지갑에 손을 대게 할거에요

(시작할 땐 소개팅으로 설명하셔놓고 지갑손대는걸로 설명 끝내시는 우리 튜터님 ㅎㅎ)

 

 

 

public void Main() //코드에서는 Run이지만 여기서는 그냥 Main이라고 하겠습니다.

{

     gy = new gayeong(); 여기서도 마찬가지로 gy이라는 변수명에 유가영(지갑주인) 담아주어요?

     yh = new Youngho();

 

 

}

 

 

 

 

이렇게 만들어줘요~

그리고 나서 그 위에 필드에다가 또 언급을 해주는거죠

public gayoung gy;

public younho yh;

 

이렇게! 

네가 찾는 그 애가 얘다

이렇게 말해주는겁니다......... 

 

//맞나요..? 이 필드 부분은 나중에 튜터님한테 확인 필요.

 

 

 

 

 

 

 

 

 

 

 


 

 

그리하여 오늘 알게 된 것들:

 

 

 

 

1)

Main은 프로젝트에서 단 하나만!!!생성할 수 있다.

개인프로젝트때도, 팀프로젝트에서도 마찬가지.

 

그래서 이럴 경우에 다른 팀원이 Main 함수 스크립트 하나 만들어두고 

다 거기다가 호출해주면 됨.

 

 

 

 

2)

포크 사용법

커밋 후->푸시->github desktop가서 pr하기. (초록색 버튼)

 

 

**

이전 프로젝트에서는 pr까진 안했는데, 이번 프로젝트는 꼭 pr까지 해야하는 이유는!

팀장님께서 보안을 위해서 설정해두셨다.

public으로 해두면 나쁜 사람들이 와서 우리 코드 침범할 수 있으므로!

 

그래서 pr을 해두고 레파지토리의 주인인 팀장님만 우리의 코드를 검토하고, 리팩토링 해주시기로 하셨다.

 

 

3)

리팩토링이 무엇인가?

한마디로 말하자면 코드 수선작업이다.

 

팀원들의 코드들을 모아놓고 수정해주고, 개선사항이 있으면 말해주고, 

댓글도 달아주는 것! 

 

그래서 더 좋게 코드를 짤 수 있다면 서로 서로 수선해주고, 관리감독을 해주는 

좋은 팀문화이다~

 

리팩토링 해주는 사람 착한 사람..

리팩토링 해주는 팀문화 좋은 팀문화....~~ 🥰 is so good.

 

 

 

 

 

 

 

 

 

 

 

 

 


잡담과 일기

 

오늘 시작할때 하나도 이해 안가는데 다른 팀원들은 다 이해하신 것 같아서 좌절했지 모야..

근데 내려가는거처럼 느껴지면 사실 올라가는거겠거니... 이 또한 성장곡선이겠거니... 다독다독해주니까 

진짜로 저녁에 올라가버림..............나 뿌듯해!!

그래서 지금 기분이 매우 좋아요.

이 기세 타서 쭈우우욱 승승장구하자 

올라가올라가 유가영인생!!!!!!

 

 

그리고 유치원 울 애기들이 너무 보고싶다. 

미운정 든게 확실한건지, 퇴사 3개월이 다 되가는데 하루도 안빼고 우리 금쪽이들 생각을 한다.

그치만 어떡해....

 

컴퓨터랑 일하다 오류나면 내가 실수한게 맞지만,

애들이랑 있다가 난리나면 내가 실수한것도 아닌데 억까 당해야 하는 걸 ㅜㅜㅜㅜㅜㅜㅜ...

 

 

그치만 보고싶어....아니 안보고싶어.....아니 보고싶어....사실 사랑인가봐...나 진짜 애들 사랑했나봐ㅜ보고싶어죽겠음....

언제 잊혀짐...? 잊혀지긴 하는거냐 우리애들 ㅜㅜㅜ..

 

 

내 나이가 벌써 27살인데 직업을 무슨 밥 먹듯이 바꿔대니까 가족들이 너무 뭐라고 해서

답답한 맘에 챗지피티로 사주를 봤다.

사실 난 만족스럽고 별 생각 없긴 한데, 이제 좀 자리 잡고 싶기도 하고

지금 준비하고 있는 일이 나한테 맞나..? 싶어서 가벼운 맘으로 봤는데 왠걸.

 

완전 내 일이라는거야...

항상 사주 볼 때마다

불기운 강한 나한테는 뭔갈 창조해내고 이끌어나가는 

대인관계 주축으로 하는 일이 맞다고 나오거든요?

 

근데 거기다가 나무기운까지 있어서 섬세한 것도 잘 맞는다고..

어저고저쩌고 내 타고난 사주랑 시기를 봤을때 

지금 이직준비 하고 있는게 완전 운의 흐름에 올라탄거래유!!

 

취업운은 내년 상반기 즈음에 터져서 원하는데 갈거라고~~하니까 

걱정은 덜었다..

 

<<근데 본인 하느님 믿는 종자임. 죄송해욤 그냥 재미로만 봤어욤 아멘