簡體   English   中英

C ++中的剪刀石頭布循環方法

[英]Rock Paper Scissors looping method in C++

所以基本上我是在設計Rock-Paper-Scissors游戲。

我有三種選擇(移動)的方法,取決於他們的獲勝率。 讓我們把它叫做: methodA() methodB() methodC()

現在,我需要每30回合執行一次檢查,以檢查獲勝率。

我有一段這樣的代碼:

Move nextMove(){ //Move is a enum including Rock,Paper,Scissors
    Move makeMove;
    vector<float> checkWinRate = {winRateA,winRateB,winRateC};
    //saving my win rates into a vector and sort it
    std::sort(checkWinRate.begin(),checkWinRate.end()); 
    if (checkWinRate.back() == winRateA)
        makeMove = methodA();
    else if (checkWinRate.back() == winRateB)
        makeMove = methodB();
    else
        makeMove = methodC();
    //choose methods according to win rates
    return makeMove;
}

我現在正在做的是每次調用此函數時都要對其進行檢查。 但是,我的最終目標是讓它每30輪檢查一次,並在接下來的30輪中運行相同的方法,然后再次檢查。 聽起來很簡單,但我還是想不起來。

知道我在這里應該做什么嗎? 請幫忙。

您可以創建一個整數,每輪增加一個,當它達到29(30輪)時,請進行檢查,然后再次使其為零。 您的numOfRounds首先將為29,以便能夠在開始時輸入任意數字。

Move nextMove(static int numOfRounds){
    //...
    if ((checkWinRate.back() == winRateA) && numOfRounds == 29)
        makeMove = methodA();
        numOfRounds = 0;
    //...
    else{
        /*You need to choose a method here, my question is, will it
        break your original logic? I would choose randomly.*/
        numOfRounds++;
    }
    return makeMove;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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