본문 바로가기

프로그래밍 언어/C#

string[] 써 먹어보기

플레이어에게 4개의 스킬이 있고, 각각 쿨타임이 존재. 매 턴마다 쿨타임이 줄어드는 기능 제작

엔터 한번 입력 받을때마다 혹은 특정 키 한번 입력 할때마다 한 턴이 흐름

  1. 길이가 4인 int 배열 skillCooldowns를 만들기
  2. 초기값은 [5, 3, 10, 7]
  3. 매 턴마다 배열의 모든 값을 1씩 줄임
  4. 쿨타임이 0 이하가 되면 "스킬 X 사용 가능!"을 출력하고, 값을 그대로 0으로 유지
  5. 매 턴마다 배열의 상태를 출력
            string[] skills = { "꿰뚫는 빛(Piercing Light)",
                              "타는 불길(Ardent Blaze)",
                              "끈질긴 추격(Relentless Pursuit)",
                              "빛의 심판(The Culling)"
                                };

            int[] skillCooldowns = { 5, 3, 10, 7 };
            bool[] cooldowns = { false, false, false, false };


            while (true)
            {

               


                //foreach (var skill in skills)
                //{
                //    Console.Write(skill);
                //    Console.Write("\t");
                //}

                Console.WriteLine();

                //스킬 쿨 되면 됬다고 표시
                for (int i = 0; i < skillCooldowns.Length; i++)
                {
                    if (skillCooldowns[i] > 0)
                    {
                        skillCooldowns[i] -= 1;//1씩줄임
                    }

                    if (skillCooldowns[i] == 0)
                    {
                        cooldowns[i] = true;
                    }
                }

                for (int i = 0; i < skills.Length; i++)
                {
                    if (cooldowns[i] == true)
                    {
                        Console.WriteLine();
                        Console.WriteLine($"{skills[i]} 사용 가능!\t");

                    }
                    else
                    {
                        Console.WriteLine();
                        Console.WriteLine($"{skills[i]} 사용 불가!\t");
                    }
                    Console.WriteLine($"{skillCooldowns[i]} 턴 남음!\t");

                }

                Console.ReadLine();
                Console.Clear();

            }

 

 

 

 

 

 

 

나름 볼만하게 들여쓰기와 줄바꾸기 기능을 열심히 썻다.

 

스킬 이름들은 리그 오브 레전드의 루시안 스킬 이름들이다 ㅎㅎ 그냥 그런갑다 하고 넘어가 주시길.

 

우선 이 코드의 주제는 

 

어떤 캐릭터가 4개의 스킬을 가지고 있는데, 스킬 마다 쿨타임이 다르고 그 쿨타임별로 사용가능하게 설정 하는 코드이다.

 

즉 드디어 게임코딩같은 느낌의 코드가 첫발을 내딛은 기분이다.

 

skills 배열은 스킬명 

skillCooldowns 배열은 스킬 쿨타임

cooldowns 배열은 스킬이 현재 사용가능한가

 

이렇게 세개의 배열로 나누었고, 각 인덱스가 같은걸 공유

즉, 0번스킬 의 쿨타임이 0번 쿨이고, 0번 상태라는 걸로 정해놓고 시작했다.

 

프로그램을 언제 끝내란 소린없어서 그냥 while(true)로 고정해서 사용했다.

 

이렇게 되면 보통 무한 루프에 걸리지만 

                Console.ReadLine(); 을 입력해서 입력하는 동안에는 멈추므로 우리눈에는 멀쩡해 보일것이다.

뭐 강제로 끄게만든 프로그램이니 다음부턴 지문에 없어도 한번 만들어는 놔야겠다.

 

어차피 while 문이라 break 하나만 추가해서 if 조건을 걸면 되니깐 말이다.

 

턴 넘기는건 어차피 어떤걸 입력받아도 사용하는 코딩은 아니므로 관상용! 즉 아무런키나 눌러도 되길래 그냥...

 

받아도 평소대로 돌아가게 만들었다.

 

오늘은 배열이 추가되서 말이 많아졌는데, 아무튼 게임다워서 꽤나 재밌었다. ㅎㅎ