问题:
猜拳小游戏,玩家出拳通过键盘录入的方式实现(0表示石头 1表示剪刀 2表示布)
电脑通过随机数的方式实现(0表示石头 1表示剪刀 2表示布)
当玩家或者电脑胜利三局,游戏结束,输出谁是赢家
思考:
怎样的条件算是获胜?
1.键盘录入可能会出错,所以做一个死循环 控制键盘录入正确为止 死循环才结束
2.电脑随机数出拳,r.nextInt(3);
3.int playerCount=0; //玩家赢了的次数
int computerCount=0; //电脑赢了的次数
用死循环包裹人和电脑猜拳的过程
4.
电脑 - 人
石头0 石头0 平局 结果 0-0=0
剪刀1 剪刀1 平局 结果 0-0=0
布2 布2 平局 结果 0-0=0
石头0 剪刀1 电脑赢 结果 0-1=-1
剪刀1 布2 电脑赢 结果 1-2=-1
布2 石头0 电脑赢 结果 2-0=2
石头0 布2 人赢 结果 0-2=-2
剪刀1 石头0 人赢 结果 1-0=1
布2 剪刀1 人赢 结果 2-1=1
代码如下:
import java.util.Random;
import java.util.Scanner;
public class A {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
Random r = new Random();
int playerCount = 0;
int computerCount = 0;
while (true) {
System.out.println("猜拳开始!\n请输入一个数,0表示石头 1表示剪刀 2表示布");
int playerNumber = sc.nextInt();
if (playerNumber < 0 || playerNumber > 2) {
System.out.println("输入有误,请从新输入");
} else {
switch (playerNumber) {
case 0:
System.out.println("玩家出石头");
break;
case 1:
System.out.println("玩家出剪刀");
break;
case 2:
System.out.println("玩家出布");
break;
}
int computerNumber = r.nextInt(3);
switch (computerNumber) {
case 0:
System.out.println("电脑出石头");
break;
case 1:
System.out.println("电脑出剪刀");
break;
case 2:
System.out.println("电脑出布");
break;
}
// 定义result 为电脑出拳数字减去玩家出拳数字,判断输赢,
int result = computerNumber - playerNumber;
if (result == 0) {
System.out.println("本局平局");
} else if (result == -1 || result == 2) {
System.out.println("本局电脑获胜");
computerCount++;
} else {
System.out.println("本局玩家获胜");
playerCount++;
}
System.out.println("目前比分 电脑VS玩家");
System.out.println(computerCount + ":" + playerCount);
// 当任意一方赢得次数达到三次,就最终获胜
if (computerCount == 3) {
System.out.println("比赛结束");
System.out.println("最终电脑获胜");
break;
} else if (playerCount == 3) {
System.out.println("比赛结束");
System.out.println("最终玩家获胜");
break;
}
}
}
}
}