가위바위보 게임 만들기

Jane·2023년 2월 2일
0

IT 수업 정리

목록 보기
28/124

설명

기능

  • 숫자(int)와 문자(String)를 매치한다.
    [가위는 1, 바위는 2, 보는 3]

  • 사용자의 것은 스캐너(콘솔)로 입력받고,
    컴퓨터의 것은 랜덤으로 출력한다. (Math.random() 이용)

  • 가위, 바위, 보를 비교한다. 비교하고 결과도 출력한다.

    • Player가 가지고 있는 것이 가위?바위?보?
    • P1(사용자)와 P2(컴퓨터)의 상황은?
  • 게임이 끝나면 계속할지 물어보고, 계속하던지 끝내던지 한다.

코드에서 유의할 점

  • 생성자 함수는 객체를 만들 때 생성되는 함수이고, 매개변수를 다르게 해주는 오버로딩이 가능하다.
    컴퓨터의 것은 매개변수를 주지 않고도 생성할 수 있게 하며,
    사용자의 것은 입력을 받게 되므로 String 매개변수로 설정을 할 수 있게 한다.

  • Math.random() 으로 숫자를 랜덤 출력하며, 범위도 설정해준다.

  • 문자를 비교할 때는 == 쓰지 않고(주소값을 비교한다...) equals 쓴다.

  • Scanner(System.in)으로 입력을 받는다.

  • show() 로 상태와 결과를 출력한다.

  • while문으로 프로그램을 반복한다.

코드

import java.util.Scanner;

class RspPlayer {
	private int rsp;
	private String rspString;
    
	public RspPlayer() {

		this.rsp = (int) (Math.random() * 3 + 1);

		if (this.rsp == 1) {
			this.rspString = "가위";
		} else if (this.rsp == 2) {
			this.rspString = "바위";
		} else {
			this.rspString = "보";
		}

	}

	public RspPlayer(String rspString) {

		this.rspString = rspString;

		if (this.rspString.equals("가위")) {
			this.rsp = 1;
		} else if (this.rspString.equals("바위")) {
			this.rsp = 2;
		} else {
			this.rsp = 3;
		}

	}

	public void result(RspPlayer player) {
		System.out.println("P1 : " + this.rspString + "\tP2 : " + player.rspString);
		if (this.rsp == player.rsp) {
			System.out.println("비겼습니다.");
		} else if (((this.rsp == 1) && (player.rsp == 3)) || ((this.rsp == 2) && (player.rsp == 1))
				|| ((this.rsp == 3) && (player.rsp == 2))) {
			System.out.println("P1이 이겼습니다.");
		} else {
			System.out.println("P2가 이겼습니다.");
		}
	}
}

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

		while (true) {
			System.out.println("입력하세요 : ");
			String rsp = sc.nextLine();
			
			RspPlayer p1 = new RspPlayer(rsp);
			RspPlayer p2 = new RspPlayer();

			p1.result(p2);

			System.out.println("계속 Y 중단 N");
			String yn = sc.nextLine();
			if (yn.equals("Y")) {
				continue;
			} else {
				break;
			}
		}
		System.out.println("게임 종료");
	}

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

0개의 댓글