Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
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
5 changes: 4 additions & 1 deletion src/main/java/leets/land/UpdownApplication.java
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
package leets.land;

import leets.land.controller.GameController;

public class UpdownApplication {

public static void main(String[] args) {
System.out.print("hihi :D");
GameController gameController = new GameController();
gameController.startGame();
}
}
37 changes: 37 additions & 0 deletions src/main/java/leets/land/controller/GameController.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
package leets.land.controller;

import leets.land.model.Game;
import leets.land.view.InputView;
import leets.land.view.OutputView;

public class GameController {
private Game game;
private InputView inputView;
private OutputView outputView;

public GameController() {
this.game = new Game();
this.inputView = new InputView();
this.outputView = new OutputView();
}

public void startGame() {
outputView.displayWelcomeMessage();
int gameType = inputView.promptForGameType();
game.initializeGame(gameType);

while (!game.isGameOver()) {
String range = game.getCurrentRange();
outputView.displayPrompt("๊ฐ’์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š” " + range + " : ");
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์ด์ƒํ•œ ๊ฐ’์„ ์ž…๋ ฅํ•ด๋„ ๊ฒŒ์ž„์ด ์ง„ํ–‰๋ฉ๋‹ˆ๋‹คใ…Žใ…Ž

String guess = inputView.promptForGuess();
if (!game.isValidGuess(guess)) {
outputView.displayError("๋ฒ”์œ„ ๋‚ด์˜ ์˜ฌ๋ฐ”๋ฅธ ๊ฐ’์„ ์ž…๋ ฅํ•˜์„ธ์š”.");
continue;
}
game.processGuess(guess); // ๋ณ€๊ฒฝ๋œ ๋ถ€๋ถ„
if (game.isGameOver()) {
outputView.displayGameOverMessage(game.getGuessCount());
}
}
}
}
114 changes: 114 additions & 0 deletions src/main/java/leets/land/model/Game.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,114 @@
package leets.land.model;

import java.util.Random;

public class Game {
private int targetNumber;
private char targetLetter;
private int minNumber = 1;
private int maxNumber = 100;
private char minLetter = 'A';
private char maxLetter = 'Z';
private int guessCount = 0;
private boolean gameOver = false;
private int gameType;

public void initializeGame(int gameType) {
this.gameType = gameType;
Random rand = new Random();
if (gameType == 1) {
targetNumber = rand.nextInt(maxNumber - minNumber + 1) + minNumber;
} else {
minLetter = 'A';
maxLetter = 'z';
targetLetter = (char) (rand.nextInt('z' - 'A' + 1) + 'A');
}
}

public boolean isValidGuess(String guess) {
if (gameType == 1) {
try {
int guessNum = Integer.parseInt(guess);
return guessNum >= minNumber && guessNum <= maxNumber;
} catch (NumberFormatException e) {
return false;
}
} else {
if (guess.length() != 1) return false;
char guessChar = guess.charAt(0);
return (guessChar >= minLetter && guessChar <= maxLetter) ||
(guessChar >= Character.toLowerCase(minLetter) && guessChar <= Character.toLowerCase(maxLetter));
}
}

public void processGuess(String guess) {
guessCount++;
if (gameType == 1) {
int guessNum;
try {
guessNum = Integer.parseInt(guess);
} catch (NumberFormatException e) {
System.out.println("[ERROR] ์ •์ˆ˜ ๊ฐ’์„ ์ž…๋ ฅํ•˜์„ธ์š”.");
return;
}

if (guessNum < targetNumber) {
minNumber = guessNum + 1;
System.out.println("UP");
} else if (guessNum > targetNumber) {
maxNumber = guessNum - 1;
System.out.println("DOWN");
} else {
gameOver = true;
System.out.println("์ •๋‹ต!");
}
} else {
char guessChar = guess.charAt(0);
if (guessChar >= 'A' && guessChar <= 'Z') {
if (guessChar < targetLetter) {
minLetter = (char) (guessChar + 1);
System.out.println("UP");
} else if (guessChar > targetLetter) {
maxLetter = (char) (guessChar - 1);
System.out.println("DOWN");
} else {
gameOver = true;
}
} else if (guessChar >= 'a' && guessChar <= 'z') {
if (guessChar < targetLetter) {
minLetter = (char) (guessChar + 1);
System.out.println("UP");
} else if (guessChar > targetLetter) {
maxLetter = (char) (guessChar - 1);
System.out.println("DOWN");
} else {
gameOver = true;
}
} else {
System.out.println("[ERROR] ๋ฒ”์œ„ ๋‚ด์˜ ์˜ฌ๋ฐ”๋ฅธ ๊ฐ’์„ ์ž…๋ ฅํ•˜์„ธ์š”.");
}

if (maxLetter >= '[' && maxLetter <= '`') {
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

์˜ˆ์ƒํ•˜์ง€ ๋ชปํ•œ ๋ถ€๋ถ„์„ ์ฒ˜๋ฆฌํ•œ ๋ชจ์Šต์ด ์ข‹์•˜์Šต๋‹ˆ๋‹ค!

maxLetter = 'Z';
} else if (minLetter > 'Z' && minLetter < 'a') {
minLetter = 'a';
}

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

๋ฒ”์œ„๊ฐ’ ์ถœ๋ ฅ์‹œ ๋Œ€์†Œ๋ฌธ์ž ๋„˜์–ด๊ฐ€๋Š” ๋ถ€๋ถ„ ์ž˜ ๊ณ ๋ คํ•˜์‹  ๊ฒƒ ๊ฐ™์Šต๋‹ˆ๋‹ค !!!

}
}

public boolean isGameOver() {
return this.gameOver;
}

public int getGuessCount() {
return this.guessCount;
}

public String getCurrentRange() {
if (gameType == 1) {
return String.format("(%d ~ %d)", minNumber, maxNumber);
} else {
return String.format("(%c ~ %c)", minLetter, maxLetter);
}
}
}
20 changes: 20 additions & 0 deletions src/main/java/leets/land/view/InputView.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
package leets.land.view;

import java.util.Scanner;

public class InputView {
private Scanner scanner;

public InputView() {
this.scanner = new Scanner(System.in);
}

public int promptForGameType() {
System.out.print("๋ฒ„์ „์„ ์ž…๋ ฅํ•ด์ฃผ์„ธ์š” (์ˆซ์ž ๋ฒ„์ „: 1, ์˜์–ด ๋ฒ„์ „: 2) : ");
return scanner.nextInt();
}

public String promptForGuess() {
return scanner.next();
}
}
25 changes: 25 additions & 0 deletions src/main/java/leets/land/view/OutputView.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
package leets.land.view;

public class OutputView {
public void displayWelcomeMessage() {
System.out.println("์—…๋‹ค์šด ๊ฒŒ์ž„์„ ์‹œ์ž‘ํ•ฉ๋‹ˆ๋‹ค.");
}

public void displayPrompt(String message) {
System.out.print(message);
}

public void displayFeedback(String feedback) {
System.out.println(feedback);
}

public void displayError(String errorMessage) {
System.out.println("[ERROR] " + errorMessage);
}


public void displayGameOverMessage(int guessCount) {
System.out.println("์ •๋‹ต!\n");
System.out.println("์‹œ๋„ํ•œ ํšŸ์ˆ˜ : " + guessCount + "ํšŒ");
}
}