2016-12-05 79 views
0

遊戲中有4名玩家。每個玩家在回合結束後輪流卡牌沙皇。我已經在向量中存儲了分配給每個玩家的牌。我將如何在這場比賽中創造輪次?我會在主函數中創建一個循環來運行4次並清除向量並在循環中調用我的函數嗎? 這裏是我的主要功能:卡片遊戲中的回合

int main() 
{ 

vector<string> player; 
vector<string> blackCards; 
vector<string> whiteCards; 
vector<string> CardCzar; 
vector<string> player2; 
vector<string> player3; 
vector<string> player4; 
int sz = 0; 
int i = 0; 
string n; 

     for(i=0;i<4;i++) 
     { cout<<"Enter name for player"<<" "<< i+1 << " : "<<" "; 
     cin>> n; 
     player.push_back(n); 
    } 

BlackCards(blackCards); 
WhiteCards(whiteCards); 
order(player); 
sz = player.size(); 
cout<<" "<<endl; 
cout<<"*"<<player[sz - 4]<<" , you are the card czar for this round *" <<endl; 

assign_bcards(blackCards , CardCzar, player); 
assign_wcards(whiteCards, player2, player3, player4, player); 





    return 0; 
} 
+0

具體什麼並不在當前的方法工作? – AndyG

+0

遊戲將運行一輪。我需要的是這輪比賽結束,所以選手2將成爲卡沙皇,其餘的將獲得普通白卡。這應該重複,直到所有4名球員都成爲卡沙皇。 – Darklord098

+0

將當前的'main()'重命名爲'game_round()'。然後編寫一個新的'main()',在循環中調用它。 – hyde

回答

0

爲了讓回合你可以有能砸到每個玩家爲了一個圓形指示燈循環。一個簡單的數值的方式來做到這一點是

int currentCzar = 0; 
while(gameIsNotOver) 
{ 
    *Do game stuff* 
    currentCzar = (currentCzar+1) % numPlayers; 
} 

由於currentCzar總是比numPlayers少

(currentCzar+1) % numPlayers; 

總是會返回一個值c其中

0 <= c <= numPlayers-1 

然後只是有一些其他的標誌告訴你什麼時候停止打球就像勝利條件。 numPlayers也是數組的大小。

編輯: 你可能還想改變你的數據結構的方式。也許通過使玩家一個類或結構,這樣就可以有類似

class Player{ 
    vector<string> whiteCards; 
    vector<string> wonBlackCardsl 
    //Boilerplate class code 
} 
vector<Player> players; 
*assign cards and create players* 
int currentCzar = 0; 
while(gameIsNotOver) 
{ 
    *Do game stuff* 
    //Have players[currentCzar] choose a black card 
    //Have every other player put down a white card 
    currentCzar = (currentCzar+1) % numPlayers; 
} 

然後,你可以對夫婦的球員送到他們手中以更直接的方式

+0

作者是'game stuff'你是指我的函數調用?而這個循環將在主要功能? – Darklord098

+0

遊戲的實際機制,就像你知道現在的沙皇是誰,然後你可以決定誰選擇黑卡,然後你可以讓其他人放下他們的白卡,等等。該計數器將允許您遍歷玩家,而不必擔心索引超出界限錯誤。所以這會給你你的回合機制。 *除了確定誰是下一個沙皇之外,遊戲內容*將是一輪中發生的一切 –

+0

我寧可不使用課程。我有一個OOP的一般概念,但它不在我的CS100課程中。但就它而言,我的建議是否會失效?要在主函數中創建一個循環(可能就像你建議的那樣),它將包含我所有的函數調用,然後在最後清除每個玩家的所有向量? – Darklord098