본문 바로가기
C# 언어

C#으로 만든 숫자 야구 게임

by treeCoder 2021. 8. 12.

C#으로 만든 숫자 야구 게임이다.

using System;

class Program {
    
    private static void Main() {
        
        int[] num = new int[3];
        int[] set = new int[3];
        
        int cnt = 0;
        int s = 0;
        int b = 0;
        
        for (int i = 0 ; i < 3 ; i++) {
            for(bool duplicated = true; duplicated;  ) { 
                Random rand = new Random();
                set[i] = rand.Next(1, 9);
                
                duplicated = false;
                for (int j = 0; j < i; j++) {
                    if (set[i] == set[j]) {
                        duplicated = true;
                        break;
                    }
                }
            }
        }
        
        while (s != 3) {
            string st;
            
            Console.Write("3자리 숫자를 입력하세요 (1 ~ 9). > ");
            st = Console.ReadLine();
            
            if (st.Length != 3) {
                Console.WriteLine("숫자를 입력해야 합니다.");
                continue;
            }
            
            int flag = 0;
            for (int i = 0; i < st.Length ; i++) {
                if (st[i] < '1' || st[i] > '9') {
                    Console.WriteLine("1 ~ 9 사이의 숫자를 입력해야 합니다.");
                    flag = 1;
                    break;
                }
            }
            
            if (flag == 1) {
                continue;
            }
            
            num[0] = st[0] - '0'; 
            num[1] = st[1] - '0'; 
            num[2] = st[2] - '0'; 
            
            if (num[0] == 9 && num[1] == 9 && num[2] == 9) {
                for (int i = 0 ; i < 3; i++) {
                    Console.Write("{0:D}", set[i]);
                }
                Console.Write(" <-- Hint \n");
                continue;
            }
            
            if (num[0] == num[1] || num[1] == num[2] || num[2] == num[0]) {
                Console.WriteLine("서로 다른 3자리 숫자를 입력해야 합니다 (1 ~ 9).");
                continue;
            }
            
            s = 0;
            b = 0;
            for (int i = 0; i < 3; i++) {
                for (int j = 0; j < 3; j++) {
                    if (set[i] == num[j]) {
                        if (i == j) {
                            s++;
                        } else {
                            b++;
                        } //if	
                    } //if	
                } // for	
            } //for
            
            Console.Write("\t결과: {0:D} Strike {1:D} Ball \n", s, b);
            cnt++;
        } // while
        
        Console.Write("\n{0:D} 번 만에 해냈습니다.\n", cnt);
    }
}

 

Convert.ToInt32(st[0]) 는   숫자로 변환되지 않는 것 같다. st[0]가 하나의 글자이고, 문자열이 아니기 때문이다.

댓글