Up-Down 게임 만들기

Jane·2023년 2월 3일
0

IT 수업 정리

목록 보기
30/124

설명

기능

  • 코드 반복하기

    1. 게임 시작과 게임 종료를 입력받고, 게임 종료를 원할 때까지 반복
    2. 일정한 기회 안에서 게임 반복
  • 랜덤한 숫자를 int 변수에 받아준다. (Math.random() 이용)

  • 스캐너로 입력받기

    • 게임 시작? 게임 종료?
    • 내가 예상한 숫자는?
  • 분기할 지점은 언제? (숫자가 같을 때 / 숫자가 클 때 / 숫자가 작을 때)

  • 게임 부분은 객체(클래스)로 따로 분리해서 실행해본다.

코드에서 유의할 점

  • while문의 () 안에는 true인 부분일 때만 돌아간다.
    (범위가 true인 코드만 돌아가므로 확실한 범위를 적어준다.)
  • break 또는 continue를 이용할 때는 언제 이용할 것인지 확실히 해두자.
    (while문을 빠져나갈 때는 break, 다음 코드로 넘기고 해야할 때는 continue)
  • 클래스(객체)를 만들었으면, 어떤 방식으로 실행할 것인지 정한다.
    (내 객체가 갖고 있는 변수는? 생성자로 어떤 것을 초기화? 실행은 어떻게?)

코드

1. 메인에 다 넣은 코드

import java.util.Scanner;

public class JavaPractice {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);

		while (true) {
			System.out.println("게임 시작 1 | 게임 종료 2");
			int n = sc.nextInt();

			if (n == 2) {
				System.out.println("종료합니다.");
				break;
			} else {
				int num = 10;
				int randomNum = (int) (Math.random() * 100 + 1);
				// 기회 0 될때까지 업다운 게임 실행, 맞추면 break
				while (num > 0) {
					System.out.println("숫자 입력 : ");
					int inputNum = sc.nextInt();

					if (randomNum == inputNum) {
						System.out.println("맞췄습니다 ==== " + randomNum);
						break;
					} else {
						num--;
						// 입력한 수가 랜덤숫자보다 클 땐 낮추라고 해야함
						if (inputNum > randomNum) {
							System.out.println("Down ==== " + num + "번 남았습니다.");
						} else {
							// 입력한 수가 랜덤숫자보다 작을 땐 올리라고 해야함
							System.out.println("Up ==== " + num + "번 남았습니다.");
						}

					}
				}
				if (num <= 0) {
					System.out.println("기회를 모두 소진했습니다. 숫자는 " + randomNum);
				}

			}
		}

	}

}

2. 게임을 객체(클래스)로 분리한 코드

import java.util.Scanner;

class UpDownGame {
	private int count = 10;
	private int inputNum;
	private int randomNum;

	public UpDownGame() {
		randomNum = (int) (Math.random() * 100 + 1);
	}

	public void game() {
		Scanner sc = new Scanner(System.in);

		while (count > 0) {
			System.out.println("숫자 입력 : ");
			inputNum = sc.nextInt();

			if (randomNum == inputNum) {
				System.out.println("맞췄습니다 ==== " + randomNum);
				break;
			} else {
				count--;

				if (inputNum > randomNum) {
					System.out.println("Down ==== " + count + "번 남았습니다.");
				} else {

					System.out.println("Up ==== " + count + "번 남았습니다.");
				}

			}
		}

		if (count <= 0) {
			System.out.println("기회를 모두 소진했습니다. 숫자는 " + randomNum);
		}
	}

}

public class JavaPractice {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		UpDownGame a;

		while (true) {
			System.out.println("게임 시작 1 | 게임 종료 2");
			int n = sc.nextInt();

			if (n == 2) {
				System.out.println("종료합니다.");
				break;
			} else {
				a = new UpDownGame();
				a.game();
			}

		}
	}

}
profile
velog, GitHub, Notion 등에 작업물을 정리하고 있습니다.

0개의 댓글