테스트에 수정까지 하다보니 2시간 가까이 걸렸다...
에초에 계획없이 질문만 보고 생각나는 대로 막 만들었더니 정말 즉흥적이고 흉측한 프로그램이 되버렸네..
그리고 왜 내가 회사에서 눈치봐가면서 남의 리포트나 대신해주고 있는건지..
지식인 긴 소스코딩 답변은 이번이 진짜 마지막이다!!
1. CLASS
import java.util.Scanner;
public class test {
// 확율 조작..
static double tem1 = 0.0; // 첫번째 확율.
static double tem2 = 0.0; // 두번째 확율.
public static void main(String[] args) {
Scanner input = new Scanner(System.in);
// int count = 1;
// 승패 누적.
int comWin = 0;
int userWin = 0;
int draw = 0;
// int pan=1;
int numL = 0;
int numR = 0;
int meGet[] = new int[2];
int computerGet = 0;
int comR = 0; // 컴퓨터가 임의의 확율로 둘중에 하나를 낸다.
// String p1[] = {"주먹", "가위", "보"};
String c1 = "";
String c2 = "";
String p1 = "";
String p2 = "";
// while (pan < 4) {
for(int no = 0;no < 3;no++){ // 3회로 횟수 제한.
System.out.println((no + 1) + "회차 시작!!");
// 컴퓨터 왼손
numL = (int)(Math.random()*3) + 1;
for(int i = 0;i<1;i++){ // 컴퓨터 오른손.
numR = (int)(Math.random()*3) + 1;
if(numL == numR){ i--; } // 컴퓨터의 양손의 출력값이 같으면 재시작.
}
if(numL == 1){ // 컴퓨터가 낸 왼손 랜덤값을 가의, 바위, 보 로 명명한다.
c1 = "주먹";
}else if(numL == 2){
c1 = "가위";
}else if(numL == 3){
c1 = "보";
}
if(numR == 1){ // 컴퓨터가 낸 오른손 랜덤값을 가의, 바위, 보 로 명명한다.
c2 = "주먹";
}else if(numR == 2){
c2 = "가위";
}else if(numR == 3){
c2 = "보";
}
// 사람 왼손
System.out.print("왼손에 낼것 번호 선택 : 1)주먹 2)가위 3)보 --> ");
meGet[0] = input.nextInt();
if(meGet[0] == 1){
p1 = "주먹";
}else if(meGet[0] == 2){
p1 = "가위";
}else if(meGet[0] == 3){
p1 = "보";
}
System.out.println("왼손은 " + p1 + "을 내셨습니다.");
for(int j = 0;j<1;j++){
// 사람 오른손
System.out.print("오른손에 낼것 번호 선택 : 1)주먹 2)가위 3)보 --> ");
meGet[1] = input.nextInt();
if(meGet[0] == meGet[1]){
System.out.println("ㅂㅅ ㄷㅌㅇ~ 오른손은 다른거 내라고!!");
j--;
}
}
if(meGet[1] == 1){
p2 = "주먹";
}else if(meGet[1] == 2){
p2 = "가위";
}else if(meGet[1] == 3){
p2 = "보";
}
System.out.println("오른손은 " + p2 + "을 내셨습니다.");
System.out.println("");
System.out.println("컴퓨터가 왼손에 낸것은 --> " + c1 + " | 오른손에 낸것은 --> " + c2);
int comSum = numL + numR;
int meSum = meGet[0] + meGet[1];
if(comSum == meSum){ // 컴퓨터와 당신이 같은 것을 냈을 경우.
System.out.println("\n컴퓨터와 당신은 양손 모두 같은것을 냈습니다!!");
draw++; // 비긴횟수 누적.
}else{ // 본격적인 게임 시작!!
System.out.println("\n당신은 " + p1 + " 과 " + p2 + " 중 하나를 내십시오. --> 1)주먹, 2)가위, 3)보 ");
int comB[] = new int[2];
comB[0] = numL;
comB[1] = numR;
boolean uo = false;
int userOut = 0;
System.out.println(p1 + " 과 " + p2 + " 중에서 내세요!!");
while(uo != true){ // 사용자가 낸것 중에 선택하게 하는 루프문.
userOut = input.nextInt();
if(meGet[0] == userOut || meGet[1] == userOut){
uo = true;
}else{
System.out.println("ㄷㅌㅇ!! " + p1 + " 과 " + p2 + " 중에서 내란 말야!!");
}
}
if(comSum == 3){ // 컴퓨터가 주먹과 가위를 냈을 때.
if(meSum == 4){ // 당신이 주먹과 보를 냈을 때.
comR = chance4(); // 컴퓨터가 둘중에 하나를 낼 확율.
if(comR == 1){
System.out.println("컴퓨터는 주먹을 냈습니다.");
computerGet = 1;
}else{
System.out.println("컴퓨터는 가위을 냈습니다.");
computerGet = 2;
}
}else{ // 당신이 가위와 보를 냈을 때.
comR = chance0();
if(comR == 1){
System.out.println("컴퓨터는 주먹을 냈습니다.");
computerGet = 1;
}else{
System.out.println("컴퓨터는 가위을 냈습니다.");
computerGet = 2;
}
}
}else if(comSum == 4){ // 컴퓨터가 주먹과 보를 냈을 때.
if(meSum == 3){ // 당신이 주먹과 가위를 냈을 때.
System.out.println("컴퓨터는 주먹을 냈습니다.");
computerGet = 1;
}else{ // 당신이 가위와 보를 냈을 때.
comR = chance4();
if(comR == 1){
System.out.println("컴퓨터는 주먹을 냈습니다.");
computerGet = 1;
}else{
System.out.println("컴퓨터는 보를 냈습니다.");
computerGet = 3;
}
}
}else if(comSum == 5){ // 컴퓨터가 가위와 보를 냈을 때.
if(meSum == 3){ // 당신이 주먹과 가위를 냈을 때.
comR = chance3();
if(comR == 1){
System.out.println("컴퓨터는 가위를 냈습니다.");
computerGet = 2;
}else{
System.out.println("컴퓨터는 보를 냈습니다.");
computerGet = 3;
}
}else{ // 당신이 주먹과 보를 냈을 때.
comR = chance4();
if(comR == 1){
System.out.println("컴퓨터는 가위를 냈습니다.");
computerGet = 2;
}else{
System.out.println("컴퓨터는 보를 냈습니다.");
computerGet = 3;
}
}
}
// 승패 결정.
if(computerGet == 1){
if(userOut == 1){
System.out.println("비겼습니다.");
draw++;
}else if(userOut == 2){
System.out.println("당신이 졌습니다.");
comWin++;
}else if(userOut == 3){
System.out.println("당신이 이겼습니다.");
userWin++;
}
}else if(computerGet == 2){
if(userOut == 2){
System.out.println("비겼습니다.");
draw++;
}else if(userOut == 3){
System.out.println("당신이 졌습니다.");
comWin++;
}else if(userOut == 1){
System.out.println("당신이 이겼습니다.");
userWin++;
}
}else if(computerGet == 3){
if(userOut == 3){
System.out.println("비겼습니다.");
draw++;
}else if(userOut == 1){
System.out.println("당신이 졌습니다.");
comWin++;
}else if(userOut == 2){
System.out.println("당신이 이겼습니다.");
userWin++;
}
}
}
// count++;
System.out.println();
}
System.out.println("당신은 " + userWin + "번 이겼습니다.");
System.out.println("컴퓨터는 " + comWin + "번 이겼습니다.");
System.out.println("비긴 횟수는 " + draw + " 회 입니다.");
}
// 확율 50%로 동일.
public static int chance0(){
int comOut = 0;
while(tem1 == tem2){
tem1 = (int)(Math.random()*50) + 1;
tem2 = (int)(Math.random()*50) + 1;
}
if(tem1 > tem2) comOut = 1;
else comOut = 2;
return comOut;
}
// 앞부분의 확율을 조금 크게 설정할 때.
public static int chance1(){
int comOut = 0;
while(tem1 == tem2){
tem1 = (int)(Math.random()*55) + 1; // 확율 55%.
tem2 = (int)(Math.random()*45) + 1; // 확율 45%.
}
if(tem1 > tem2) comOut = 1;
else comOut = 2;
return comOut;
}
// 뒷부분의 확율을 조금 크게 설정할 때.
public static int chance2(){
int comOut = 0;
while(tem1 == tem2){
tem1 = (int)(Math.random()*45) + 1;
tem2 = (int)(Math.random()*55) + 1;
}
if(tem1 > tem2) comOut = 1;
else comOut = 2;
return comOut;
}
// 앞부분의 확율을 크게 설정할 때.
public static int chance3(){
int comOut = 0;
while(tem1 == tem2){
tem1 = (int)(Math.random()*80) + 1; // 확율 80%.
tem2 = (int)(Math.random()*20) + 1; // 확율 20%.
}
if(tem1 > tem2) comOut = 1;
else comOut = 2;
return comOut;
}
// 뒷부분의 확율을 크게 설정할 때.
public static int chance4(){
int comOut = 0;
while(tem1 == tem2){
tem1 = (int)(Math.random()*20) + 1; // 확율 20%.
tem2 = (int)(Math.random()*80) + 1; // 확율 80%.
}
if(tem1 > tem2) comOut = 1;
else comOut = 2;
return comOut;
}
}
2. RUN
1회차 시작!!
왼손에 낼것 번호 선택 : 1)주먹 2)가위 3)보 --> 1
왼손은 을 내셨습니다.
오른손에 낼것 번호 선택 : 1)주먹 2)가위 3)보 --> 2
오른손은 가위을 내셨습니다.
컴퓨터가 왼손에 낸것은 --> 가위 | 오른손에 낸것은 --> 주먹
컴퓨터와 당신은 양손 모두 같은것을 냈습니다!!
2회차 시작!!
왼손에 낼것 번호 선택 : 1)주먹 2)가위 3)보 --> 1
왼손은 주먹을 내셨습니다.
오른손에 낼것 번호 선택 : 1)주먹 2)가위 3)보 --> 3
오른손은 보을 내셨습니다.
컴퓨터가 왼손에 낸것은 --> 주먹 | 오른손에 낸것은 --> 가위
당신은 주먹 과 보 중 하나를 내십시오. 1)주먹, 2)가위, 3)보
주먹 과 보 중에서 내세요!!
1
컴퓨터는 가위을 냈습니다.
당신이 이겼습니다.
3회차 시작!!
왼손에 낼것 번호 선택 : 1)주먹 2)가위 3)보 --> 1
왼손은 주먹을 내셨습니다.
오른손에 낼것 번호 선택 : 1)주먹 2)가위 3)보 --> 2
오른손은 가위을 내셨습니다.
컴퓨터가 왼손에 낸것은 --> 보 | 오른손에 낸것은 --> 가위
당신은 주먹 과 가위 중 하나를 내십시오. 1)주먹, 2)가위, 3)보
주먹 과 가위 중에서 내세요!!
2
컴퓨터는 보를 냈습니다.
당신이 이겼습니다.
당신은 2번 이겼습니다.
컴퓨터는 0번 이겼습니다.
비긴 횟수는 1 회 입니다.
'course > 지식인' 카테고리의 다른 글
[자바스크립트] 여러가지 방법으로 숫자를 해당 영문자에 대입. (0) | 2016.04.12 |
---|---|
[자바] 성적 출력부분 수정 요청. (0) | 2016.04.05 |
[자바] static 으로 선언된 전역변수의 메소드 활용. (0) | 2016.04.04 |