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样式