0
点赞
收藏
分享

微信扫一扫

掷骰子游戏设计(C++)

晴儿成长记 2022-03-17 阅读 34

      假如有n个学生排成一圈,编号从1到n,每个人有初始积分,不防设为100。从1号开始掷骰子,骰子出现后,根据点数减去掷骰人的相应积分,如减去 10*(6 - 投掷点数),然后根据点数多少,就依次向后数掷骰的点数同等数量的人,被数到的最后一个人继续掷骰子,计算积分,依此类推。如果某人掷骰后,其积分小于等于0则出列,余下的人继续按照此法进行游戏,直到剩下最后一个人,为胜利者。要求打印每次出列的人的编号,掷骰子的次数,当前积分。并打印最后胜利者的相应信息。

#include <iostream>
#include <ctime>
using namespace std;
int main()
{
	int i, j, k = 0, l;//定义变量
	int n,num;//n为学生数量,num为掷出的筛子点数
	cout << "请输入学生数量" << endl;
	cin >> n;
	int* N = new int[n];
	int* M = new int[n];
	for (i = 0; i < n; i++)//将每个小孩的分数存在数组中
	{
		N[i] = 100;
		M[i] = 0;
	}
	srand(time(NULL));//将种子传递给rand()
	for (j = 1;j<n; )
	{
		num = rand() % 6 + 1;//每次筛子掷出的点数
		N[k] -= 10 * (6 - num);//计算掷出后该同学的分数
		M[k] += 1;//掷色子数加1
		if (N[k] <= 0)
		{
			cout << "第" << j << "个淘汰的是" << k + 1 << "号,他的分数是" << N[k] << ",掷色子的次数是" << M[k] << endl;
			j++;
		}
		for (int count = 0; count < num;  )//判断下一位掷色子的同学
		{
			k++;
			if (k == n)
				k = 0;
			if (N[k] > 0)
			{
				count++;
			}
		}
	}
	for (l = 0; l < n; l++)
	{
		if (N[l] > 0)
			cout << "恭喜" << l + 1 << "号同学赢得游戏,他的最后分数是" << N[l] << ",掷色子次数是" << M[l] << endl;
	}
	delete[]M;//释放内存
	delete[]N;//释放内存
	return 0;
}

运行结果如下:

 

举报

相关推荐

0 条评论