언어 자료구조 알고리즘/Escort C#

[C#] 7.4 프로젝트 구현 - Run(메뉴 및 사용자와 상호작용)

언제나휴일 2016. 5. 3. 13:34
반응형

7.4 프로젝트 구현

 

Run


 이제 CampusLife의 사용자 명령에 따라 동작하는 Run 메서드를 구현해 보기로 합시다. Run에서는 메뉴를 선택하면 해당 메뉴의 기능을 선택하는 것을 반복하면 되겠죠. 먼저, CampusLife에서 사용할 키에 대한 상수를 GameRule에 멤버로 추가할게요.

 

static class GameRule

{

    ... 중략 ...

    internal const ConsoleKey ExitKey = ConsoleKey.Escape;

    internal const ConsoleKey MoveStuKey = ConsoleKey.F1;

    internal const ConsoleKey MoveFocusKey = ConsoleKey.F2;

    internal const ConsoleKey ViewKey = ConsoleKey.F3;

}

 

 Run 메서드에서는 메뉴를 선택하고 해당 기능을 수행하는 것은 반복문을 사용하고 선택한 메뉴에 따라 해당 기능을 수행하는 것은 switch case 선택문이 필요하겠죠.

 

class CampusLife

{

    ... 중략 ...

    internal void Run()

    {

        ConsoleKey key;

        while ((key = SelectMenu()) != GameRule.ExitKey)

        {

            switch (key)

            {

                case GameRule.MoveStuKey: MoveStudent(); break;

                case GameRule.MoveFocusKey: MoveFocus(); break;

                case GameRule.ViewKey: View(); break;

                default: Console.WriteLine("잘못된 메뉴를 선택하였습니다."); break;

            }

            Console.WriteLine("아무키나 누르세요.");

            Console.ReadKey();

        }

    }

}

 그리고 SelectMenu, MoveStudent, MoveFocus, View 메서드를 추가하여 하나씩 구현해 봅시다. 이들 메서드는 CampusLife 클래스 내부에서 필요한 멤버이므로 private으로 접근 지정하면 되겠죠. 앞으로 새롭게 추가하는 것들은 특별한 사유가 없는 경우에 private로 지정할 것입니다.

 

 메뉴를 선택하는 SelectMenu 는 특이한 사항이 없으니 별다를 설명을 하지 않겠습니다.

 

class CampusLife

{

    ... 중략 ...

    private ConsoleKey SelectMenu()

    {

        Console.Clear();

        Console.WriteLine("캠퍼스 생활 메뉴");

        Console.WriteLine("{0} 학생 이동", GameRule.MoveStuKey);

        Console.WriteLine("{0} 포커스 이동", GameRule.MoveFocusKey);

        Console.WriteLine("{0} 전체보기 ", GameRule.ViewKey);

        Console.WriteLine("{0} 종료 ", GameRule.ExitKey);

        return Console.ReadKey().Key;

    }

}

 

너와 나의 연결고리 "공감"

반응형