숫자(int)와 문자(String)를 매치한다.
[가위는 1, 바위는 2, 보는 3]
사용자의 것은 스캐너(콘솔)로 입력받고,
컴퓨터의 것은 랜덤으로 출력한다. (Math.random() 이용)
가위, 바위, 보를 비교한다. 비교하고 결과도 출력한다.
게임이 끝나면 계속할지 물어보고, 계속하던지 끝내던지 한다.
생성자 함수는 객체를 만들 때 생성되는 함수이고, 매개변수를 다르게 해주는 오버로딩이 가능하다.
컴퓨터의 것은 매개변수를 주지 않고도 생성할 수 있게 하며,
사용자의 것은 입력을 받게 되므로 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("게임 종료");
}
}