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