[Java]메소드를 활용한 야구게임
헤이베이지 HeyBeige
·2021. 1. 12. 12:51
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
|
import java.util.Scanner;
/*
* 어떤 기능(메소드)이 먼저 필요한지를 분석 한다음 필요한 기능에 따른 변수를
* 잡는 것이다.
*
* int[] com : 컴퓨터 난수
* int[] uesr : 사용자 입력값
* int s, int b;
*
* 1) 컴퓨터가 난수 발생 => int[] com
* 2) 사용자 입력 => int[] user
* 3) 비교 => int[] com , int[] user
* 4) 힌트 => s, b
* 5) 종료여부 => s
*
*/
public class 야구게임 {
// 변수
// 멤버변수는 자동 초기화가 됩니다,
int[] com = new int[3];
int[] user = new int[3];
int s, b; // 초기화 s=0, b=0
// 난수 발생 => int[] com
void random() {
int su = 0;
boolean bCheck = false; // 지역변수는 자동으로 초기화X 반드시 초기화시킨다.
// true :중복 , false : 중복이 안됨
// 중복된 수가 있으면 안된다.
// 난수 => 3번 발생
for (int i = 0; i < 3; i++) {
// 난수가 저장된 데이터가 중복이 있는지 확인
bCheck = true;
while (bCheck) {
// 난수를 발생 1~ 9사이의 정수 발생
su = (int) (Math.random() * 9) + 1; // 1~9
bCheck = false; // while 문 종료를 확인
// com에 저장된 데이터와 난수를 비교 => 중복이 있는 확인
for (int j = 0; j < i; j++) {
if (com[j] == su) {
// 중복이 있으면 => while 문을 다시 실행
bCheck = true;
break;
}
}
}
com[i] = su;
}
}
// 사용자 입력 => int[] user
void userInput() {
Scanner scan = new Scanner(System.in); // 키보드 입력값을 받아온다
// 자바 => 모든 메소드는 클래스에 존재
while (true) {
System.out.print("세자리 정수 입력: ");
int input = scan.nextInt();
// 오류처리
// 1. 세자리 정수가 아닌 경우 100 - 999
if (input < 100 || input > 999) {
System.out.println("세자리 정수만 사용 가능합니다.");
continue; // while => 처음으로 이동
}
user[0] = input / 100; // 789/100 = 7
user[1] = (input % 100) / 10; // 789 % 100 = 89 / 10 = 8
user[2] = input % 10; // 789%10 = 9
// 2. 정수가 중복된 수를 사용할 수 없다
if (user[0] == user[1] || user[1] == user[2] || user[2] == user[0]) {
System.out.println("중복된 수는 사용할 수 없습니다.");
continue;
}
// 3. 0은 사용할 수 없다.
if (user[0] == 0 || user[1] == 0 || user[2] == 0) {
System.out.println("0은 사용할 수 없는 숫자입니다.");
continue;
}
// while 종료
break;
}
}
// 비교 => int[] com , int[] user
void compare() {
s = 0;
b = 0;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
if (com[i] == user[j])// 같은 숫자이고
{
if (i == j) // 거기에 같은 자리수
{
s++;
} else {
b++;
}
}
}
}
}
// 힌트 => int[] user, s, b
void hint() {
System.out.printf("Input Number : %d%d%d , Result : %dS- %dB\n", user[0], user[1], user[2], s, b);
}
// 종료 => s(3)
boolean isEnd() {
if (s == 3)
return true;// 메소드는 return을 만나면 종료
return false;
}
void process() {
random();
while (true) {
// 사용자 정의 입력
userInput();
compare();
hint();
if (isEnd() == true) {
Scanner scan = new Scanner(System.in);
System.out.print("종료할까요?(y|n)");
char c = scan.next().charAt(0);
if (c == 'y' || c == 'Y') {
System.out.println("Game Over");
System.exit(0);
} else {
System.out.println("새 게임을 다시 시작합니다!");
process(); //재귀호출
}
}
}
}
//===================================================================================
public static void main(String[] args) {
야구게임 baseball = new 야구게임();
baseball.process();
}
}
|
cs |
아래 재사용 코드
1
2
3
4
5
6
7
8
9
10
11
|
public class Test {
public static void main(String[] args) {
야구게임 b= new 야구게임();
b.process();
//재사용
}
}
|
cs |
'개발 일지 > JAVA' 카테고리의 다른 글
[Java]추상클래스(abstract class)* (0) | 2021.01.19 |
---|---|
[Java] 오버로딩? 오버라이딩? 헷갈림 종결 끝판왕 (0) | 2021.01.15 |
[Java] 제어자(modifier) (0) | 2021.01.14 |
[Java] 변수와 메서드 (0) | 2021.01.11 |
[Java] 메소드(Method) (0) | 2021.01.07 |
[Algorithm] 선택정렬(Selection Sort) (2) | 2021.01.06 |