본문 바로가기
문제풀이/Java

[Java] 랜덤 가위바위보

by AngieLee 2021. 6. 1.

1. 총 게임수
2. 사용자의 입력 받음 ex) 가위 바위 보
3. 램덤 3가지(숫자)를 뽑음
4. user와 com간의 무승패 결정
5. 무승패의 결과를 저장 ( ?전 ?승 ?패 )
6. 출력

 

import java.io.*;
import java.util.*;

public class GaBaBo {
	int gCount = 3;
	int i;
	BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
	GaBaBo(){
		inputGameCount();
	}
	void inputGameCount(){
		p("총 게임수(기본:3): ");
		try{
			String gCountStr = br.readLine();
			gCountStr = gCountStr.trim();
			if(gCountStr.length() != 0){
				gCount = Integer.parseInt(gCountStr);
			}

			i = gCount/2;
		}catch(IOException ie){
		}catch(NumberFormatException ne){ 
			pln("숫자만 가능합니다. 다시 입력해주세요!");
			inputGameCount();
			return;
		}

		input();
	}

	int usr;
	void input(){
		p("가위 바위 보: ");
		try{
			String userChoice = br.readLine();
			userChoice = userChoice.trim();
			if(userChoice.length() != 0){
				switch(userChoice){
					case "가위": usr=0; break;
					case "바위": usr=1; break;
					case "보": usr=2; break;
					default: pln("가위 바위 보만 가능"); input(); return;
				}
			}else{
				input(); 
				return;
			}
		}catch(IOException ie){}

		ran();
	}
	Random r = new Random();
	int com;
	void ran(){
		com = r.nextInt(3); //0~2

		winOrLose();
	}

	int win;
	int lose;
	void winOrLose(){
		switch(usr){
			case 0: 
				switch(com){
				    case 0: pln("draw!"); input(); return;
					case 1: pln("lose!"); lose++; gCount--; break;
					case 2: pln("win!"); win++; gCount--; break;
				} break;
			case 1:
				switch(com){
				    case 0: pln("win!"); win++; gCount--; break;
					case 1: pln("draw!"); input(); return; 
					case 2: pln("lose!"); lose++; gCount--; break;
				} break;
			case 2:
				switch(com){
				    case 0: pln("lose!"); lose++; gCount--; break;
					case 1: pln("win!"); win++; gCount--; break;
					case 2: pln("draw!"); input(); return; 
				} break;
		}

		//stopToEnd(); //모든 게임을 다하고 Stop!
		stopToWin(); //승리가 결정되면 Stop! 
	}
	void stopToEnd(){
		if(gCount>0) {
			input();
		}else{
            showResult();
		}
	}
	void stopToWin(){
		if(gCount>0) {            
			if(win>=(i+1) || lose>=(i+1)){
				showResult();
			}else{
				input();
			}
		}else{
            showResult();
		}
	}
	void showResult(){
		pln((win+lose)+"전 "+ win+"승 "+lose+"패");
	}
	void pln(String str){
		System.out.println(str);
	}
	void p(String str){
		System.out.print(str);
	}
	public static void main(String[] args) {
		new GaBaBo();
	}
}