자바 국비지원 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 + " 번 만큼이나 맞췄네 대단한걸?");
}
}
'만들어보기' 카테고리의 다른 글
자바 코딩 연습 / 거꾸로 대칭 별트리 찍기 (0) | 2022.07.11 |
---|---|
자바 코딩 연습 / 오른쪽 별트리 찍기 (0) | 2022.07.08 |
자바 코딩 연습 / 첫번째 시험문제 (0) | 2022.07.08 |
자바 코딩 연습 / 대칭 별트리 찍기 (0) | 2022.06.24 |
자바 코딩 연습 / 미니 게임 만들기2 (0) | 2022.06.24 |