#include <stdio.h>
#include <time.h>
#include <windows.h>
//定义宏
#define HORSENUM 6//赛马数量
#define DISTANCE 70//赛马跑道的长度
#define MAXSTEP 5//赛马跑动一次的最长距离
#define ACCOUNT 100000//我的账户
#define MINPAY 3000//最低下注额
char horse[] = {'%', '&', '#', '@', '$', '!'};
//获取下注额
int get_deposit()
{
int deposit;
printf("请下注(最低下注额为%d元):", MINPAY);
while(!scanf("%d", &deposit) || deposit < MINPAY)
{
printf("错误,请重新下注(最低下注额为%d元):", MINPAY);
fflush(stdin);
}
return deposit;
}
//选择赛马的编号
int get_number()
{
int num;
printf("请选择赛马的编号(1~%d):", HORSENUM);
while(!scanf("%d", &num) || num < 1 || num > HORSENUM)
{
printf("错误,请重新选择赛马的编号(1~%d):", HORSENUM);
fflush(stdin);
}
return num;
}
//赛马开始比赛
void run(int rank[])
{
int i, j;
int index = 1;//赛马的名次
int dis[HORSENUM] = {0};//记录所有赛马已经跑出的距离
memset(rank, 0, sizeof(int) * HORSENUM);//把rank数组中的元素全部赋值为0
while(index <= HORSENUM)
{
system("cls");
printf("--------欢迎来到香港赌马场-----------\n");
for(i = 0; i < HORSENUM; ++i)
{
dis[i] += rand() % MAXSTEP;
if(dis[i] >= DISTANCE)
{
dis[i] = DISTANCE;
if(!rank[i])
rank[i] = index++;
}
printf("NO.%d:", i + 1);
for(j = 0; j < dis[i]; ++j)
printf(".");
if(rank[i])
printf("%d\n", rank[i]);
else
printf("%c\n", horse[i]);
}
Sleep(200);
}
}
int main()
{
int deposit; //下注额
int account = ACCOUNT;//我的账户
int rank[HORSENUM];//存储赛马的名次
int num;//获取赛马的编号
int bonus;//奖金
char answer;
srand((unsigned)time(0));//初始化随机种子
printf("你现在的账户余额为%d元!\n", account);
while(1)
{
if(account < MINPAY)
{
printf("你的钱已经不够下注了,请离开!\n");
break;
}
//获取下注额
while((deposit = get_deposit()) > account)
{
printf("你的账户没有这么多钱了!\n");
}
num = get_number() - 1;//获取赛马的编号
run(rank);
printf("\n********************************************\n");
if(rank[num] == 1)
{
bonus = deposit * 5;
printf("神啊!你太厉害了,%d号赛马竟然跑了第一名,获得了5倍奖金%d元.\n",
num + 1, bonus);
account += bonus;
}
else if(rank[num] == 2)
{
bonus = deposit * 2;
printf("厉害厉害了,%d号赛马竟然跑了第二名,获得了2倍奖金%d元.\n",
num + 1, bonus);
account += bonus;
}
else
{
deposit = deposit * rank[num] / HORSENUM;
printf("遗憾!你选择的%d号赛马只获得了第%d名, 将扣除%d元!\n",
num + 1, rank[num], deposit);
account -= deposit;
}
printf("你现在的账户余额是%d元.\n", account);
printf("你还想再玩一次吗(y or n)?");
fflush(stdin);
scanf(" %c", &answer);
if(answer != 'y')
break;
}
return 0;
}