Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[1단계 - 블랙잭 게임 실행] 히이로(문제웅) 미션 제출합니다. #447

Merged
merged 85 commits into from
Mar 10, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
85 commits
Select commit Hold shift + click to select a range
1f36604
docs: 초기 기능목록 작성
yujamint Feb 28, 2023
48dc730
test: 블랙잭 게임 카드 생성 시 숫자 범위 검증 테스트 작성
yujamint Feb 28, 2023
0828762
feat: 숫자 Enum 생성 기능 구현
yujamint Feb 28, 2023
bfeb070
feat: 문양 Enum 생성 기능 구현
yujamint Feb 28, 2023
856ecd7
test: 블랙잭 게임 카드 생성 테스트 작성
yujamint Feb 28, 2023
4d6b5e4
feat: 문양 별 카드 Enum 생성 기능 구현
yujamint Feb 28, 2023
13e5f6a
feat: Card 인터페이스 생성 및 구현
yujamint Feb 28, 2023
f332d63
test: Card 인터페이스 생성 및 구현에 따른 테스트 코드 수정
yujamint Feb 28, 2023
cc44eba
test: 블랙잭 게임 전체 카드 생성 테스트 작성
yujamint Feb 28, 2023
dec478d
feat: 블랙잭 게임 전체 카드 생성 기능 구현
yujamint Feb 28, 2023
e862067
test: 블랙잭 게임 카드 뽑기 기능 테스트 작성
yujamint Feb 28, 2023
61ba09b
feat: 블랙잭 게임 카드 뽑기 기능 구현
yujamint Feb 28, 2023
bd51b99
feat: 블랙잭 게임 카드 생성 후 섞기(셔플) 기능 구현
yujamint Mar 2, 2023
8cfb433
refactor: 블랙잭 게임 에이스 기본 숫자값 변경
yujamint Mar 2, 2023
9b30aa9
test: 보유하고 있는 카드에 따른 점수 계산 기능 테스트 작성
yujamint Mar 2, 2023
60bd792
feat: 보유하고 있는 카드에 따른 점수 계산 기능 구현
yujamint Mar 2, 2023
13fdbbc
feat: 카드 getter 추가
yujamint Mar 2, 2023
8a551f3
test: 점수 계산 기능 매개변수 수정
yujamint Mar 2, 2023
f4315ad
feat: 점수 계산 기능 매개변수 수정
yujamint Mar 2, 2023
7521926
test: 게임 시작 직후 카드 두 장씩 분배하는 기능 테스트 작성
yujamint Mar 2, 2023
ed8c5e8
feat: 게임 시작 직후 카드 두 장씩 분배하는 기능 구현
yujamint Mar 2, 2023
b1bc0e4
test: Player 초기 세팅 테스트 작성
yujamint Mar 2, 2023
7cfb845
feat: User 추상 클래스 정의
yujamint Mar 2, 2023
034b4ef
feat: Player 객체 생성 기능 구현
yujamint Mar 2, 2023
fa64bec
feat: User 카드 정보 반환 기능 구현
yujamint Mar 2, 2023
821a5fe
style: 패키지 명 수정
yujamint Mar 2, 2023
88ff32a
test: 플레이어가 카드 한 장을 받아 패에 넣는 기능 테스트 작성
yujamint Mar 2, 2023
acd1057
feat: 플레이어가 카드 한 장을 받아 패에 넣는 기능 구현
yujamint Mar 2, 2023
1ee0180
test: 플레이어의 버스트 판단 기능 테스트 작성
yujamint Mar 2, 2023
3250caf
feat: 플레이어의 버스트 판단 기능 구현
yujamint Mar 2, 2023
14b8da9
test: DisplayName prefix 추가
yujamint Mar 2, 2023
3decc24
test: DisplayName prefix 추가
yujamint Mar 2, 2023
7650627
refactor: User 상태 값에 Score 추가
yujamint Mar 2, 2023
4191591
refactor: UserStatus 인터페이스 구현
yujamint Mar 2, 2023
d4c2c6e
test: Dealer 점수에 따른 상태 조회 기능 테스트 작성
yujamint Mar 2, 2023
32b845d
refactor: User 상태값 조회 기능 구현
yujamint Mar 2, 2023
c3bb126
feat: Dealer 점수에 따른 상태 조회 기능 구현
yujamint Mar 2, 2023
07b1fba
test: User 상태값 조회 기능 구현에 따른 테스트 수정
yujamint Mar 2, 2023
5ccc57d
refactor: Player 상태값 조회 기능 구현
yujamint Mar 2, 2023
8e07811
feat: 플레이어 이름 값 포장 클래스 구현
yujamint Mar 3, 2023
1f9d910
feat: 플레이어 이름 값 포장 클래스 구현에 따른 상태값 추가
yujamint Mar 3, 2023
cf06d44
feat: 드로우 명령 enum 구현
yujamint Mar 3, 2023
b5b15bf
feat: 블랙잭 게임 Input View 구현
yujamint Mar 3, 2023
f1b68f6
feat: 플레이어 이름 입력 메세지 출력 기능 구현
yujamint Mar 3, 2023
423459c
feat: 블랙잭 게임 클래스 구현
yujamint Mar 3, 2023
5b38107
feat: 컨트롤러에 블랙잭 게임 초기 세팅 기능 구현
yujamint Mar 3, 2023
ccd75ae
refactor: 불필요한 메서드 삭제
yujamint Mar 3, 2023
a79a7ca
refactor: Card 클래스 내 기능 변경
yujamint Mar 3, 2023
23bc488
feat: 블랙잭 게임 초기세팅 결과 출력 기능 구현
yujamint Mar 3, 2023
b866bdc
feat: 승패 처리 메서드 구현
yujamint Mar 3, 2023
4b6a1af
feat: 블랙잭 게임 클래스 구현
yujamint Mar 3, 2023
6b7f5e0
feat: 블랙잭 게임 컨트롤러 구현
yujamint Mar 3, 2023
4825ece
feat: 블랙잭 게임 OutputView 구현
yujamint Mar 3, 2023
6c768f3
feat: 블랙잭 게임 Application 구현
yujamint Mar 3, 2023
a06c1dd
style: 코드 스타일 개선
yujamint Mar 3, 2023
bbcb313
style: 코드 스타일 개선
yujamint Mar 3, 2023
6921d8d
docs: 기능 목록 완료 처리
yujamint Mar 3, 2023
b23e3b9
test: user들의 상태 값을 객체 내부에서 비교할 수 있도록 테스트 코드 수정
MoonJeWoong Mar 6, 2023
8c5ad9e
refactor: user들의 상태 값을 객체 내부에서 비교할 수 있도록 수정
MoonJeWoong Mar 6, 2023
b525b15
style: 불필요한 코드 주석 및 스타일 개선
MoonJeWoong Mar 6, 2023
deb265a
test: 사용자 입력값에 따른 DrawCommand 반환 테스트 코드 작성
MoonJeWoong Mar 6, 2023
378f5ee
feat: 사용자 입력값에 따른 DrawCommand 반환 기능 수정
MoonJeWoong Mar 6, 2023
584541b
refactor: Card 객체 내 뽑을 카드가 없을시 발생 예외 종류 수정
MoonJeWoong Mar 6, 2023
282d7dc
refactor: Exception 객체 에러메세지 헤더 추가
MoonJeWoong Mar 6, 2023
781171f
test: 발생 exception 종류 변경으로 인한 테스트 코드 수정
MoonJeWoong Mar 6, 2023
c1fad5b
test: GameResult 객체 생성 테스트 작성
MoonJeWoong Mar 7, 2023
462f0a0
feat: GameResult 객체 생성 기능 구현
MoonJeWoong Mar 7, 2023
c27a0b0
test: 기존 cards 클래스를 GameDeck 클래스로 리팩토링한 이후 테스트 작성
MoonJeWoong Mar 7, 2023
3dd908c
refactor: 기존 cards 클래스를 GameDeck 클래스로 변경
MoonJeWoong Mar 7, 2023
3a72ffb
feat: 전략패턴을 위한 DeckGenerator 구현
MoonJeWoong Mar 7, 2023
ff22bf8
refactor: Cards에서 GameDeck 클래스로 리팩토링으로 인한 코드 수정
MoonJeWoong Mar 7, 2023
7e00ba1
test: GameResult user 결과 계산 기능 테스트 작성
MoonJeWoong Mar 7, 2023
611a864
feat: GameResult user 결과 계산 기능 구현
MoonJeWoong Mar 7, 2023
c6d351b
refactor: 기존 결과 계산 기능 GameResult 객체를 사용하도록 수정
MoonJeWoong Mar 7, 2023
87a33e8
refactor: GameResult 구현으로 인한 User 클래스 상태 값 제거
MoonJeWoong Mar 7, 2023
e30f15a
test: 이름 값이 하나만 입력될 수 있는 기능 테스트 코드 추가
MoonJeWoong Mar 7, 2023
ccbab7a
feat: 이름 값이 하나만 입력될 수 있는 기능 추가
MoonJeWoong Mar 7, 2023
63d9c61
feat: Name 객체 간 같은 이름은 동일한 사람으로 취급하도록 기능 추가
MoonJeWoong Mar 7, 2023
a8ab2ec
test: 입력된 이름 값이 중복될 시 예외처리 기능 테스트 추가
MoonJeWoong Mar 7, 2023
053c264
feat: 입력된 이름 값이 중복될 시 예외처리 기능 구현
MoonJeWoong Mar 7, 2023
71bb845
feat: controller에서 Names를 통해 플레이어 이름 값을 입력받도록 구현
MoonJeWoong Mar 7, 2023
e48d756
test: 입력된 이름 값이 5개를 초과할 경우 예외처리 기능 테스트 작성
MoonJeWoong Mar 7, 2023
f5a0f31
refactor: 입력된 이름 값이 5개를 초과할 경우 예외처리 기능 구현
MoonJeWoong Mar 7, 2023
37864cf
refactor: player 객체 간 동일성 비교를 위한 equals & hashCode 삭제
MoonJeWoong Mar 7, 2023
9aea859
refactor: 예외처리 에러 메세지 헤더 통일
MoonJeWoong Mar 7, 2023
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
65 changes: 65 additions & 0 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,68 @@
## 우아한테크코스 코드리뷰

