C語言-香港跑馬
C語言-香港跑馬
#include <stdio.h>
#include <time.h>
#include <windows.h>
//定義宏
#define HORSENUM6//賽馬數量
#define DISTANCE70//賽馬跑道的長度
#define MAXSTEP5//賽馬跑動一次的最長距離
#define ACCOUNT100000//我的賬戶
#define MINPAY3000//最低下注額
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;
}
學習過程中遇到什麼問題或者想獲取學習資源的話,歡迎加入學習交流群
340651687,我們一起學C/C++!