玩家回合制纸牌游戏

时间:2018-03-19 16:12:59

标签: java

目前我有一个简单的程序,有2个玩家,他们可以玩一些计算卡游戏。 目前我使用的播放器转动功能是

int turn=0;
    while(!gameCheck(p1,p2)) {
        if(turn%2==0) {
        plyGame(p1);}
        else {
        plyGame(p2);}
        turn++;

如果我想让玩家成为4名玩家,代码会变成这样:

 int turn=1;
    while(!gameCheck(p1,p2,p3,p4)) {
        if(turn%4==1) {
        plyGame(p1);}
        else if(turn%4==2){
        plyGame(p2);}
        else if(turn%4==3){
        plyGame(p3);}
        else {
        plyGame(p4);}
        turn++;

如果我添加特殊效果,例如反转玩家的顺序,我应该采取什么方法来扭转玩家顺序(如果当前是玩家3的转弯,则会发生随机事件以扭转顺序,下一个玩家成为玩家2,然后玩家1然后回到玩家4)?

2 个答案:

答案 0 :(得分:0)

我强烈建议您针对这种情况研究并实施state design pattern

状态模式是一种行为软件设计模式,它以面向对象的方式实现状态机。使用状态模式,通过将每个单独的状态实现为状态模式接口的派生类来实现状态机,并通过调用由模式的超类定义的方法来实现状态转换。

答案 1 :(得分:0)

将你的玩家放入阵列,然后你可以plyGame(players[turn % players.length]),如果你想改变顺序,你可以移动players阵列中的玩家或做plyGame(players[players.length - 1 - turn % players.length])之类的东西

否则你可以将你的玩家放在一个列表中你会实现一个循环的ListIterator的变体(在最后一个索引之后返回索引0,如果你反向则返回索引0之后的最后一个索引)并使用next ()和previous()每回合获得当前玩家。