gpt4 book ai didi

java - 石头剪刀布游戏 - 效率?

转载 作者:行者123 更新时间:2023-11-30 03:09:56 28 4
gpt4 key购买 nike

我为我的 CS 课(高中四年级)制作了一个石头剪刀布游戏,我的老师给我的 shell 文件指出我必须将 do while 循环放入运行者中,但我不明白为什么?我的代码可以工作,但她说最好把它写在运行者中?为什么?另外,怎样才能写得更有效率呢? (注:我是一个完全的初学者,在参加这门类(class)之前,没有任何编码知识。还没有学习递归。)

我的代码:

import java.util.Random;
import java.util.Scanner;
public class RockPapersScissors {
private String user;
private int computer;

public RockPapersScissors(){
setPlayers(" ");
}

public RockPapersScissors(String s){
setPlayers(s);
}

public void setPlayers(String s){
user=s;
}

public void play(){
Scanner keyboard = new Scanner(System.in);
Random num = new Random();
int numUser = 0;
String playAgain = "";
do{
System.out.print("Rock-Paper-Scissors - pick your weapon[R,P,S] :: ");
user = keyboard.next();
System.out.println("player has "+ user);

switch(user){
case "R": numUser = 0; break;
case "P": numUser = 1; break;
case "S": numUser = 2; break;
case "r": numUser = 0; break;
case "p": numUser = 1; break;
case "s": numUser = 2; break;
default: System.out.println("Please enter a valid choice. Restart game.\n"); continue;
}

computer = num.nextInt(3);

switch(computer){
case 0: System.out.println("computer has R"); break;
case 1: System.out.println("computer has P"); break;
case 2: System.out.println("computer has S"); break;
}

if(numUser == computer){
System.out.println("!Draw Game!");
}else if(numUser == 0){
if(computer == 1){
System.out.println("!Computer Wins <<Paper Covers Rock>>!");
}if(computer == 2){
System.out.println("!Player Wins <<Rock Breaks Scissors>>!");
}
}else if(numUser == 1){
if(computer == 2){
System.out.println("!Computer Wins <<Scissors cuts paper>>!");
}if(computer == 0){
System.out.println("!Player Wins <<Paper Covers Rock>>!");
}
}else if(numUser == 2){
if(computer == 0){
System.out.println("!Computer Wins <<Rock Breaks Scissors>>!");
}if(computer == 1){
System.out.println("!Player Wins <<Scissors cuts paper>>!");
}
}

System.out.print("\nDo you want to play again? ");
playAgain = keyboard.next();
System.out.println("\n");

}while(playAgain.equals("y") || playAgain.equals("yes") || playAgain.equals("Y"));

System.out.println("Goodbye.");
keyboard.close();

}
}

我的运行者:

public class RPSRunner {

public static void main(String[] args) {
RockPapersScissors test = new RockPapersScissors();
test.play();
}
}

最佳答案

这完全取决于“游戏”的概念。如果假设游戏是单轮RPS,不记分,那么老师规定的解决方案就很好。

但是,一旦您需要在回合之间保留某种形式的 session 状态(例如得分),那么您就必须做出设计决策:运行者是否包含保留得分的逻辑,或者游戏是否包含?通常,我们会让游戏记录分数,而运行者应该尽可能少地了解游戏的内部逻辑。

在另一种情况下,系统可能会要求您扩展运行程序,以便您可以在两种不同的游戏之间进行选择。第二个游戏可能是“黑 jack ”,在这种情况下,您不仅需要记录分数,还需要跟踪已经打出的牌。正如您所看到的,运行者的复杂性可能会随着老师的方法而不必要地增加。

老师应该给你更好的要求,或者你应该提出要求。顺便说一下,这种情况在现实世界中经常发生。

关于java - 石头剪刀布游戏 - 效率?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33813832/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com