- [온라인 코드 리뷰 과정](https://github.com/woowacourse/woowacourse-docs/blob/master/maincourse/README.md)

## Controller
- [x] 게임에 참여할 플레이어의 이름을 입력받는다.
- [x] 딜러와 플레이어들에게 카드를 두 장씩 랜덤하게 나눠준다.
- [x] 딜러와 플레이어들이 받은 카드를 출력한다.
- [x] 딜러는 한장의 카드만 공개한다.
- [x] 플레이어 별로 카드를 더 받을지 물어본다.
- [x] 플레이어는 카드를 한 장 뽑고 가진 카드 현황을 출력한다.
- [x] 플레이어가 가진 카드 숫자의 총합이 21을 초과하면 그만 받도록 한다.
- [x] 플레이어가 가진 카드 숫자의 총합이 21 이하라면 플레이어의 선택에 따라 카드를 계속 받을 수 있다.
- [x] 딜러는 자신의 숫자 카드 합이 17 이상이 되도록 카드를 더 뽑는다.
- [x] 딜러와 플레이어의 카드 합 결과를 계산한다.
- [x] 딜러와 플레이어 최종 카드 현황과 각 합을 출력한다.
- [x] 게임결과를 출력하고 게임을 종료한다.
- [x] 딜러는 총 몇 승 몇 패를 했는지 출력한다.
- [x] 플레이어는 각자의 승패 결과를 출력한다.

## Model
- [x] 블랙잭 전체 카드 생성
- [x] 전체 카드 개수는 52장
- [x] 문양은 하트, 다이아, 클로버, 스페이드
- [x] 각 문양 별 Ace, 2~10, K,Q,J 로 구성
- [x] Ace는 1 또는 11로 계산할 수 있다.
- [x] K,Q,J는 각각 10으로 계산한다.
- [x] 52장 카드는 중복되지 않는다.
- [x] 블랙잭 카드 드로우
- [x] 모든 카드는 랜덤하게 셔플된다.
- [x] 드로우는 셔플된 카드에서 순서대로 가져간다.
- [x] 블랙잭 카드 현황 저장한다.
- [x] 전체 카드에서 남은 카드 현황
- [x] 드로우된 카드는 제외한다.
- [x] 딜러 카드 현황
- [x] 플레이어 카드 현황
- [x] 블랙잭 게임 진행
- [x] 게임의 플레이어 수는 딜러 제외 5명으로 제한한다.
- [x] 플레이어와 딜러는 게임을 시작하며 카드를 2장씩 드로우한다.
- [x] 딜러는 처음에 뽑은 카드 1장만 공개하고, 남은 카드는 최종 결과 확인 전까지 비공개한다.
- [x] 보유한 카드의 숫자 합산
- [x] 보유한 카드의 숫자 합산 유효성 확인
- [x] 합산 결과가 21을 초과하면 더 이상 카드를 뽑지 않는다.
- [x] 딜러와 플레이어 간 승패 결정
- [x] 딜러와 플레이어의 카드 숫자 합산 비교
- [x] 딜러와 플레이어 둘 다 버스트일 시 딜러 승
- [x] 딜러와 플레이어 결과가 무승부일 때 딜러 승

## View
### InputView
- [x] 플레이어 이름 입력
- [x] [예외처리] 쉼표 기준으로 분리하다(pobi,jason)
- [x] 카드 추가로 받을지 말지 여부 입력
- [x] [예외처리] 'y' 또는 'n'이 아닌 입력
### OutputView
- [x] 초기 게임 세팅
- [x] 플레이어 이름 입력 메세지 출력
- [x] 딜러와 플레이어 첫 카드 세팅 결과 출력
- [x] 딜러와 플레이어 별로 가진 카드를 출력
- [x] 게임 진행
- [x] 플레이어가 카드를 추가로 받을지 여부 메세지 출력
- [x] 플레이어가 가진 카드 현황을 출력
- [x] 딜러 추가 카드 수령 메세지
- [x] 게임 결과
- [x] 딜러와 플레이어 최종 카드 결과 출력
- [x] 딜러와 플레이어 최종 승패 결과 출력

## TODO
12 changes: 12 additions & 0 deletions src/main/java/Application.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
import controller.BlackJackGameController;
import view.InputView;
import view.OutputView;

public class Application {
public static void main(String[] args) {
InputView inputview = new InputView();
OutputView outputView = new OutputView();
BlackJackGameController blackJackGameController = new BlackJackGameController(inputview, outputView);
blackJackGameController.run();
}
}
120 changes: 120 additions & 0 deletions src/main/java/controller/BlackJackGameController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
package controller;

import domain.DrawCommand;
import domain.card.Card;
import domain.card.GameDeck;
import domain.card.ShuffleDeckGenerator;
import domain.game.BlackJackGame;
import domain.game.GameResult;
import domain.user.Dealer;
import domain.user.Name;
import domain.user.Names;
import domain.user.Player;
import domain.user.PlayerStatus;
import domain.user.User;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
import view.InputView;
import view.OutputView;

public class BlackJackGameController {
private final InputView inputView;
private final OutputView outputView;

public BlackJackGameController(InputView inputView, OutputView outputView) {
this.inputView = inputView;
this.outputView = outputView;
}

public void run() {
BlackJackGame blackJackGame = setUp();
playGame(blackJackGame);
}

private BlackJackGame setUp() {
GameDeck gameDeck = new GameDeck(new ShuffleDeckGenerator());
Dealer dealer = new Dealer(gameDeck.drawForFirstTurn());
List<Player> players = setUpPlayers(gameDeck);
showSetUpResult(dealer, players);
return new BlackJackGame(players, dealer, gameDeck);
}

private List<Player> setUpPlayers(GameDeck gameDeck) {
return readUsersName().stream()
.map(name -> new Player(name, gameDeck.drawForFirstTurn()))
.collect(Collectors.toList());
}

private List<Name> readUsersName() {
outputView.printInputPlayerNameMessage();
Names names = new Names(inputView.readPlayersName());
return names.getNames();
}

private void showSetUpResult(Dealer dealer, List<Player> players) {
HashMap<String, List<Card>> setUpResult = new LinkedHashMap<>();
setUpResult.put("딜러", dealer.getCards().subList(0, 1));
players.forEach(player -> setUpResult.put(player.getName(), player.getCards()));
outputView.printSetUpResult(setUpResult);
}

private void playGame(BlackJackGame blackJackGame) {
progressPlayersTurn(blackJackGame);
progressDealerTurn(blackJackGame);
showUsersCardResult(blackJackGame);
GameResult gameResult = new GameResult(blackJackGame.getPlayerNames());
gameResult.saveResults(blackJackGame.getDealer(), blackJackGame.getPlayers());
showFinalResult(gameResult);
}

private void progressPlayersTurn(BlackJackGame blackJackGame) {
List<Player> players = blackJackGame.getPlayers();
for (Player player : players) {
progressPlayerTurn(blackJackGame, player);
}
}

private void progressPlayerTurn(BlackJackGame blackJackGame, Player player) {
while (player.isUserStatus(PlayerStatus.NORMAL) && readDrawCommand(player).equals(DrawCommand.DRAW)) {
blackJackGame.drawOneMoreCardForPlayer(player);
showDrawResult(player);
}
if (player.isUserStatus(PlayerStatus.NORMAL)) {
showDrawResult(player);
}
}

private DrawCommand readDrawCommand(Player player) {
outputView.printAskOneMoreCardMessage(player.getName());
return inputView.readDrawCommand();
}

private void showDrawResult(Player player) {
outputView.printPlayerDrawResult(player.getName(), player.getCards());
}

private void progressDealerTurn(BlackJackGame blackJackGame) {
blackJackGame.drawCardUntilOverSixteen();

Dealer dealer = blackJackGame.getDealer();
int dealerDrawCount = dealer.getCards().size() - 2;

if (dealerDrawCount > 0) {
outputView.printDealerDrawResult(dealerDrawCount);
}
}

private void showUsersCardResult(BlackJackGame blackJackGame) {
Map<User, List<Card>> userResult = new LinkedHashMap<>();
userResult.put(blackJackGame.getDealer(), blackJackGame.getDealer().getCards());
blackJackGame.getPlayers().forEach(player -> userResult.put(player, player.getCards()));
outputView.printUsersCardResult(userResult);
}

private void showFinalResult(GameResult gameResult) {
outputView.printFinalResult(gameResult.getDealerResult(), gameResult.getPlayerResults());
}
}
31 changes: 31 additions & 0 deletions src/main/java/domain/DrawCommand.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
package domain;

import java.util.Map;
import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;

public enum DrawCommand {
DRAW("y"),
STOP("n");

private static final Map<String, DrawCommand> inputDrawCommandMap = Stream.of(values())
.collect(Collectors.toMap(DrawCommand::getCommand, Function.identity()));

private final String command;

DrawCommand(String command) {
this.command = command;
}

public static DrawCommand of(String inputCommand) {
if(inputDrawCommandMap.containsKey(inputCommand)) {
return inputDrawCommandMap.get(inputCommand);
}
throw new IllegalArgumentException("[ERROR] 카드 드로우 커맨드는 y,n 둘 중 하나입니다.");
}

private String getCommand() {
return command;
}
}
33 changes: 33 additions & 0 deletions src/main/java/domain/Number.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package domain;

public enum Number {
ACE(11, "A"),
TWO(2, "2"),
THREE(3, "3"),
FOUR(4, "4"),
FIVE(5, "5"),
SIX(6, "6"),
SEVEN(7, "7"),
EIGHT(8, "8"),
NINE(9, "9"),
TEN(10, "10"),
JACK(10, "J"),
QUEEN(10, "Q"),
KING(10, "K");

private final int score;
private final String number;

Number(int score, String number) {
this.score = score;
this.number = number;
}

public int getScore() {
return score;
}

public String getNumber() {
return number;
}
}
18 changes: 18 additions & 0 deletions src/main/java/domain/Pattern.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
package domain;

public enum Pattern {
HEART("하트"),
DIAMOND("다이아몬드"),
CLOVER("클로버"),
SPADE("스페이드");

private final String pattern;

Pattern(String pattern) {
this.pattern = pattern;
}

public String getPattern() {
return pattern;
}
}
7 changes: 7 additions & 0 deletions src/main/java/domain/card/Card.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package domain.card;

public interface Card {
int getScore();

String getSymbol();
}
38 changes: 38 additions & 0 deletions src/main/java/domain/card/CloverCard.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package domain.card;

import domain.Number;
import domain.Pattern;

public enum CloverCard implements Card {
CLOVER_ACE(Pattern.CLOVER, Number.ACE),
CLOVER_TWO(Pattern.CLOVER, Number.TWO),
CLOVER_THREE(Pattern.CLOVER, Number.THREE),
CLOVER_FOUR(Pattern.CLOVER, Number.FOUR),
CLOVER_FIVE(Pattern.CLOVER, Number.FIVE),
CLOVER_SIX(Pattern.CLOVER, Number.SIX),
CLOVER_SEVEN(Pattern.CLOVER, Number.SEVEN),
CLOVER_EIGHT(Pattern.CLOVER, Number.EIGHT),
CLOVER_NINE(Pattern.CLOVER, Number.NINE),
CLOVER_TEN(Pattern.CLOVER, Number.TEN),
CLOVER_JACK(Pattern.CLOVER, Number.JACK),
CLOVER_QUEEN(Pattern.CLOVER, Number.QUEEN),
CLOVER_KING(Pattern.CLOVER, Number.KING);

private final Pattern pattern;
private final Number number;

CloverCard(Pattern pattern, Number number) {
this.pattern = pattern;
this.number = number;
}

@Override
public String getSymbol() {
return number.getNumber() + pattern.getPattern();
}

@Override
public int getScore() {
return number.getScore();
}
}
7 changes: 7 additions & 0 deletions src/main/java/domain/card/DeckGenerator.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package domain.card;

import java.util.List;

public interface DeckGenerator {
public abstract List<Card> generate();
}
38 changes: 38 additions & 0 deletions src/main/java/domain/card/DiamondCard.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package domain.card;

import domain.Number;
import domain.Pattern;

public enum DiamondCard implements Card {
DIAMOND_ACE(Pattern.DIAMOND, Number.ACE),
DIAMOND_TWO(Pattern.DIAMOND, Number.TWO),
DIAMOND_THREE(Pattern.DIAMOND, Number.THREE),
DIAMOND_FOUR(Pattern.DIAMOND, Number.FOUR),
DIAMOND_FIVE(Pattern.DIAMOND, Number.FIVE),
DIAMOND_SIX(Pattern.DIAMOND, Number.SIX),
DIAMOND_SEVEN(Pattern.DIAMOND, Number.SEVEN),
DIAMOND_EIGHT(Pattern.DIAMOND, Number.EIGHT),
DIAMOND_NINE(Pattern.DIAMOND, Number.NINE),
DIAMOND_TEN(Pattern.DIAMOND, Number.TEN),
DIAMOND_JACK(Pattern.DIAMOND, Number.JACK),
DIAMOND_QUEEN(Pattern.DIAMOND, Number.QUEEN),
DIAMOND_KING(Pattern.DIAMOND, Number.KING);

private final Pattern pattern;
private final Number number;

DiamondCard(Pattern pattern, Number number) {
this.pattern = pattern;
this.number = number;
}

@Override
public String getSymbol() {
return number.getNumber() + pattern.getPattern();
}

@Override
public int getScore() {
return number.getScore();
}
}
Loading