본문 바로가기

Java/실습

[Java] 가위 바위 보

이번에는 가위바위보 게임을 구현해보겠습니다.

 

사용자가 콘솔창에 1을 입력하면 가위,

 

2를 입력하면 바위,

 

3을 입력하면 보로 인식하여

 

컴퓨터의 임의의 가위바위보랑 비교하여

 

컴퓨터에게 한 번 질때까지의

 

연승 결과를 출력하는 프로그램입니다.

 

이번에는 함수를 사용해서 구현해보겠습니다.

 

 

public static int getRSP() {

Scanner sc = new Scanner(System.in);

System.out.println("=================");

System.out.println("1.가위 2.바위 3.보");

System.out.println("=================");

int rsc = sc.nextInt();

return rsc;

}

 

먼저 입력받는 함수를 하나 만들겠습니다.

 

이 부분은 많이 했기 때문에 설명은 생략하겠습니다.

 

public static void printRSP(int n) {

if(n == 1) {

System.out.println("■■■■■■■■■■■■■");

System.out.println("컴퓨터 : 가위!");

System.out.println("■■■■■■■■■■■■■");

}

else if(n == 2) { System.out.println("■■■■■■■■■■■■■");

System.out.println("컴퓨터 : 바위!");

System.out.println("■■■■■■■■■■■■■");

}else if(n == 3) {System.out.println("■■■■■■■■■■■■■");

System.out.println("컴퓨터 : 보!");

System.out.println("■■■■■■■■■■■■■");

}

}

 

n의 값에 따라 컴퓨터의 가위 바위 보가

 

출력되는 프린트 함수입니다.

 

public static void printUserRSP(int n) {

if(n == 1) {

System.out.println("□□□□□□□□□□□□□");

System.out.println("유저 : 가위!");

System.out.println("□□□□□□□□□□□□□");

}

else if(n == 2) { System.out.println("□□□□□□□□□□□□□");

System.out.println("유저 : 바위!");

System.out.println("□□□□□□□□□□□□□");

}else if(n == 3) {System.out.println("□□□□□□□□□□□□□");

System.out.println("유저 : 보!");

System.out.println("□□□□□□□□□□□□□");

}

}

 

반대로 유저의 입력되는 n의 값에 따라 

 

가위 바위 보를 출력하는 함수입니다.

 

public static int compRSP() {

Random r = new Random();

int win = 0;

while(true) {

int n = getRSP();

int com_rsc = r.nextInt(3)+1;

if(n == com_rsc) {

printRSP(com_rsc);

printUserRSP(n);

System.out.println("=================");

System.out.println("비겼습니다.");

System.out.println("=================");

}

else if(n == 1 && com_rsc == 3 || n == 2 && com_rsc == 1 && n == 3 && com_rsc == 2) {

printRSP(com_rsc);

printUserRSP(n);

System.out.println("=================");

System.out.println("유저 승리");

System.out.println("=================");

win++;

}else {

printRSP(com_rsc);

printUserRSP(n);

System.out.println("=================");

System.out.println("패배하셨네요..");

System.out.println("=================");

break;

}

}

return win;

}

 

가위바위보를 비교하는 함수입니다.

 

컴퓨터의 번호는 랜덤으로 설정하고

 

if 부분에서는 비겼을 때를 가장하고

 

프린트문을 출력합니다.

 

else if 부분에서 가위바위보 이겼을 때를

 

and와 or 연산자를 사용해 모든 경우를

 

유저의 승리로 프린트하고 win변수를

 

하나 올려줍니다.

 

else부분은 진 경우이므로 

 

프린트문을 출력하고 프로그램을 종료합니다.

 

그리고 이긴 횟수를 반환합니다.

 

public static void main(String[] args) {

System.out.printf("축하드립니다. %d연승하셨습니다.", compRSP());

}

 

이제 이긴횟수를 출력만하면 될 것입니다.

 

프로그램을 실행시켜 볼까요?

 

=================

1.가위 2.바위 3.보

=================

1

■■■■■■■■■■■■■

컴퓨터 : 보!

■■■■■■■■■■■■■

□□□□□□□□□□□□□

유저 : 가위!

□□□□□□□□□□□□□

=================

유저 승리

=================

=================

1.가위 2.바위 3.보

=================

1

■■■■■■■■■■■■■

컴퓨터 : 가위!

■■■■■■■■■■■■■

□□□□□□□□□□□□□

유저 : 가위!

□□□□□□□□□□□□□

=================

비겼습니다.

=================

=================

1.가위 2.바위 3.보

=================

2

■■■■■■■■■■■■■

컴퓨터 : 보!

■■■■■■■■■■■■■

□□□□□□□□□□□□□

유저 : 바위!

□□□□□□□□□□□□□

=================

패배하셨네요..

=================

축하드립니다. 1연승하셨습니다.

 

 

 

결과가 잘 출력되네요!

 

and연산자와 or연산자를 적절히 섞어서 쓰는

 

간단한 실습이었습니다.

 

'Java > 실습' 카테고리의 다른 글

[Java] 주사위 게임  (1) 2024.12.05
[Java] 로또  (0) 2024.12.05
[Java] 배스킨라빈스 31게임  (0) 2024.12.04
[Java] 거스름돈 환전  (1) 2024.12.04
[Java] 문자 제거하기  (0) 2024.12.03