/**
*需求: 使用学过的知识,完成人-机对战的石头剪刀布游戏,要求:
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);
}
}