我正在进行Uno Card游戏(在C中),我按照以下顺序拥有循环队列:
用户 - > player1 - > player2 - > player3
如果任何玩家在牌桌上放置一张改变游戏顺序的牌,则会反方向。
例如,如果用户放入“反向”牌,我将不得不将每个玩家队列出局,并将其排队:
enqueue(player3);
enqueue(player2);
enqueue(player1);
enqueue(user);
如果是player1,那么每个人都会出局:
enqueue(user);
enqueue(player3);
enqueue(player2);
enqueue(player1);
如果是player2,那么每个人都会出局:
enqueue(player1);
enqueue(user);
enqueue(player3);
enqueue(player2);
如果是player3,那么每个人都会出局:
enqueue(player2);
enqueue(player1);
enqueue(user);
enqueue(player3);
太可怕了,不是吗?就这样说吧,就像任何一个“if”一样。我知道当有人把“反向”牌放在第一件事就是让每个人都出名,但在那之后,有更好的方法可以按照上面的想法排队吗?
答案 0 :(得分:0)
你能不能用一个简单的索引和一个步骤(+1或-1)吗?
index = {player1,player2,player3,user} step = {顺时针,逆时针}
播放反向卡时,只需更改步骤的符号?
直到结束
显然,索引需要边界检查等,但你得到了主体