MVC

han.user();·2023년 5월 9일
0
post-thumbnail

10이하 숫자 맞추기 게임 예제소스

Main 클래스
프로그램의 진입점을 담당합니다. NumberModel, NumberView, NumberController 클래스를 생성하고, NumberController의 play() 메서드를 호출하여 숫자 맞추기 게임을 시작합니다.

public class NumberMain {
    public static void main(String[] args) {
        NumberModel model = new NumberModel();
        NumberView view = new NumberView();
        NumberController controller = new NumberController(model, view);
        controller.play();
    }
}

NumberModel 클래스
게임의 모델을 담당합니다. 1부터 10까지의 난수를 생성하여 게임의 정답 숫자를 결정합니다.

import java.util.Random;

public class NumberModel {
    private int answer;

    public NumberModel() {
        Random rand = new Random();
        answer = rand.nextInt(10) + 1; // 1부터 10까지의 난수 생성
    }

    public int getAnswer() {
        return answer;
    }
}

NumberView 클래스
게임의 뷰를 담당합니다. 사용자에게 게임의 상태를 출력하고, 사용자의 입력을 받아 Controller에 전달합니다.

public class NumberView {
    private Scanner scanner;

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

    public int getUserInput(int chancesLeft) {
        System.out.print("숫자를 입력하세요(남은 기회 "+chancesLeft+"번) : ");
        return scanner.nextInt();
    }

    public void showResult(String result) {
        System.out.println(result);
    }
}

NumberController 클래스
게임의 로직과 상태를 관리하는 컨트롤러입니다. View로부터 사용자의 입력을 받아 Model과 비교하여 게임의 상태를 결정하고, View에 상태를 전달하여 사용자에게 표시합니다. 게임의 기회 횟수를 관리하고, 기회를 모두 소진하면 게임을 종료합니다.

public class NumberController {
    private NumberModel model;
    private NumberView view;
    private int chancesLeft;

    public NumberController(NumberModel model, NumberView view) {
        this.model = model;
        this.view = view;
        chancesLeft = 3; // 3번의 기회
    }

    public void play() {
        while (chancesLeft > 0) {
            int guess = view.getUserInput(chancesLeft);
            if (guess == model.getAnswer()) {
                view.showResult("정답입니다!");
                return;
            } else if (guess > model.getAnswer()) {
                view.showResult("down");
            } else {
                view.showResult("up");
            }
            chancesLeft--;
        }
        view.showResult("실패! 정답은 " + model.getAnswer() + "입니다.");
    }
}
profile
I'm still hungry.

0개의 댓글