首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >重构重复的guard语句

重构重复的guard语句
EN

Stack Overflow用户
提问于 2013-02-04 15:10:42
回答 1查看 101关注 0票数 1

我已经定义了一个计算获胜几率并返回支付给玩家的金额的方法。我最初写这是完成这项任务的最明显的方法,但我真的想知道重构它的最好方法,以最大限度地减少计算机正在执行的工作量。下面是我的函数:

代码语言:javascript
复制
int getPay(int winningOdds, int payOut)
{
    winningOdds = rand() % MAXIMUM_ODDS + MINIMUM_ODDS;

    if(winningOdds == 1)
    {
        payOut = 4000;
        printf("Jackpot!  - %d\n", payOut);
    }
    else if(winningOdds <= 2)
    {
        payOut = 1000;
        printf("Coins won - %d\n", payOut);
    }
    else if(winningOdds <= 3)
    {
        payOut = 500;
        printf("Coins won - %d\n", payOut);
    }
    else if(winningOdds <= 40)
    {
        payOut = 100;
        printf("Coins won - %d\n", payOut);
    }
    else if(winningOdds <= 50)
    {
        payOut = 50;
        printf("Coins won - %d\n", payOut);
    }
    else if(winningOdds <= 75)
    {
        payOut = 25;
        printf("Coins won - %d\n", payOut);
    }
    else if(winningOdds <= 1000)
    {
        payOut = 10;
        printf("Coins won - %d\n", payOut);
    }
    else if(winningOdds <= 3000)
    {
        payOut = 5;
        printf("Coins won - %d\n", payOut);
    }
    else if(winningOdds <= 5000)
    {
        payOut = 3;
        printf("Coins won - %d\n", payOut);
    }
    else if(winningOdds <= 10000)
    {
        payOut = 1;
        printf("Coins won - %d\n", payOut);
    }

    return payOut;
 }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-04 15:19:27

尝试此样式,您需要填充Payout数组

代码语言:javascript
复制
struct Payout{
    int winningOdds, payOut;
};

int getPay(int winningOdds, int payOut)
{
    Payout payout[] = {{1,4000},{2,1000}....};
    int numElem = sizeof(payout)/sizeof(payout[0]);

    winningOdds = rand() % MAXIMUM_ODDS + MINIMUM_ODDS;
    for(int i=0;i<numElem ;i++){
        if(winningOdds <=payout[i].winningOdds){
            payOut = payout[i].payout;
            break;
        }
    }
    printf("Coins won - %d\n", payOut);

}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14681923

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档