我正在开始新的纸牌游戏。这将是非常基础的,但即使我不是编程新手,我也没有太多经验。
然而,这个纸牌游戏应该开始向用户询问将要玩的数量的玩家,并且我正在考虑制作玩家 {{1} }为了创建可以拥有Class
(另一个对象)和Card
的玩家。
但是当我从name
创建对象时,我必须指定class
名称,所以我应该怎么做呢?在这种情况下,我不知道有多少玩家(所以对象)我将不得不创建?
考虑一下:
玩家类
object
修改
当我们创建public Player {
private Card mCard;
private String mName
}
时,我们会给它Object
:
name
但是没有办法(至少我知道)动态创建具有不同名称的对象。
那么,如果我不知道名字,我怎么能创建一个对象(一个玩家)?
示例:
如果我有13个玩家,我该如何创建13个对象并停止。没有其他玩家对象。我之前说过,我可以尝试用这种方式制作一些可怕的东西:
Player objectName = new Player();
但它真的很难看,我真的不认为这是它应该的样子。那么如何创建每个具有不同名称的确切数量的对象?
答案 0 :(得分:0)
修改强>
You don't know how many variables you need
Player p1 = new Player();
Player p2 = new Player();
... // More players
创建一个数组就是为了解决这个问题。
int n = // set to number of players
Player[] players = new Player[n];
for (int i = 0; i < n; i++) {
players[i] = new Player();
}
players[0] // 1st player
players[1] // 2nd player
players[2] // 3rd player
players[n - 1] // nth player
但阵列有一些限制。最大的是你不能改变大小。通常最好使用List而不是数组。
int n = //set to number of players
List<Player> players = new ArrayList<>(); // Array list has an array inside but handles resizing for you.
for (int i = 0; i < n; i++) {
players.add(new Player());
}
players.get(0); // 1st player
players.get(1); // 2nd plyaer
列表或数组也更好。假设您需要在每个玩家上调用方法foo()
。
// The old way
p1.foo();
p2.foo();
p3.foo();
... // Getting tired of typing yet?
With a list
List<Player> players = new ArrayList<>();
// Add some players
for (Player player : players) {
player.foo(); // Call if once for each player
}