
用C++编写一个“投掷双骰子”游戏,具体的核心算法是什么啊!
2个回答
2013-05-13
展开全部
一.rand()函数产生0到32767范围内的整数。 二.有且仅有5种规则立方体的所有面的形状和大小都相同(四、六、八、十二、二十面)。 三.算法:
⒈把随机数除以6(面数)取余数,余数在0到5间的整数;
⒉余数加一,得1到6的整数;
⒊因为骰子有不同的面数,因此把第一步的面数用变量sides代替。 四.源程序:
#include <stdio.h>
#include <stdlib.h>
#include <time.h> int main(void)
{
int rollem(int);
int roll_n_dice(int,int); int dice,roll,sides; /*骰数个数,总点数,一个骰子的面数*/ srand((unsigned int)time(0));
printf("输入骰子的面数(输入0退出):");
while(scanf("%d",&sides)==1&&sides>0)
{
printf("输入骰子的个数:");
scanf("%d",&dice);
roll=roll_n_dice(dice,sides);
printf("使用%d个%d面骰子掷%d点。",dice,sides,roll);
printf("\n输入骰子的面数(输入0退出):");
}
return 0;
} int rollem(int sides)
{
int roll; roll=rand()%sides+1;
return roll;
} int roll_n_dice(int dice,int sides)
{
int d;
int total=0; if(sides<2)
{
printf("至少两个面!!!\n");
return -2;
}
if(dice<1)
{
printf("至少一个骰子!!!\n");
return -1;
}
for(d=0;d<dice;d++) total+=rollem(sides);
return total;
}
⒈把随机数除以6(面数)取余数,余数在0到5间的整数;
⒉余数加一,得1到6的整数;
⒊因为骰子有不同的面数,因此把第一步的面数用变量sides代替。 四.源程序:
#include <stdio.h>
#include <stdlib.h>
#include <time.h> int main(void)
{
int rollem(int);
int roll_n_dice(int,int); int dice,roll,sides; /*骰数个数,总点数,一个骰子的面数*/ srand((unsigned int)time(0));
printf("输入骰子的面数(输入0退出):");
while(scanf("%d",&sides)==1&&sides>0)
{
printf("输入骰子的个数:");
scanf("%d",&dice);
roll=roll_n_dice(dice,sides);
printf("使用%d个%d面骰子掷%d点。",dice,sides,roll);
printf("\n输入骰子的面数(输入0退出):");
}
return 0;
} int rollem(int sides)
{
int roll; roll=rand()%sides+1;
return roll;
} int roll_n_dice(int dice,int sides)
{
int d;
int total=0; if(sides<2)
{
printf("至少两个面!!!\n");
return -2;
}
if(dice<1)
{
printf("至少一个骰子!!!\n");
return -1;
}
for(d=0;d<dice;d++) total+=rollem(sides);
return total;
}
2013-05-13
展开全部
不知道啊!CSDN频道上去查查 绝对可以找到
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询