/**
     *需求: 使用学过的知识,完成人-机对战的石头剪刀布游戏,要求:
        1、可以玩多局
        2、计算每局的得分,赢的一方加1分
        3、统计总局数
        4、游戏结束时,打印输出:总局数、双方的得分、最终的输赢
     * @param args
     */

package com.cd.小游戏;

import java.util.Random;
import java.util.Scanner;

public class MiniGame {

	/**
	 * 使用学过的知识,完成人-机对战的石头剪刀布游戏,要求:
		1、可以玩多局
		2、计算每局的得分,赢的一方加1分
		3、统计总局数
		4、游戏结束时,打印输出:总局数、双方的得分、最终的输赢
	 * @param args
	 */
	public static void main(String[] args) {
		//实例化一个键盘扫描对象
		Scanner input = new Scanner(System.in);
		//1、定义系统变量
		int count = 0; 			//游戏的局数
		String playerPerson; 	//人类玩家昵称
		String playRobot; 		//机器玩家昵称
		int scorePerson = 0; 	//人类玩家得分
		int scoreRobot = 0; 		//机器玩家得分
		String msg = null; 		//每局的消息
		String isLoop = null;   //循环变量
		String boxPerson = null; //人类玩家出拳
		String boxRobot = null;  //机器玩家出拳
		
		//实例化随机数生成器对象
		Random random = new Random();
		
		//2、程序初始化
		//输出游戏的玩法介绍
		System.out.println("------石头剪刀布游戏规则------");
		System.out.println("1.石头 VS 剪刀 ===>石头赢");
		System.out.println("2.石头 VS 布 	===>布赢");
		System.out.println("3.剪刀 VS 布 	===>剪刀赢");
		//接收游戏双方的昵称
		System.out.print("请输入你的昵称:");
		playerPerson = input.next();
		System.out.print("请输入机器玩家的昵称:");
		playRobot = input.next();
		
		//3、编写游戏逻辑代码
		do {
			//记录局数自增
			count++;
			System.out.println("=====石头剪刀布======");
			System.out.print("请出拳(1.石头 2.剪刀 3.布)");
			//人类玩家出拳
			boxPerson = input.next();
			//机器玩家出拳
			 boxRobot = (random.nextInt(3)+1)+"";
			 //处理当局的输赢的业务逻辑
				switch(boxPerson) {
				case "1"://人类出石头
					switch(boxRobot) {
					case "1"://系统出石头
						msg = "双方都出:【石头】,本局大和!";
						break;
					case "2"://系统出剪刀
						msg = "你出【石头】,系统出【剪刀】,你赢了!";
						scorePerson++;
						break;
					case "3"://系统出布
						msg = "你输了!你出【石头】,系统出【布】";
						scoreRobot++;
						break;
					}
					break;
				case "2"://人类出剪刀
					switch(boxRobot) {
					case "1"://系统出石头
						msg = "你输了:你出【剪刀】,系统出【石头】";
						scoreRobot++;
						break;
					case "2"://系统出剪刀
						msg = "双方都出:【剪刀】,本局大和!";
						break;
					case "3"://系统出布
						msg = "你赢了!你出【剪刀】,系统出【布】";
						scorePerson++;
						break;
					}
					break;
				case "3"://人类出布
					switch(boxRobot) {
					case "1"://系统出石头
						msg = "恭喜:你出【布】,系统出【石头】";
						scorePerson++;
						break;
					case "2"://系统出剪刀
						msg = "你输了:你出【布】,系统出【剪刀】";
						scoreRobot++;
						break;
					case "3"://系统出布
						msg = "双方都出:【布】,本局大和!";
						break;
					}
					break;
				default://提示出拳错误
					msg = "出拳错误!";
					break;
				}//外层switch结束
				//输出本局游戏结果
				System.out.println(msg);
				//一局游戏结束,询问是否继续		
				System.out.println();
				System.out.print("是否继续游戏?(y/n)");
				isLoop = input.next();
		}while(!"n".equalsIgnoreCase(isLoop));
		//4、游戏结束输出相关的游戏信息
		//三目运算符计算最终的输赢
		String result = scorePerson>scoreRobot?"恭喜你赢了!":(scorePerson==scoreRobot?"双方大和!":"对不起,你输给了机器玩家!");
		System.out.println("*********游戏结束***********");
		System.out.printf("游戏总局数:%d\n",count);
		System.out.printf("对战双方: %s VS %s",playerPerson,playRobot);
		System.out.printf("双方得分:%s得分:%d,%s得分:%d\n",playerPerson,scorePerson,playRobot,scoreRobot);
		System.out.println(result);

	}

}