我正在用Java创建一个名为Pickomino的游戏。此代码适用于一个玩家,并且正常运行。
public static void main(String[] args) {
Player player1 = new Player(); // Dhmiourgeia enws paikth
Player player2 = new Player();
Board board1 = new Board(); // Dhmiourgeia tou board
/** Crazy Tests ( gia 2 gurous sunexomenous o idios paikths) */
//for (int z = 0; z < 2; z++) {
// Ripsh twn zariwn
while ((player1.isPlayOn()) && (remainingRolls(ROLLS,counterOfDice) > 0)) {
System.out.print("Oi zaries sou einai: ");
for (int i = 0; i < remainingRolls(ROLLS,counterOfDice); i++) {
rolls[i] = randomRoll();
System.out.print(rolls[i] + " ");
}
if (noMoreRolls(rolls,pickedDice))
break; // Telos gurou tou paikth, se periptwsh pou den epitrepetai na shkwsei alla zaria apo to trapezi
System.out.print("\nDialekse ena zari / paketo omoiwn zariwn apo ta parapanw: ");
int choice = input.nextInt();
// Elegxos viable kinhshs tou paikth
while (player1.isPicked(choice, pickedDice)) {
System.out.println("To exeis hdh auto.");
System.out.print("Dialekse ena allo zari / paketo omoiwn zariwn apo ta parapanw: ");
choice = input.nextInt();
}
// Topothethsh zariwn epiloghs sthn stiva tou paikth
for (int i = 0; i < rolls.length; i++) {
if (choice == rolls[i]) {
pickedDice[counterOfDice] = rolls[i];
counterOfDice++;
}
rolls[i] = 0;
}
System.out.println(Arrays.toString(pickedDice));
// Prosthesh zariwn
sumOfDice = currentSumOfDice(pickedDice);
System.out.println("Mexri stigmh to athrisma einai " + sumOfDice);
// Termatismos gurou gia ton current paikth
if ((sumOfDice > 20) && (remainingRolls(ROLLS,counterOfDice) > 0) && (player1.canIPick(pickedDice))) {
System.out.print("Sunexizoume? ");
choice = input.nextInt();
player1.isEndOfYourTurn(choice);
}
}
// Emfanish apotelesmatos
//System.out.println("sum = " + sumOfDice);
// Check pontwn me pontous sto trapezi **PREPEI NA ALLAKSEI**
if (player1.canIPick(pickedDice)) {
board1.removeAWorm(sumOfDice);
player1.setPoints( (sumOfDice - 17) / 4 );
}
System.out.println("kartes = " + board1.getRemainingWorms());
System.out.println("\nSe auton ton guro phres: " + player1.getPoints() + " skoulikia.");
/** Crazy Tests*/
//resetRolls();
//for (int i = 0; i < pickedDice.length; i++) {
//pickedDice[i] = 0;
//}
//player1.setPlayOn();
//}
}
我的问题是:如果我需要再引进2名玩家,我该怎么办?我知道我可以再多次使用代码2并使用 switch 进行游戏,但我发现它有点愚蠢。 我的问题是,我可以看到只有player1的支票(e.x。 while(player1.isPicked(choice,pickedDice)))。有没有办法重新编写我的主代码,每次都有主动播放器?我是否必须导入新方法?
答案 0 :(得分:1)
我建议您拥有一个包含Player对象的数据结构。如果这是一个基于回合的游戏,ArrayList将很好地工作,其变量是播放器的索引。当玩家完成转弯时,增加索引,然后检查是否需要回绕到零。
如果游戏不是基于回合制,那么某种类型的地图可以很好地获得正确的玩家对象。当我编写多人实时在线游戏时,我通常使用ConcurrentHashMap。
作为一般规则,如果您认为游戏需要是多人游戏而不是单人游戏,您需要在开始实施之前考虑到这一点,即使您首先实施单人游戏也是如此。