gpt4 book ai didi

java - 剪刀石头布游戏(菜单法)

转载 作者:行者123 更新时间:2023-11-30 02:58:46 28 4
gpt4 key购买 nike

正如标题中所说,我正在尝试创建一个以菜单作为方法的 RPS 游戏,问题是我不知道如何在任何时候从该菜单调用输入。为了更好的想法,这是我的代码:

import java.util.Scanner;
import java.util.Random;

public class RockPaperScissors
{
public static void main (String [] args)
{
Scanner keyboard = new Scanner (System.in);
String player1choice, player1Name;
int mainMenu,subMenu;
String again;
player1Name = "";


welcomeBanner ();
mainMenu = getMenu (keyboard);


if (mainMenu == 1)
{
keyboard.nextLine();
player1Name = getAName (keyboard);

for (int i = 0; i < 50; ++i) System.out.println();
main (null);
}

if (mainMenu == 2)
{
System.out.println("Welcome "+player1Name); //add name input
subMenu =getsubMenu (keyboard);
System.out.println("You have chosen: "); //add option chosen

System.out.println("Cpu has got, It's a Tie!");//cpuChoice add


}

if (mainMenu == 3)
{
keyboard.nextLine();
String exitRequest;
System.out.print("Are you sure you want to exit? (Y/N): ");
exitRequest = keyboard.nextLine ();
if (exitRequest.equals("y") || exitRequest.equals("Y"))
{
System.out.println("Good Bye!");
System.exit(0);
}
else if (exitRequest.equals("n") || exitRequest.equals("N"))
{
for (int i = 0; i < 50; ++i) System.out.println();
main(null);
}

}
}
static void welcomeBanner()
{
for (int i = 0; i < 60; i++)
{
System.out.print('*');
}
System.out.println("");
System.out.println("* Welcome To The Rock, Paper, Scissors Game *");
System.out.println("*----------------------------------------------------------*");
System.out.println("* Created by: Jonathan Gutierrez, and I am NoxBot! *");
for (int i = 0; i < 60; i++)
{
System.out.print('*');
}
System.out.println("");
System.out.println("");
}
static int getMenu (Scanner aKeyboard)
{
int playermenuChoice;
System.out.println("1. Enter Player Name");
System.out.println("2. Play a Game");
System.out.println("3. Exit Application");
System.out.println("");
System.out.print("Enter your choice: ");
playermenuChoice = aKeyboard.nextInt();
return playermenuChoice;

}
static int getsubMenu (Scanner aKeyboard)
{
int submenuChoice;
System.out.println("Enter 1 for Rock");
System.out.println("Enter 2 for Paper");
System.out.println("Enter 3 for Scissors");
System.out.println("");
System.out.print("Enter choice: ");
submenuChoice = aKeyboard.nextInt();
return submenuChoice;
}
static String getAName (Scanner aKeyboard)
{
String player1Info;
System.out.print("Enter your name: ");
player1Info = aKeyboard.nextLine ();
return player1Info;
}
static String computerChoice ()
{
String cpuChoice;
cpuChoice = "";
Random randomNumbers = new Random();
int cpu = randomNumbers.nextInt (2) + 1;
switch (cpu)
{
case 1:
cpuChoice = "Rock";
break;
case 2:
cpuChoice = "Paper";
break;
case 3:
cpuChoice = "Scissors";
break;
}
return cpuChoice;
}

因此,当玩家选择选项 1 时,程序会要求输入玩家的姓名,并且我想在任何时候使用该输入(特别是当 mainMenu ==2 时)。我怎样才能做到这一点?

编辑:这是我的新代码:

import java.util.Scanner;
import java.util.Random;
public class RockPaperScissors
{
public static void main (String [] args)
{
Scanner keyboard = new Scanner (System.in);
String player1choice, player1Name, subMenu;
int mainMenu;
String again;
player1Name = "";

welcomeBanner ();
mainMenu = getMenu (keyboard);

if (mainMenu == 1)
{
keyboard.nextLine();
player1Name = getAName (keyboard);

for (int i = 0; i < 50; ++i) System.out.println();
welcomeBanner ();
mainMenu = getMenu (keyboard);
System.out.println("");
System.out.println("Welcome " + player1Name);
System.out.println("");

}

if (mainMenu == 2)
{

subMenu =enterPlayersChoice (keyboard);
keyboard.nextLine();
String cmpu = computerChoice ();
for(int i = 0; i < 3; i ++)

if (subMenu.equals(cmpu))
System.out.println("It's a tie!");
else if (subMenu.equals("rock"))
if (cmpu.equals("scissors"))
System.out.println("Rock crushes scissors. You win!!");
else if (cmpu.equals("paper"))
System.out.println("Paper eats rock. You lose!!");
else if (subMenu.equals("paper"))
if (cmpu.equals("scissors"))
System.out.println("Scissor cuts paper. You lose!!");
else if (cmpu.equals("rock"))
System.out.println("Paper eats rock. You win!!");
else if (subMenu.equals("scissors"))
if (cmpu.equals("paper"))
System.out.println("Scissor cuts paper. You win!!");
else if (cmpu.equals("rock"))
System.out.println("Rock breaks scissors. You lose!!");
else System.out.println("Invalid user input.");
System.out.println("");


}

if (mainMenu == 3)
{
keyboard.nextLine();
String exitRequest;
System.out.print("Are you sure you want to exit? (Y/N): ");
exitRequest = keyboard.nextLine ();
if (exitRequest.equals("y") || exitRequest.equals("Y"))
{
System.out.println("Good Bye!");
System.exit(0);
}
else if (exitRequest.equals("n") || exitRequest.equals("N"))
{
for (int i = 0; i < 50; ++i) System.out.println();
main(null);
}

}
}
static void welcomeBanner()
{
for (int i = 0; i < 60; i++)
{
System.out.print('*');
}
System.out.println("");
System.out.println("* Welcome To The Rock, Paper, Scissors Game *");
System.out.println("*----------------------------------------------------------*");
System.out.println("* Created by: Jonathan Gutierrez, and I am NoxBot! *");
for (int i = 0; i < 60; i++)
{
System.out.print('*');
}
System.out.println("");
System.out.println("");
}
static int getMenu (Scanner aKeyboard)
{
int playermenuChoice;
System.out.println("1. Enter Player Name");
System.out.println("2. Play a Game");
System.out.println("3. Exit Application");
System.out.println("");
System.out.print("Enter your choice: ");
playermenuChoice = aKeyboard.nextInt();
return playermenuChoice;

}
public static String enterPlayersChoice(Scanner aKeyboard)
{
String input = "";
System.out.print("You have a choice of picking rock, paper, or scissors: ");
input = aKeyboard.nextLine();
String inputLower = input.toLowerCase();
return inputLower;
}
static String getAName (Scanner aKeyboard)
{
String player1Info;
System.out.print("Enter your name: ");
player1Info = aKeyboard.nextLine ();
return player1Info;
}
public static String computerChoice ()
{
String cpuChoice;
cpuChoice = "nothing";
Random randomNumbers = new Random();
int cpu = randomNumbers.nextInt (2) + 1;
switch (cpu)
{
case 1:
cpuChoice = "rock";
break;
case 2:
cpuChoice = "paper";
break;
case 3:
cpuChoice = "scissors";
break;
}
return cpuChoice;
}

}为了完成这个,我希望游戏显示一条消息,无论玩家获胜还是失败,但它被跳过(mainMenu ==2)有什么想法吗?

最佳答案

这是一种以不同方式重新排列现有应用程序的方法。一些主要更改包括使除 main 方法之外的所有方法都变为非静态,以及为应用程序的入口点创建一个 RockPaperScissorsNew 对象。我还添加了类变量,因此您无需将 Scanner 作为对象传递给所有方法。

为了回答您最初的问题:如何重用用户输入的输入,我提供的解决方案是在类变量中保留该信息。

import java.util.Random;
import java.util.Scanner;


public class RockPaperScissorsNew {

//Class variables
Scanner keyboard;
String player1choice, player1Name; //Name will be stored here.
int mainMenu,subMenu;

public RockPaperScissorsNew()
{
keyboard = new Scanner(System.in);
welcomeBanner(); //Display the welcome banner once.
while(true) //Repeatedly display the main menu.
getChoice(); //Get the user's choice
}

public void getChoice()
{
int choice = -1; //Set choice to fail first.
while (choice > 3 || choice < 0) //Wait until user choice passes.
{
choice = getMenu();
}
if (choice == 1) { //Choose your sub option.
getAName(); // Get the user name.
System.out.println("Your name is " + player1Name); //Saved
}
if (choice == 2)
getsubMenu();
if (choice == 3)
System.exit(0);
}

public void welcomeBanner()
{
for (int i = 0; i < 60; i++)
{
System.out.print('*');
}
System.out.println("");
System.out.println("* Welcome To The Rock, Paper, Scissors Game *");
System.out.println("*----------------------------------------------------------*");
System.out.println("* Created by: Jonathan Gutierrez, and I am NoxBot! *");
for (int i = 0; i < 60; i++)
{
System.out.print('*');
}
System.out.println("");
System.out.println("");
}

public int getMenu ()
{
int playermenuChoice;
System.out.println("1. Enter Player Name");
System.out.println("2. Play a Game");
System.out.println("3. Exit Application");
System.out.println("");
System.out.print("Enter your choice: ");
playermenuChoice = Integer.parseInt(keyboard.nextLine().trim());
return playermenuChoice;
}

public int getsubMenu ()
{
int submenuChoice;
System.out.println("Enter 1 for Rock");
System.out.println("Enter 2 for Paper");
System.out.println("Enter 3 for Scissors");
System.out.println("");
System.out.print("Enter choice: ");
submenuChoice = Integer.parseInt(keyboard.nextLine().trim());
return submenuChoice;
}

//This method has been changed to use the class variable, and no longer
//returns a string.
public void getAName ()
{
//String player1Info;
System.out.print("Enter your name: ");
player1Name = keyboard.nextLine ();
//return player1Info;
}

public String computerChoice ()
{
String cpuChoice;
cpuChoice = "";
Random randomNumbers = new Random();
int cpu = randomNumbers.nextInt (2) + 1;
switch (cpu)
{
case 1:
cpuChoice = "Rock";
break;
case 2:
cpuChoice = "Paper";
break;
case 3:
cpuChoice = "Scissors";
break;
}
return cpuChoice;
}

public static void main(String...args)
{
new RockPaperScissorsNew();
}
}

关于java - 剪刀石头布游戏(菜单法),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36478238/

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