[英]Player Turn Based Card Game
目前,我有一個帶有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)?
我強烈建議您針對這種情況研究並實施狀態設計模式 。
狀態模式是一種行為軟件設計模式,它以面向對象的方式實現狀態機。 使用狀態模式,通過將每個單獨的狀態實現為狀態模式接口的派生類,並通過調用由模式的超類定義的方法來實現狀態轉換,來實現狀態機。
將您的玩家放置在一個數組中,然后可以執行plyGame(players[turn % players.length])
,如果您想更改順序,可以在players
數組中移動玩家,也可以執行plyGame(players[turn % players.length])
plyGame(players[players.length - 1 - turn % players.length])
。 plyGame(players[players.length - 1 - turn % players.length])
。
否則,您可以將您的播放器包含在列表中,並且將實現循環的ListIterator的變體(如果返回,則返回上一個索引之后的索引0,如果反向則返回到索引0之后的最后索引),並使用next()和previous()以獲取每個回合中的當前玩家。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.