编写可以玩流行的剪刀-石头-布游戏的程序。(剪刀可以剪布,石头可以砸剪刀,而布可以包石头。)程序提示用户随机产生一个数,这个数为 0、 1 或者 2,分别表示石头、剪刀和布。程序提示用户输入值 0、1 或者 2,然后显示一条消息,表明用户和计算机谁赢了游戏,谁输了游戏,或是打成平手。
package pack2;
import java.security.SecureRandom;
import java.util.Scanner;
public class Game {
public static void main(String[] args) {
try(Scanner input = new Scanner(System.in);) {
char flag;
do {
System.out.print("\nscissor (0), rock (1), paper (2): ");
System.out.println(game(input.nextInt()));
System.out.print("是否继续?(y/n): ");
flag = input.next().charAt(0);
}while(flag == 'Y' || flag == 'y');
}
}
//剪刀、石头、布游戏
public static String game(int guess) {
String[] g = {"scissor", "rock", "paper"};
int computer = new SecureRandom().nextInt(3);
if(guess < 0 || guess > 2)
throw new IllegalArgumentException("Error Guess: "+guess);
// if(guess == computer) //使用if-else语句处理判断
// return "The computer is "+g[computer]+". You are "+g[guess]+
// " too. It is a draw";
// else if(guess - computer == 1 || guess - computer == -2)
// return "The computer is "+g[computer]+". You are "+g[guess]+". You won";
// else
// return "The computer is "+g[computer]+". You are "+g[guess]+". You lost";
//创建一个字符串缓冲器并赋值引用
StringBuffer stringBuffer =
new StringBuffer("The computer is "+g[computer]+". You are "+g[guess]);
switch(guess - computer) { //使用switch语句处理判断
case 0: return stringBuffer.append(" too. It is a draw").toString();
case 1:
case -2:return stringBuffer.append(". You won").toString();
default:return stringBuffer.append(". You lost").toString();
}
}
}