有没有大佬帮我看看,为什么程序不能编译呀??
#include <stdio.h>#include <stdlib.h>
#include <time.h>
#include <conio.h>
#include <math.h>
int PlayerMoney=1000;
int DealerMoney=1000;
int bet;
int BetMoney;
int a,b,c;
void ShowToScreen();
int GetBet();
int GetAmount();
void Throw();
int Judge(int a,int b,int c);
void MoneyCalc();
int check(int pm,int dm);
int main()
{
char ch;
int CheckMoney;
ShowToScreen();
while(1) //游戏死循环
{
if(PlayerMoney<10)
{
printf("您没有10个积分,不能继续游戏\n");
break;
}
if(DealerMoney<10)
{printf("对手不足10积分,没有资格参与游戏\n");
break;
}
bet = GetBet(); //bet保存选择方式
repeat:BetMoney = GetAmount();
if(BetMoney>PlayerMoney)
{
printf("您没有这么多的积分,请重新输入\n");
goto repeat;
}
if(BetMoney>DealerMoney)
{
printf("对手没有这么多积分,他要求您重新下注\n");
goto repeat;
}
Throw(); //掷出骰子
MoneyCalc(); //计算输赢积分
getch(); //抛弃Kbhit函数在缓冲区的按键
//检查是否有足够的积分进行游戏,CheckMoney保存返回值
CheckMoney=check(PlayerMoney,DealerMoney);
//假如返回值等于0,表示没有足够的积分来继续游戏
if(CheckMoney==0)
break;
printf("继续玩吗?(退出请按q键,继续请按其它按键)\n\n");
if((ch==getchar())=='q')
{
break;
}
}
return 0;
}
//显示游戏规则
void ShowToScreen()
{
printf(" 欢迎体验博弈机1.0\n");
printf("*************************************************************************\n");
printf(" 玩家和对手各有1000积分作为游戏的起始资金\n");
printf(" 在博弈机1.0中,由玩家选择一定积分来游戏\n");
printf(" 玩家可以选择方式,以及每轮游戏支出的积分数(10-100),方式有三种:\n\n");
printf(" 一、选大。 二、选小。 三、选豹子。\n\n");
printf(" 下面逐一介绍这三种方式的不同:\n\n");
printf(" 假如玩家选大,那么玩家所掷出的三粒骰子的点数加起来必须大于11。如玩家掷出:5,3,6");
printf(" 三粒骰子相加:5+3+6=14,大于11,那么玩家赢,假如小于11,那么玩家输。输赢的积分为支出积分的2倍");
printf(" 也就是说,赢得一方将获得2倍支出积分。");
printf(" 假如等于11,那么打成和局。\n");
printf(" 假如玩家选小,那么玩家所掷出的三粒骰子的点数加起来必须小于11。获得的积分与选大相同\n");
printf(" 假如玩家选豹子,那么玩家所掷出的三粒骰子的点数必须是一样的。如8,8,8\n");
printf(" 玩家成功的掷出豹子后,玩家将获得10倍积分奖励。如玩家支出了20积分,那么将获得200积分\n");
printf(" 假如玩家选了豹子缺没有掷出豹子,那么玩家将损失2倍积分。如玩家支出20积分,那么玩家损失40积分\n");
printf(" 玩家可以按q键随时终止游戏,假如不终止游戏,那么游戏会一直进行下去,直到玩家或对手有一方积分不足。\n");
printf(" 规则说明完毕,祝您玩的愉快!\n");
printf("*************************************************************************\n");
}
//获取选择方式
int GetBet()
{
int BetType; //选择方式
printf("\n请选择方式");
printf("1.选大 2.选小 3.选豹子\n");
printf("请选择:");
scanf("%d",&BetType); //输入方式
//判断是否输入1-3数字,假如不是,那么取默认值,默认值为1
if(BetType==1||BetType==2||BetType==3)
{
return BetType;
}
else
{
return 1;
}
}
//获取玩家积分
int GetAmount()
{
int BetMoney;
/*输入支出的积分*/
printf("您要支出多少积分(最少10个,最多100个):");
scanf("%d",&BetMoney);
//假如支出超过输入范围,那么修改它
if(BetMoney<10)
{
BetMoney=10;
}
if(BetMoney>100)
{
BetMoney=100;
}
return BetMoney;
}
//掷骰子并根据点数计算输赢积分
void Throw()
{
printf("欢迎您体验博弈机,请按键盘任意键掷出骰子");
getch(); //等待用户按下任意键
srand(time(0)); //将系统时钟作为种子
while(!kbhit()) //当按下任意键时,循环结束
{
a = rand()%6; //得到一个在0-5的随机数
b = rand()%6; //得到一个在0-5的随机数
c = rand()%6; //得到一个在0-5的随机数
a++; //自加后,得到一个在1-6的随机数
b++; //自加后,得到一个在1-6的随机数
c++; //自加后,得到一个在1-6的随机数
system("cls"); //清空屏幕
printf("骰子在转动:……………………按键盘上任意键停止转动!\n");
//输出3个随机数
printf("第一粒骰子:%d\n第二粒骰子:%d\n第三粒骰子:%d\n",a,b,c);
}
}
//判断点数,是大,是小,是豹子
int Judge(int a,int b,int c)
{
if(a==b&&a==c) //假如是豹子
return 3; //返回3
if(a+b+c>11) //假如是大
return 2; //返回2
else if(a+b+c<11) //假如是小
return 1; //返回1
else //其他则是平手
return 0; //返回0
}
// 计算输赢积分
void Moneycalc()
{
if(Judge(a,b,c)==3) //假如Judge函数返回3,那么点数为豹子
{
if(bet==3)
{
BetMoney*=10; //玩家支出的积分乘以10
DealerMoney-=BetMoney; //对手减少10倍积分
PlayerMoney+=BetMoney; //玩家增加10倍积分
// 输出玩家获得的积分,以及玩家和对手现在的积分
printf("豹子,10倍积分!您获得%d积分,您现在共有%d积分,对手还剩下%d积分\n\n",BetMoney,DealerMoney,PlayerMoney);
}
else //假如玩家没有选豹子
{
BetMoney*=2; //玩家支出的积分乘以2
DealerMoney+=BetMoney; //对手增加2倍积分
PlayerMoney-=BetMoney; //玩家减少2倍积分
// 输出玩家损失的积分,以及玩家和对手现在的积分
printf("豹子,10倍积分!您输了%d积分,您现在共有%d积分,对手还剩下%d积分\n\n",BetMoney,DealerMoney,PlayerMoney);
}
}
else if(Judge(a,b,c)==2)
{
BetMoney*=2; //玩家支出的积分乘以2
if(bet==1)
{
DealerMoney-=BetMoney; //对手减少10倍积分
PlayerMoney+=BetMoney; //玩家增加10倍积分
// 输出玩家获得的积分,以及玩家和对手现在的积分
printf("大,2倍赔率!您赢得了%d积分!您现在共有%d积分,对手还剩下%d积分\n\n",BetMoney,DealerMoney,PlayerMoney);
}
else //假如玩家没有选大
{
DealerMoney+=BetMoney; //对手增加2倍积分
PlayerMoney-=BetMoney; //玩家减少2倍积分
// 输出玩家损失的积分,以及玩家和对手现在的积分
printf("大,2倍赔率!您输了%d积分!您现在共有%d积分,对手还剩下%d积分\n\n",BetMoney,DealerMoney,PlayerMoney);
}
}
else if(Judge(a,b,c)==1)
{
BetMoney*=2; //玩家支出的积分乘以2
if(bet==2)
{
DealerMoney-=BetMoney; //对手减少10倍积分
PlayerMoney+=BetMoney; //玩家增加10倍积分
// 输出玩家获得的积分,以及玩家和对手现在的积分
printf("小,2倍赔率!您赢得了%d积分!您现在共有%d积分,对手还剩下%d积分\n\n",BetMoney,DealerMoney,PlayerMoney);
}
else //假如玩家没有选小
{
DealerMoney+=BetMoney; //对手增加2倍积分
PlayerMoney-=BetMoney; //玩家减少2倍积分
// 输出玩家损失的积分,以及玩家和对手现在的积分
printf("小,2倍赔率!您输了%d积分!您现在共有%d积分,对手还剩下%d积分\n\n",BetMoney,DealerMoney,PlayerMoney);
}
}
else //否则,Judge函数返回的一定0,那么点数为中
{
// 输出玩家和对手打平的信息
printf("中,您和对手打成平手!您现在共有%d积分,对手还剩下%d积分\n\n",BetMoney,DealerMoney,PlayerMoney);
}
}
// 检查玩家和对手是否有足够的积分来游戏
int check(int pm,int dm)
{
if(pm<=0) // 假如玩家的积分小于等于0
{
if(pm==0) // 假如玩家的积分等于0
printf("您没有积分了,请参与别的活动赚取积分!!!\n");
else // 否则,就是输得过多,导致欠账了
printf("现在您欠对手%d积分,请三日内参与活动赚取积分,否则账号将会被冻结!!!\n");
return 0; // 玩家没有足够的积分来游戏,则返回0
}
if(dm<=0) // 假如对手的积分小于等于0
{
if(dm==0) // 假如对手的积分等于0
printf("对手没有积分了,他不想再和您玩了!!!\n");
else // 否则,就是输得过多,导致欠账了
printf("现在对手欠对手%d积分,如果他不能在三日内还清欠款,那么他的账号就归您了!!!\n");
return 0; // 对手没有足够的积分来游戏,则返回0
}
return 1; // 玩家和对手都有足够的积分来游戏,则返回1
}