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]가 하나의 글자이고, 문자열이 아니기 때문이다.
'C# 언어' 카테고리의 다른 글
| C#, List를 사용하여 문자열 정력하기(중복테이타 제외) (1) | 2021.09.10 |
|---|---|
| C# 에서 3자리 숫자 입력 받기 (0) | 2021.08.20 |
| 클립보드 내용을 파일로 만들기 (0) | 2021.06.27 |
| C#으로 달력 만들기 (0) | 2021.05.15 |
| C# 에서 left, right, mid 함수 사용방법 (0) | 2021.01.21 |
댓글