簡體   English   中英

玩家回合制紙牌游戲

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM