如何将未定义时间的数字附加到新变量[Java]



我在汽车游戏《战争》的基础上制作了一款工作卡牌游戏。它虽然很好,但我是围绕着只有两名球员的想法来做的。为了让程序确定绘制的卡片及其值,我做了一堆布尔值来检查字符串是否是某张卡片,这样我就可以在之后分配值。

                boolean checkAce = deckList.get(0).startsWith("Ace");
                boolean checkTwo = deckList.get(0).startsWith("Two");
                boolean checkThree = deckList.get(0).startsWith("Three");
                boolean checkFour = deckList.get(0).startsWith("Four");
                boolean checkFive = deckList.get(0).startsWith("Five");
                boolean checkSix = deckList.get(0).startsWith("Six");
                boolean checkSeven = deckList.get(0).startsWith("Seven");
                boolean checkEight = deckList.get(0).startsWith("Eight");
                boolean checkNine = deckList.get(0).startsWith("Nine");
                boolean checkTen = deckList.get(0).startsWith("Ten");
                boolean checkJack = deckList.get(0).startsWith("Jack");
                boolean checkQueen = deckList.get(0).startsWith("Queen");
                boolean checkKing = deckList.get(0).startsWith("King");

然后,无论哪个布尔值为真,都会指定一个特定的值,以便将其与第二个玩家进行比较。所以我每个人都有两次这个代码。

我现在的困境是,我需要修改它,以便与多个玩家一起工作,这些玩家是在程序启动后通过用户提示确定的。经过一番思考,我决定,如果可能的话,唯一的方法是在不完全重写的情况下让它发挥作用,那就是我可以设置一个for循环来运行播放的次数。

为了实现这一点,我需要能够在每个布尔值(P1、P2、P3等)旁边附加一个数字,这样它就会读取checkAceP3。但我不确定是否有一个函数允许这样做。有人能给我指正确的方向吗?

您应该在class Player中定义播放器逻辑。通过这种方式,您可以创建任意数量的播放器实例。它们中的每一个都有自己的所有变量的副本。

例如,您定义了这样一个Player类:

class Player {
     String _name;
     int _score; 
}

然后,您可以在运行时定义任意数量的玩家:

List<Player> _playerList = new ArrayList();
_playerList.add(new Player("player1"));
_playerList.add(new Player("player2"));
_playerList.add(new Player("player3"));
...
boolean gameOver = false;
// play your game
while (!gameOver) {
    for (Player player : _playerList) {
        player.playTurn();
        if (gameOver()) {
             gameOver = true;
             break;
        }
    }
}
// loop through the players and determine the winner
for (Player player : _playerList) {
     ...
}    

最新更新