目前我有一个简单的程序,有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)?
答案 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()每回合获得当前玩家。