package FingerGuess;
/**
* Description:常量类
*
* @Author Fann
* @Data 2018/12/8
*/
public class Constant {
public static final int ROCK = 0;//A代表石头
public static final int SCISSORS = 1;//B代表剪刀
public static final int PAPER = 2;//C代表布
}
package FingerGuess;
import java.util.Random;
import java.util.Scanner;
/**
* Description:
*
* @Author Fann
* @Data 2018/12/8
*/
public class GuessFingerGame {
public int score_Player; //玩家分数
public int score_Computer;//电脑分数
Scanner in = new Scanner( System.in ); //用来让玩家输入
Random random = new Random( ); //随机产生当作电脑出的拳
//游戏开始,进行三次.
public void gameStart() throws Exception {
System.out.println("游戏开始:-----------------");
for (int i = 0; i < 3; i++) {
System.out.println("玩家第"+i+"次出拳(输入0代表石头,输入1代表剪刀,输入2代表布):");
int player = in.nextInt();
int computer = random.nextInt(3); //0-2
if(computer == Constant.ROCK){
System.out.println("电脑出拳为:0(石头)");
}else if(computer == Constant.SCISSORS){
System.out.println("电脑出拳为:1(剪刀)");
}else{
System.out.println("电脑出拳为:2(布)");
}
int result = compare( player,computer );
//判断比较的结果是什么,进行加分.
if(result == 1){ //玩家赢了,玩家加分
score_Player++;
}else if(result == -1){ //电脑赢了,电脑加分
score_Computer++;
}
}
//三次循环后,游戏结束.
gameEnd();
}
public void showScore(){
System.out.print("player的分数:"+score_Player+"玩家的分数:"+score_Computer);
}
/**
* 用来比较电脑和玩家的猜拳
* 返回1表示玩家赢 返回0表示平局 返回-1表示电脑赢
*/
public int compare(int player,int computer) throws Exception {
//参数校验
if(player < 0 || player > 2 || computer < 0 || computer > 2){
throw new Exception( "参数错误" );
}
if(player == Constant.ROCK){ //玩家为石头
if(computer == Constant.ROCK){
return 0; //电脑也为石头 返回平局.
}else if(computer == Constant.PAPER){
return -1; //电脑为布,返回电脑赢
}else{
return 1;
}
}
if(player == Constant.PAPER){ //玩家为布
if(computer == Constant.ROCK){
return 1; //电脑为石头,返回玩家赢
}else if(computer == Constant.PAPER){
return 0; //电脑也为布,返回平局.
}else{
return -1;
}
}
if(player == Constant.SCISSORS){ //玩家为剪刀
if(computer == Constant.SCISSORS){
return 0; //电脑也为剪刀,返回平局.
}else if(computer == Constant.ROCK){
return -1; //电脑为石头,返回-1.
}else{
return 1;
}
}
return 2;
}
/**
*游戏结束时,打印出结果.
*/
public void gameEnd(){
System.out.println("游戏结束:-------------");
if(score_Computer > score_Player){
System.out.println("电脑"+score_Computer+"分,玩家"+score_Player+"分, 电脑获胜!!");
}else if(score_Player == score_Computer){
System.out.println("电脑"+score_Computer+"分,玩家"+score_Player+"分, 两人平局!!");
}else{
System.out.println("电脑"+score_Computer+"分,玩家"+score_Player+"分, 玩家获胜!!");
}
}
}
package FingerGuess;
import java.util.Scanner;
/**
* Description:
*
* @Author Fann
* @Data 2018/12/8
*/
public class Main {
public static void main(String[] args) throws Exception {
//判断玩家是否要继续
Scanner in = new Scanner( System.in );
while (true){
GuessFingerGame game = new GuessFingerGame();
game.gameStart();
System.out.println("是否继续游戏 y/n?");
if(in.nextLine().equalsIgnoreCase( "n" )){
break;
}
}
System.out.println("程序退出");
}
}