본문 바로가기

C#/수업 내용

ReadKey()와 ConsoleKeyInfo 그리고 if문

1.목표 - 엔터 필요없이 하나의 키로만 입력 받아

            각각 다른 문구 출력하기 (숫자)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HelloWorld
{
    class Program
    {   
        static void Main(string[] args)
        {
            Console.WriteLine("1. 공격 2. 스킬 3. 도망");
            ConsoleKey input = Console.ReadKey().Key;
            Console.WriteLine();
            char keyChar = (char)input;

            if (keyChar == '1')
            {
                Console.WriteLine("1을 입력하셨습니다.");
            }
            else if (keyChar == '2')
            {
                Console.WriteLine("2를 입력하셨씁니다.");
            }
            else if (keyChar == '3')
            {
                Console.WriteLine("3을 입력하셨습니다.");
            }
            else
            {
                Console.WriteLine("1부터 3까지의 숫자를 입력해주세요.");
            }
        }
    }
}

 

 

ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ

 

2. 목표 - 엔터 필요없이 하나의 키로만 입력받아

             각각 다른 문구 출력하기 (알파벳, 대소문자 구분없이)

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace HelloWorld
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("M: 마린 생산 B: 파벳 생산 G: 고스트 생산");
            Console.Write("단축키를 입력하세요(대소문자 상관없음) : ");
            ConsoleKeyInfo input = Console.ReadKey();
            ConsoleKey info = input.Key;    //ConsoleKey 형식의 값은 대문자 값이다.
            char bigKey = (char)info;
            char smallKey = input.KeyChar;  //KeyChar 값은 소문자값
            string unit;
            Console.WriteLine();
            for (int i = 0; i < 3; i++)
            {
                Console.WriteLine("...");
            }

            if (smallKey == 'm' || bigKey == 'M')
            {
                unit = "마린";
                Console.WriteLine("{0}이 생산되었습니다.", unit);
            }
            else if (smallKey == 'b' || bigKey == 'B')
            {
                unit = "파벳";
                Console.WriteLine("{0}이 생산되었습니다.", unit);
            }
            else if (smallKey == 'g' || bigKey == 'G')
            {
                unit = "고스트";
                Console.WriteLine("{0}이 생산되었습니다.", unit);
            }
            else
            {
                Console.WriteLine("{0}는 없는 단축키 입니다.", smallKey);
            }
        }
    }
}

입력받은키가 대문자든 소문자든 상관없이 처리를 해야되는점에서 헤맸다.

*알게된점*

ConsoleKeyInfo 형식의 (변수).KeyChar 값은 소문자값이다.

문자(char) 형식으로 변환한 ConsoleKeyInfo형식의 (변수).Key값은 대문자 값이다.

ReadKey()로 입력을 받을때 CAPS LOCK키와 SHIFT키는 입력을 못받는다?

 

+ConsoleKeyInfo 형식의 (변수).Key 값을 ConsoleKey형식의 변수값에 할당하는것은 생략가능.

 (ConsoleKey 형식의 변수 선언 생략가능)

 

.. 괜한(알게된)점이 늘은거같다...