6个人摇骰子,各自的编号是1、2、3、4、5、6,没人初始金币是10,游戏规则如下:
①根据骰子的结果确认winner,比如:骰子结果是1,那么“一号选手”是winner,骰子结果是2,那么“2号选手”是winner;
②如果连续同一个人是winner,那么独居金额翻倍。
比如:第一次骰子结果是3,那么其他所有人需要给“三号选手”1元,加入第二轮骰子结果依然是3,那么每人需要给“三号选手”2元;连续三次骰子结果是3,则是4元;以此类推;
③如果非连续同一个人是winner,那么妒忌金额重新回到1元,比如:骰子连续两轮结果是3,但是第三轮结果是4,那么第三轮赌局金额重新回到1元,
④如果金钱小于等于0元就出局。
要求:请编写代码模拟游戏过程,输出每一局每个人的剩余金额,并输出第一个人出局人的编号,可以使用rand()函数来输出随机整数。
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
int main()
{
int dat = 0; //本局骰子
int dat_before = -1; //上局骰子
int i;
int k = 1; //起始赌金
int money[6] = { 10,10,10,10,10,10 };
srand((unsigned)time(NULL)); //初始化随机数产生器
while (1)
{
printf("\n-----------------------------------\n");
for (i = 0; i <= 5; i++) //检查余额
{
if (money[i] <= 0) //其中一位余额不足
{
printf("编号:%d,金额:%d\n", i + 1, money[i]);
printf("游戏结束");
return -1; //游戏结束
}
}
dat = rand() % 6 + 1; //产生随机数(1~6)
if (dat == dat_before) //比较骰子,赌金是否翻倍
{
k *= 2;
printf("%d号连胜,赌金翻倍 !!\n", dat);
}
else
k = 1;
printf("赌局金额 : %d\n", k);
printf("本局胜者 :%d\n", dat);
for (i = 0; i <= 5; i++) //支付罚金
{
if (i == (dat - 1))
{
money[dat - 1] = k * 5 + money[dat - 1];//编号为随机数的人将钱收入囊中
printf("编号:%d,金额:%d (本局胜者)\n", dat, money[dat - 1]);
}
else
{
money[i] -= k; //每一位输的给出罚金
printf("编号:%d,金额:%d\n", i + 1, money[i]);
}
}
dat_before = dat; //记住上局的骰子
}