我已经定义了一个计算获胜几率并返回支付给玩家的金额的方法。我最初写这是完成这项任务的最明显的方法,但我真的想知道重构它的最好方法,以最大限度地减少计算机正在执行的工作量。下面是我的函数:
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;
}发布于 2013-02-04 15:19:27
尝试此样式,您需要填充Payout数组
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);
}https://stackoverflow.com/questions/14681923
复制相似问题