File tree 6 files changed +35
-9
lines changed
6 files changed +35
-9
lines changed Original file line number Diff line number Diff line change @@ -4,13 +4,19 @@ import ComputerNumberGenerator from './model/ComputerNumberGenerator.mjs';
4
4
class App {
5
5
#gameController;
6
6
7
- constructor ( ) {
8
- this . #gameController = new GameController ( new ComputerNumberGenerator ( ) ) ;
7
+ constructor ( gameController ) {
8
+ this . #gameController = gameController ;
9
9
}
10
10
11
11
async play ( ) {
12
12
await this . #gameController. startGame ( ) ;
13
13
}
14
14
}
15
15
16
+ const computerNumberGenerator = new ComputerNumberGenerator ( ) ;
17
+ const gameController = new GameController ( computerNumberGenerator ) ;
18
+ const app = new App ( gameController ) ;
19
+
20
+ app . play ( ) ;
21
+
16
22
export default App ;
Original file line number Diff line number Diff line change @@ -5,4 +5,9 @@ const GAME_CONDITION = Object.freeze({
5
5
endNumber : 9 ,
6
6
} ) ;
7
7
8
- export default GAME_CONDITION ;
8
+ const USER_COMMAND = Object . freeze ( {
9
+ replay : 1 ,
10
+ end : 2 ,
11
+ } ) ;
12
+
13
+ export { USER_COMMAND , GAME_CONDITION } ;
Original file line number Diff line number Diff line change 1
- import GAME_CONDITION from './conditions.mjs' ;
1
+ import { USER_COMMAND , GAME_CONDITION } from './conditions.mjs' ;
2
2
3
3
const MESSAGES = Object . freeze ( {
4
4
startGuide : `숫자 야구 게임을 시작합니다.` ,
5
5
inputGuide : `숫자를 입력해주세요 : ` ,
6
6
endGuide : `${ GAME_CONDITION . maxLength } 개의 숫자를 모두 맞히셨습니다! 게임종료` ,
7
+ replayGuide : `게임을 새로 시작하려면 ${ USER_COMMAND . replay } , 종료하려면 ${ USER_COMMAND . end } 를 입력하세요.\n` ,
7
8
} ) ;
8
9
9
10
const PROGRESS = Object . freeze ( {
Original file line number Diff line number Diff line change @@ -2,6 +2,7 @@ import OutPutView from '../view/OutputView.mjs';
2
2
import { MESSAGES } from '../constant/messages.mjs' ;
3
3
import InputView from '../view/InputView.mjs' ;
4
4
import GameAnalyzer from '../model/GameAnalyzer.mjs' ;
5
+ import { USER_COMMAND } from '../constant/conditions.mjs' ;
5
6
6
7
class GameController {
7
8
#computer;
@@ -29,6 +30,14 @@ class GameController {
29
30
30
31
async finishGame ( ) {
31
32
OutPutView . printStaticMessage ( MESSAGES . endGuide ) ;
33
+
34
+ const userCommand = await InputView . getUserCommand ( MESSAGES . replayGuide ) ;
35
+
36
+ if ( userCommand === USER_COMMAND . replay ) {
37
+ this . #computer. initComputerNumber ( ) ;
38
+ return this . startGame ( ) ;
39
+ }
40
+ return null ;
32
41
}
33
42
}
34
43
Original file line number Diff line number Diff line change 1
1
import { Random } from '@woowacourse/mission-utils' ;
2
- import GAME_CONDITION from '../constant/conditions.mjs' ;
2
+ import { GAME_CONDITION } from '../constant/conditions.mjs' ;
3
3
4
4
class ComputerNumberGenerator {
5
5
#computerNumber;
6
6
7
7
constructor ( ) {
8
- this . #computerNumber = this . generateNumber ( ) ;
8
+ this . #computerNumber = this . generateRandomNumbers ( ) ;
9
9
}
10
10
11
11
/**
12
12
* 컴퓨터는 중복되지 않는 랜덤 세자리의 숫자를 생성한다.
13
13
* @returns {number } 중복되지 않는 세자리의 숫자
14
14
*/
15
- generateNumber ( ) {
15
+ generateRandomNumbers ( ) {
16
16
const digitalArray = new Set ( ) ;
17
17
18
18
while ( digitalArray . size < GAME_CONDITION . maxLength ) {
@@ -31,7 +31,7 @@ class ComputerNumberGenerator {
31
31
}
32
32
33
33
initComputerNumber ( ) {
34
- this . #computerNumber = this . generateNumber ( ) ;
34
+ this . #computerNumber = this . generateRandomNumbers ( ) ;
35
35
}
36
36
}
37
37
Original file line number Diff line number Diff line change @@ -6,7 +6,12 @@ const InputView = {
6
6
7
7
return parseInt ( userNumber , 10 ) ;
8
8
} ,
9
+
10
+ async getUserCommand ( message ) {
11
+ const userCommand = await Console . readLineAsync ( message ) ;
12
+
13
+ return parseInt ( userCommand , 10 ) ;
14
+ } ,
9
15
} ;
10
16
11
17
export default InputView ;
12
-
You can’t perform that action at this time.
0 commit comments