-面向对象高级训练任务
通过控制台方式实现一个人机对战的猜拳游戏,
用户通过输入(1.剪刀 2.石头 3.布),机器随机生成(1.剪刀 2.石头 3.布)
胜者积分,
n 局以后通过积分的多少判定胜负。
import java.util.Scanner;
public class Game {//public class 类名 Game 定义 属性
private int round;//总回合数
private int scoreUser;//玩家分数
private int scoreRobot;//电脑分数
public Game(int round) {
super();
this.round = round;
//因为构造方法中需要我们设置的仅有回合数,玩家和电脑分数由代码运行结果递加,所以要设置初始值0;
scoreUser = 0;//
scoreRobot = 0;
}
public int getRound() {
return round;
}
public void setRound(int round) {
this.round = round;
}
public int getScoreUser() {
return scoreUser;
}
public void setScoreUser(int scoreUser) {
this.scoreUser = scoreUser;
}
public int getScoreRobot() {
return scoreRobot;
}
public void setScoreRobot(int scoreRobot) {
this.scoreRobot = scoreRobot;
}
public void gameDetail() {// public void 类名 gameDetail 定义游戏猜拳方法
Scanner input = new Scanner(System.in);
System.out.println("猜拳游戏开始,游戏局数为:"+round+"局");
int gameRound = 1;// 默认值 第一局
while (gameRound<=round) {
System.out.println();
System.out.println("========当前为第"+gameRound+"局========");
System.out.println("请输入数字:1---剪刀,2---石头,3---布");
int userNumber = input.nextInt();//定义 玩家输入方法,数字 代表剪刀石头布;
System.out.println();
if(userNumber<0 || userNumber>3) {
System.out.println("你输入的数字有误,请重新输入");
continue;
}
System.out.println("玩家输入的是:");
switch (userNumber) {
case 1:
System.out.println("剪刀");
break;
case 2:
System.out.println("石头");
break;
case 3:
System.out.println("布");
break;
}
int robotNumber = (int)(Math.random()*3+1);//定义电脑输入方法,随机生成1,2,3 三个数字
System.out.println("电脑输入的是:");
switch (robotNumber) {
case 1:
System.out.println("剪刀");
break;
case 2:
System.out.println("石头");
break;
case 3:
System.out.println("布");
break;
}
if(userNumber == robotNumber) {
System.out.println("平局");
gameRound++;//回合加一
}else if((userNumber ==1&&robotNumber ==2) ||( userNumber ==2&&robotNumber==3) || (userNumber==3&&robotNumber == 1)) {
System.out.println("电脑赢,加一分");
gameRound++;
scoreRobot++;//电脑分数加一
}else {
System.out.println("玩家赢,加一分");
gameRound++;
scoreUser++;//玩家分数加一
}
System.out.println();
System.out.println("当前比分为:"+"玩家:"+scoreUser+"分"+" "+"电脑:"+scoreRobot+"分");
}
if(scoreUser>scoreRobot) {//判断玩家和电脑的分数
System.out.println("玩家获胜");
}else if(scoreUser<scoreRobot) {
System.out.println("电脑获胜");
}else {
System.out.println("平局");
}
}
}
调用方法测试:
public class GameTest {
public static void main(String[] args) {
Game test = new Game(5);
test.gameDetail();
}
}
输出结果如下:
猜拳游戏开始,游戏局数为:5局
========当前为第1局========
请输入数字:1---剪刀,2---石头,3---布
1
玩家输入的是:
剪刀
电脑输入的是:
石头
电脑赢,加一分
当前比分为:玩家:0分 电脑:1分
========当前为第2局========
请输入数字:1---剪刀,2---石头,3---布
2
玩家输入的是:
石头
电脑输入的是:
布
电脑赢,加一分
当前比分为:玩家:0分 电脑:2分
========当前为第3局========
请输入数字:1---剪刀,2---石头,3---布
3
玩家输入的是:
布
电脑输入的是:
布
平局
当前比分为:玩家:0分 电脑:2分
========当前为第4局========
请输入数字:1---剪刀,2---石头,3---布
4
你输入的数字有误,请重新输入
========当前为第4局========
请输入数字:1---剪刀,2---石头,3---布
2
玩家输入的是:
石头
电脑输入的是:
布
电脑赢,加一分
当前比分为:玩家:0分 电脑:3分
========当前为第5局========
请输入数字:1---剪刀,2---石头,3---布
1
玩家输入的是:
剪刀
电脑输入的是:
布
玩家赢,加一分
当前比分为:玩家:1分 电脑:3分
电脑获胜