본문 바로가기

개발자_뉴비일지

내일배움캠프 Unity 10일차 TIL - 왜 안되지?

string keyword="왜 안되지?";

텍스트게임 제출이 오늘 오후 6시까지이기 때문에 게임 만들기에 박차를 가하기로 한다.

어제 intro화면 정도만 만들어 놨기에 갈길이 멀다.....

 

1. 반복문의 저주

 

1,2,3번이 인트로 메뉴이고 들어가 보면 0번으로 다시 나가야하는 기능이 있다.

1번 상태보기 메뉴로 들어갔을 경우,

0번을 누르면 메인으로 나갈수 있도록 함수를 만들었다.

 

static void outText()  
{
    int outNum;

    Console.WriteLine("0. 나가기");
    Console.WriteLine("원하시는 행동을 입력해 주세요.");
    Console.Write(">> ");
    outNum = int.Parse(Console.ReadLine());

    while (outNum != 0)
    {
        Console.WriteLine("잘못된 입력입니다. 다시 입력해 주세요.");
        Console.Write(">>");
        outNum=int.Parse( Console.ReadLine());
        
    }   
}

while을 통해 다른걸 입력하면 다시 입력해 달라는 창이 뜨고,

0일 경우에만 인트로화면으로 넘어가야 하는데 안넘어가서 오전 내내 고민ㅠㅠ

왜 말을 안듣냐고................ outNum != 0 인데!!

 

이유는 바로 break를 걸어주지 않아서 였다!

while문 안에 간단한 if문을 추가하는 것으로 문제해결을 했다.

if(outNum == 0)
        {
            break;
        }

 

이런 간단한 문제였는데 역시 아직 기본기가 많이 부족하다.

 

2. 캐릭터 상태보기

 

상태를 보면 속성이 굉장히 많아서 따로 구조체를 지정해 줬다.

 

struct Player
{
    public int level;
    public string Name;
    public int attackStat;
    public int defenseStat;
    public int hp;
    public int gold;

    public void PrintInfo()
    {
        Console.WriteLine($" LV. {level}\n {Name+"  ( 전사 )"}\n 공격력 : {attackStat}\n 방어력 : {defenseStat}\n 체력   : {hp}\n Gold   : {gold} G ");
    }
}

 

그 다음 states라는 메소드를 만들어 두고 각각 속성에 값을 입력.

static void states()
{
    Player player1;
    player1.level = 01;
    player1.Name = "Chad";
    player1.attackStat = 10;
    player1.defenseStat = 5;
    player1.hp = 100;
    player1.gold=1500;

    player1.PrintInfo();
}

 

그리고 메인함수에서 states를 발동시키면 상태가 뜨게 했는데

왠지 엄청 비효율적으로 만들어 놓은 것 같지만 지금 내 머리 상태로는 여기까지가 한계다.

 

3. 인벤토리

 

인벤토리에서 장착도 해야하고 아이템 목록도 보여줘야 해서 class로 만들어 줬다.

만들어진 애들을 메인에서 불러와 아이템 하나를 만들어 보면,

 

Inventory item1 = new Inventory();

item1.ItemName = "무쇠갑옷";
item1.ItemType = "방어력";
item1.ItemStat = 5; ;
item1.ItemDescription = "무쇠로 만들어져 튼튼한 갑옷입니다.";
Console.Write("  -  "+item1.ItemName);
Console.Write(" | "+item1.ItemType);
Console.Write("  +  "+item1.ItemStat.ToString());
Console.Write("  |  "+item1.ItemDescription);

 

이렇게 아이템 하나를 띄울 수 있었는데 아이템이 세개라 이 짓을 세번을 했다.

이게 맞아...?

한참 이상하다는 생각이 들었다.

직접 타이핑하는 것만 못하다는 생각이 들었지만 쟤네를 어떻게 한묶음으로 묶어야 할지 모르겠다.

겉으로 보기엔 일단 아이템 목록이 보인다.

결국 이렇게 아이템 목록만 구현하고 내 개인과제는 끝이 났다.

 

마무리

아이템 장착관리도 구현해야 하고,  상점도 구현해야 하고, 아이템 구매나 판매도 할 수 있게 해야하지만

코딩의 ㅋ도 아직 모르는 햇병아리인 나에게는 너무나 크나큰 산이었다.

저렇게 비효율적인 코드 작성하는 것도 하루종일 머리를 싸맸으니..ㅠㅠ

 

그나마 위안이라면 고민하고, 코드짜보고, 수정해보는 동안 미세먼지 만큼은 실력이 향상된 것 같다.

언젠가 나도 진짜 개발자가 되어서 이 글을 다시 본다면, 정말 많이 허접해서 웃길 것 같다.

하지만 과거의 나에겐 이게 최선이라는 걸 미래의 내가 이해해 줬으면 좋겠다.

 

.

.

.

with 용이