#include <stdlib.h>
#include <stdio.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;
while (1)
{
if(PlayerMoney<10)
{
printf("您没有10个积分,不能继续游戏。\n");
break;
}
if(DealerMoney<10)
{
printf("对手不足十个积分,没有资格参与游戏。\n");
break;
}
bet =GetBet(); //bet保存选择方式
repeat: BetMoney =GetAmount(); //BetMoney保存支出的积分
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=getch())=='q') //假如按下了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.如玩家掷出的三粒色子的点数分别为:6、3、3,");
printf("三粒色子相加:6+3+3=12,大于11,那么万家赢,假如小于11,那么玩家输,输赢的积分为支出积分的两倍,");
printf("也就是说,赢得一方将获得两倍的积分。");
printf("假如等于11,那么打成和局。\n");
printf(" 加入玩家选小,那么玩家所支出的三粒色子的点数加起来必须小于11,获得的积分与选大相同。\n");
printf(" 加入玩家选的豹子,那么玩家所支出的三粒色子的点数必须一样,如:6、6、6.\n");
printf("玩家成功的支出豹子后,玩家将获得十倍的奖励积分。如玩家指出了20积分,那么将获得200积分。\n");
printf(" 假如玩家选了豹子却没有掷出豹子,那么玩家将损失两倍积分,如玩家指出了20积分,那么玩家损失40积分。\n");
printf(" 玩家可以按q键随时终止游戏,假如不终止游戏,游戏会一直进行下去,直到玩家或对手有一方积分不足。\n");
printf(" 游戏规则说明完毕,祝您玩的愉快。\n");
printf("***************************************************************************\n");
}
//获取方式
int GetBet () //确定选择方式的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++;
b++;
c++;
system("cls"); //清空屏幕
printf("骰子在转动:。。。。。。按键盘上的任意键来中止转动!\n");
//输出三个随机数字
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;
if(a+b+c>11)
return 2;
else if(a+b+c<11)
return 1;
else
return 0;
}
//计算输赢的积分
void MoneyCalc()
{
if(Judge(a,b,c)==3)
{
if(bet==3)
{
BetMoney=BetMoney*10;
DealerMoney-=BetMoney;
PlayerMoney+=BetMoney;
printf("豹子,10倍积分!您获得了%d积分,您现在总共有%d积分,对手还剩%d积分\n\n",BetMoney,PlayerMoney,DealerMoney);
}
else
{
BetMoney=BetMoney*2;
DealerMoney+=BetMoney;
PlayerMoney-=BetMoney;
printf("豹子,您输了%d积分,您还剩%d积分,对手还剩%d积分\n\n",BetMoney,PlayerMoney,DealerMoney);
}
}
else if(Judge(a,b,c)==2)
{
BetMoney=BetMoney*2;
if(bet==1)
{
DealerMoney-=BetMoney;
PlayerMoney+=BetMoney;
printf("大,2倍积分,您赢得了%d积分!您现在总共%d积分,对手还剩%d积分,\n\n",BetMoney,PlayerMoney,DealerMoney);
}
else
{
DealerMoney+=BetMoney;
PlayerMoney-=BetMoney;
printf("大,2倍积分,您输了%d积分,您还剩%d积分,对手还剩%d积分,\n\n",BetMoney,PlayerMoney,DealerMoney);
}
}
else if(Judge(a,b,c)==1)
{
BetMoney=BetMoney*2;
if(bet==2)
{
DealerMoney-=BetMoney;
PlayerMoney+=BetMoney;
printf("小,2倍赔率!您获得了%d积分,您现在总共%d积分,对手还剩%d积分\n\n",BetMoney,PlayerMoney,DealerMoney);
}
else
{
DealerMoney+=BetMoney;
PlayerMoney-=BetMoney;
printf("小,2倍赔率,您输了%d积分,您还剩%d积分,对手还剩%d积分\n\n",BetMoney,PlayerMoney,DealerMoney);
}
}
else
{
printf("中,您和对手打成平手,您还剩%d积分,对手还剩%d积分\n\n",PlayerMoney,DealerMoney);
}
}
//检查玩家和对手是否有足够的积分来游戏
int check(int pm,int dm)
{
if(pm<=0)
{
if(pm==0)
printf("您没有积分了,请参加其他活动赚取积分!!!\n");
else
printf("现在您欠对手%d积分,请三日内参加活动赚取积分,否则账号将会被冻结。\n",abs(pm));
return 0;
}
if(dm<=0)
{
if(dm==0)
printf("对手没有积分了,她不想再和您玩了。\n");
else
printf("现在对手欠您%d积分,如果他不能再三个月内还清欠款,那么他的账号就归您了。\n",abs(dm));
return 0;
}
return 1;
}