자바 국비지원 2일차 수업 중 난수 발생시키기, 제어문 을 배우고 생각난

닌텐도 목장이야기 코로보쿠르 에서 여신님이랑 하는 미니게임을 그대로 만들어봤다!

연못에 공물을 10번 정도 주면 한번정도 게임시켜줬던 걸로 기억한다.

 

규칙

1. 여신님이 먼저 숫자 하나를 낸다.

2. 나는 '크다' 와 '작다' 중 하나를 고른다.

3. 여신님이 다음 숫자를 알려준다.

 

 

'크다'를 선택했을때,

3번의 다음 숫자가 1번의 이전 숫자보다 큰 경우 -> 정답

3번의 다음 숫자가 1번의 이전 숫자보다 작은 경우 -> 땡

3번의 다음 숫자가 1번의 이전 숫자와 같은 경우 -> 무승부

 

'작다'를 선택했을때,

3번의 다음 숫자가 1번의 이전 숫자보다 작은 경우 -> 정답

3번의 다음 숫자가 1번의 이전 숫자보다 큰 경우 -> 땡

3번의 다음 숫자가 1번의 이전 숫자와 같은 경우 -> 무승부

 

그리고 정답 과 무승부의 경우에는 한 판 더 게임을 할 수 있다.

그럼 이제 이 3번의 다음 숫자는 이전 숫자가 된다.

 

* 처음엔 좀 이해하기 힘들었던 게임이다.

 

 

ex)

여신님 : 자 그럼 이 8 보다?

나 : 작다

여신님 : 3

여신님 : 자 이전 숫자는 8 이고, 다음 숫자는 3이고, 너는 '작다' 를 선택했고 다음 숫자가 이전 숫자보다 작으니까...

여신님 : 정답!

여신님 : 자 그럼 이 3 보다?

나 : 작다

여신님 : 5

여신님 : 자 이전 숫자는 3이고, 다음 숫자는 5이고, 너는 '작다'를 선택했고 다음 숫자가 이전 숫자보다 크니까...

여신님 : 땡!

여신님 : 이번에는 1번만 맞췄구나

 

 

 

랜덤이지만 완전 랜덤은 아닌 게임,

여신님이 8을 주면, 다음 수는 0~7까지 거나 9 일테니 확률상 '작다' 를 선택해야 우승확률이 높아진다.

그렇게 해서 20번까지 맞은 적도 있었다. 뭐 이런게임이 있나 했지만 꽤 재미있음.

 

 

깃허브

https://github.com/kindacool/etc/blob/main/MiniGame.java

 

GitHub - kindacool/etc

Contribute to kindacool/etc development by creating an account on GitHub.

github.com

 

 

코드

package p2022_06_23;

import java.util.Scanner;

public class MiniGame {

	public static void main(String[] args) {

		// 목장이야기 코로보쿠르 여신님 퀴즈 : 0~9까지 수를 랜덤으로 해서 그 수보다 클지 작을지를 고르는 게임!
		int initValue; //초기값 , 이전값
		int nextRandom; //다음값
		int pick; //1을 고르면 크다, 2를 고르면 작다
		int score = 0; //몇번 맞췄는지 점수

		// 초기값도 랜덤으로(이전값)
		initValue = (int) (Math.random() * 10);

		while (true) {
			// 다음 값 (랜덤)

			nextRandom = (int) (Math.random() * 10);

			// 플레이어가 선택
			System.out.println("자 그럼 이 " + initValue + " 보다?");
			Scanner sc = new Scanner(System.in);
			pick = sc.nextInt(); // 1이면 크다! 2면 작다!

			System.out.println(nextRandom + " ~!");
			if (nextRandom > initValue) {

				if (pick == 1) // 다음값이 이전값보다 크다고 선택했으면
				{
					System.out.println("이전값이 " + initValue + "고, 이번값이 " + nextRandom + "이고, 다음값이 이전값보다 크다고 선택했으니까...");
					System.out.println("정답! 자 그럼 한번 더 할게.");
					score++;
					initValue = nextRandom;
				}

				else if (pick == 2) {
					System.out.println("이전값이 " + initValue + "고, 이번값이 " + nextRandom + "이고, 다음값이 이전값보다 작다고 선택했으니까...");
					System.out.println("땡!");
					break;
				}
			} else if (nextRandom < initValue) {

				if (pick == 1) // 다음값이 이전값보다 크다고 선택했으면
				{
					System.out.println("이전값이 " + initValue + "고, 이번값이 " + nextRandom + "이고, 다음값이 이전값보다 크다고 선택했으니까...");
					System.out.println("땡");
					break;
				} else if (pick == 2) {
					System.out.println("이전값이 " + initValue + "고, 이번값이 " + nextRandom + "이고, 다음값이 이전값보다 작다고 선택했으니까...");
					System.out.println("정답! 자 그럼 한번 더 할게.");
					score++;
					initValue = nextRandom;
				}

			} else {
				System.out.println("이전값이 " + initValue + "고, 이번값이 " + nextRandom + "이고, 다음값이 이전값보다 작다고 선택했으니까...");
				System.out.println("무승부!! 자 그럼 한번 더 할게.");
				initValue = nextRandom;
			}
		}
		System.out.println("이번엔  " + score + " 번 만큼이나 맞췄네 대단한걸?");

	}

}

+ Recent posts