Java 如何初始化多个播放器?

Java 如何初始化多个播放器?,java,class,Java,Class,早安/晚安。我正在用我自己的一些自定义类制作一个简单的游戏。我制作了玩家类,游戏只与一名玩家合作。我希望它创建一个版本,玩家可以输入一个数字,并创建一定数量的有名字的玩家。我目前的方式类似于单人模式的设置。我尝试了几种不同的方法,但每种方法都在循环的最后一次迭代之前重写了名称。如何让玩家添加更多玩家而不丢失数据 以下是我在主文件中的代码: public class WordSearch { public static void main(String[] args){ Sca

早安/晚安。我正在用我自己的一些自定义类制作一个简单的游戏。我制作了玩家类,游戏只与一名玩家合作。我希望它创建一个版本,玩家可以输入一个数字,并创建一定数量的有名字的玩家。我目前的方式类似于单人模式的设置。我尝试了几种不同的方法,但每种方法都在循环的最后一次迭代之前重写了名称。如何让玩家添加更多玩家而不丢失数据

以下是我在主文件中的代码:

public class WordSearch {

    public static void main(String[] args){
     Scanner scan = new Scanner(System.in);
     System.out.println("Welcome to the Word Search Game! What is your name?");
     String p_name = scan.nextLine();
     player mine = new player(p_name);
     System.out.println(mine.setName(p_name));
     System.out.println("Are you playing alone or with friends? Enter Yes or No!");
     String choice = scan.nextLine();

     if (choice.equals("Yes")|| choice.equals("yes")){
        System.out.println("How many people are you playing with?");
        int num_of_players = scan.nextInt();
        for (int i = 0; i < num_of_players+1; i++){
            System.out.print("Put their names in one at a time!");
            String p_name_2 = scan.nextLine();
            player friend = new player(p_name_2); //Will overwrite names
        }
     }
     else{
        System.out.println("Alrighty! Let's continue!");
     }
     System.out.println("Which board would you like to play?");
     String b_name = scan.nextLine();

     GameBoardClass playGame = new GameBoardClass(b_name);
     String[][] for_game = playGame.boardCreator(b_name);
    /*
     for(int i = 0; i < for_game.length; i++){
        for(int j = 0; j< for_game[i].length; j++){
            System.out.println(for_game[i][j] + " ");
        }
     }
    */

     System.out.println(playGame.displayBoard(for_game));
     System.out.println("The game is ON!");
     playGame.playerTurn();
公共类单词搜索{
公共静态void main(字符串[]args){
扫描仪扫描=新扫描仪(System.in);
System.out.println(“欢迎来到单词搜索游戏!你叫什么名字?”);
字符串p_name=scan.nextLine();
玩家地雷=新玩家(p_名称);
System.out.println(mine.setName(p_name));
System.out.println(“你是一个人玩还是和朋友玩?输入是或否!”);
字符串选择=scan.nextLine();
if(choice.equals(“Yes”)| choice.equals(“Yes”)){
System.out.println(“你和多少人一起玩?”);
int num_of_players=scan.nextInt();
对于(int i=0;i
我认为要解决这个问题,您应该创建一个类型为player的数组或ArrayList,这样您就有了一个位置来存储它们的名称。每次循环迭代前一个对象时,由于您没有将其存储在任何位置,因此它都会被覆盖并丢失。

好。因此,如果您希望您的游戏支持多个玩家,仅创建一个是不够的多个
player
对象。您还需要将它们放在某个地方…以便以后可以使用它们。(您可以使用数组、
列表、
地图以及可能的其他东西,具体取决于您打算如何使用它们。)

到目前为止,您所拥有的是:

    for (int i = 0; i < num_of_players+1; i++){
        System.out.print("Put their names in one at a time!");
        String p_name_2 = scan.nextLine();
        player friend = new player(p_name_2); //Will overwrite names
    }
for(int i=0;i
问题在于
friend
是一个局部变量。由于它是在
for
循环的
块中声明的,因此该变量将:

  • 为每个循环迭代重新声明,以及
  • 循环结束时超出范围(即离开)
  • 此外,由于
    朋友
    的类型是
    玩家
    ,因此它一次只能保存对一个
    玩家
    对象的引用

    因此,您需要:

  • 将声明移出循环
  • 选择一种类型(见上文!),它可以表示/保存
    player
    对象引用的集合
  • player
    实例添加到该集合中
  • 注意:我没有为您编写代码。您的学习经验应该包括学会权衡不同的做事方式,选择一种,并将其转换为代码


    另外,将类名
    player
    更改为
    player
    。类名应始终以大写字母开头。这是标准Java样式