Pickimino游戏(2人以上)

时间:2014-01-17 12:51:38

标签: java

我正在用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)))。有没有办法重新编写我的主代码,每次都有主动播放器?我是否必须导入新方法?

1 个答案:

答案 0 :(得分:1)

我建议您拥有一个包含Player对象的数据结构。如果这是一个基于回合的游戏,ArrayList将很好地工作,其变量是播放器的索引。当玩家完成转弯时,增加索引,然后检查是否需要回绕到零。

如果游戏不是基于回合制,那么某种类型的地图可以很好地获得正确的玩家对象。当我编写多人实时在线游戏时,我通常使用ConcurrentHashMap。

作为一般规则,如果您认为游戏需要是多人游戏而不是单人游戏,您需要在开始实施之前考虑到这一点,即使您首先实施单人游戏也是如此。