상세 컨텐츠

본문 제목

1002 TIL - 프로젝트 5일차

스파르타 코딩캠프/'24 Today I Learned

by lucar 2024. 10. 2. 21:01

본문

게임에 복권 기능을 추가했다.

5000원으로 구매하거나 필드에 출몰하는 몬스터를 잡을때마다 하나씩 확정 드롭된다.

 

아이템 목록 csv파일에 추가해준 후 

몬스터 클래스에 사망 시 플레이어에게 복권 하나 추가를 작성해줬다.

 

TextHelper.BtHeader("복권 긁기");
TextHelper.ItContent($"현재 보유 중인 복권 수량 {item?.Count}"); //복권 갯수
if (UIManager.Instance.Confirm("복권을 긁습니다."))
{
    if (item?.Count > 0)
    {
        TextHelper.SlowPrint("복권을 긁고 있습니다.");
        //복권 갯수 삭감
        GameManager.Instance.RemoveItem(item);
        //복권 결과 출력 함수
        GameManager.Instance.AddGold(LotteryReward());
        GameManager.Instance.ScratchLottery(); //복권 긁은 횟수 추가
        Thread.Sleep(1000);
    }
    else
    {
        TextHelper.DtContent("가지고 있는 복권이 없습니다.");
        Thread.Sleep(1000);
    }
}

복권을 긁는 함수를 추가해준후 마을의 이벤트란에서 실행 가능하게끔 코딩해주었다.

 

복권의 확률은

1등은 0.1프로 2등은 0.4프로 3등은 2프로 4등은 7.5프로 5등은 20프로

그 외에는 전부 꽝이다.

 

1등 당첨 시 추가적인 연출을 만들어주고

 

다른 팀원 분들이 작성하신 코드와 비교해서 변수나 메소드 이름을 적절하게 조율한 뒤

실행을 통해 에러가 발생하는지 재차 확인해주자.

 

혹시 모르니 폭죽 터지는 연출은

int x = Console.WindowWidth / 2;
int y = Console.WindowHeight / 2;

for (int i = 0; i < y; i++)
{
    int j = i - 1;
    Console.SetCursorPosition(x, Console.WindowHeight - i);
    Console.Write('@');
    Thread.Sleep(50);
    Console.SetCursorPosition(x, Console.WindowHeight - i);
    Console.Write(' ');
}
for (int i = 0, j = 0; i < x; i++)
{
    float k = MathF.Sqrt(i);
    float xD = MathF.Sin((MathF.PI) * i / 4) * k * 4;
    float yD = MathF.Cos(-(MathF.PI) * i / 4) * k * 2;
    Console.SetCursorPosition(x + (int)xD, y + (int)yD);
    Console.Write('*');
        if (i % 4 == 0)
    {
        j++;
        switch (j)
        {
            case 0:
                {
                    Console.Clear();
                    Console.BackgroundColor = (ConsoleColor)15;
                    break;
                }
            case 1:
                {
                    Console.Clear();
                    Console.BackgroundColor = (ConsoleColor)9;
                    break;
                }
            case 2:
                {
                    Console.Clear();
                    Console.BackgroundColor = (ConsoleColor)3;
                    break;
                }
            case 3:
                {
                    Console.Clear();
                    Console.BackgroundColor = (ConsoleColor)11;
                    break;
                }
            case 4:
                {
                    Console.Clear();
                    Console.BackgroundColor = (ConsoleColor)1;
                    break;
                }
            case 5:
                {
                    Console.Clear();
                    Console.BackgroundColor = (ConsoleColor)0;
                    Console.Clear();
                    break;
                }
        }
        Thread.Sleep(50);
    }
}

이런 스크립트로 작성했다.

 

예상대로 ConsoleColor가 enum타입이라 숫자로 접근이 가능했다.

 

이제 프로젝트는 완성을 코 앞에 두고있기에 PPT와 발표준비가 한창이다.

 

그럼 이쯤에서 TIL을 마무리하도록 하겠다.

 

TTE

관련글 더보기