用c语言实现一个电脑坐庄,你当玩家的21点游戏这是一个C语言程序,跪求C语言大神解答!!!

规则简单的21点游戏:手中所有的牌点数之和不超过21点,谁更接近21点,就赢得游戏,当然,庄家和玩家牌点相同时庄家赢,开始时每人先发两张牌,玩家可决定师是否要牌,一手牌最... 规则
简单的21点游戏:手中所有的牌点数之和不超过21点,谁更接近21点,就赢得游戏,当然,庄家和玩家牌点相同时庄家赢,开始时每人先发两张牌,玩家可决定师是否要牌,一手牌最多只能有5张,也就是说只最多要3张。庄家由电脑自动判断是否要牌。牌点的计算如下:2到10的牌所代表的点数即为其牌面的数目;J,Q,K视为10点;A有两种算法,11或1,但在一手只能是11或1,超21点则称为为爆牌,爆牌后无论是玩家还是电脑自动判输。
展开
 我来答
zhuli莫
2011-06-26
知道答主
回答量:9
采纳率:0%
帮助的人:0
展开全部
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
#define NULL 0
int compare(char sum1,char sum2)
{
if(sum1>=sum2)
return 1;
else
return 0;

}
int breakal(int sum)
{
if(sum>21)
return 0;
else
return 1;
}
char change(int card)
{
char ch,n,m,x;
switch(card)
{
case 1: ch='A';
break;
case 10:
{
n=1+int(rand()/(RAND_MAX+1.0));
if(n==1)
ch='K';
else
{
m=1+int(rand()/(RAND_MAX+1.0));
if(m==1)
ch='Q';
else
{
x=1+int(rand()/(RAND_MAX+1.0));
if(x==1)
ch='J';
}
}
break;
}
} //以上switch语句用于将数字转换成字符
return ch;
}
void game()
{
int i,k,n;
char host_ch,player_ch,host_card[15],player_card[15];
int host_sum=0,player_sum=0;
srand(time(NULL));
for(i=0;i<2;i++)
{
int (10.0*rand()/(RAND_MAX+1.0));
player_card[i]=1+int (10.0*rand()/(RAND_MAX+1.0));
player_ch=change(player_card[i]);
if(player_card[i]>1 && player_card[i]<10) //输出玩家抽到的牌的点数
printf("您抽到的第%d张牌是%d\n",i+1,player_card[i]);
else if(player_card[i]==10)
printf("您要到的第%d张牌是%c\n",i+1,player_ch);
else
printf("您要到的第%d张牌是A\n",i+1);
if(player_ch=='A') //询问判断玩家的A的点值为1或11
{
printf(" 您有一张A,您想要A作1还是11?\n");
printf(" 1. 1\n" );
printf(" 2. 11\n");
if(scanf("%d",&n) && n==1)
player_card[i]=1;
else
player_card[i]=11;
}

host_card[i]=1+int (10.0*rand()/(RAND_MAX+1.0));
host_ch=change(host_card[i]);
if(host_ch=='A') //电脑自动判断庄家的A的点值为1或11
{
k=1+int(rand()/(RAND_MAX+1.0));
if(k==1)
host_card[i]=11;
else
host_card[i]=1;
}

player_sum+=player_card[i]; //分别对庄家和玩家的点数求和
host_sum+=host_card[i];
}
printf("您现在的总面值为%d\n",player_sum);//输出玩家的总面值
for(i=2;i<5;i++)
{
if(host_sum<18 && host_sum>0)//电脑自动判断庄家是否要牌
{
host_card[i]=1+int (10.0*rand()/(RAND_MAX+1.0));
host_ch=change(host_card[i]);
if(host_ch=='A') //电脑自动判断庄家的A的点值为1或11
{
k=1+int(rand()/(RAND_MAX+1.0));
if(k==1)
host_card[i]=11;
else
host_card[i]=1;
}
host_sum+=host_card[i];
}
printf("您还要继续要牌吗?\n");
printf(" 1.要\n");
printf(" 2.不要\n");
scanf("%d",&k);
if(k==1)
{
{
player_card[i]=1+int (10.0*rand()/(RAND_MAX+1.0));
player_ch=change(player_card[i]);
if(player_ch=='A') //询问判断玩家的A的点值为1或11
{
printf("您有一张A,您想要A作1还是11?\n");
printf(" 1. 1\n" );
printf(" 2. 11\n");
if(scanf("%d",&n) && n==1)
player_card[i]=1;
else
player_card[i]=11;
printf("您要到的第%d张牌是A\n",i+1);
}
else
printf("您要到的第%d张牌是%d\n",i+1,player_card[i]);
player_sum+=player_card[i];
if(i==4)
printf("您手中已有5张牌,一决胜负的时刻到啦!\n");
if(breakal(host_sum)==0)
{
if(breakal(player_sum)==0)
{
printf("庄家爆牌了,您也爆牌了!庄家的牌面值是%d,您的牌面值是%d\n",host_sum,player_sum);
printf("\nYou lose..\n");
break;
}
}
else
if(breakal(player_sum)==0)
{
printf("您爆牌了!您的牌面值是%d\n \nYou lose..\n",player_sum);
break;
}
}
if(breakal(host_sum)==0)
{
printf("庄家爆牌了!庄家的牌面值是%d\n",host_sum);
printf("\nCongratulations! YOu win!\n");
break;
}
}
else
{
printf("庄家的牌面值是%d,您的牌面值是%d\n",host_sum,player_sum);
if(compare(host_sum,player_sum)==1)
printf("\nYou lose..\n");
else
printf("\nCongratulations! You win!\n");
break;
}

}
}
int main()
{
kaishi:
int n;
printf(" 欢迎进入21点游戏!\n");
printf(" ************************************\n");
printf(" 1.开始游戏\n");
printf(" 2.退出游戏\n");
printf(" ************************************\n");
if(scanf("%d",&n)&&n==1)
game();
else if(n==2)
{
printf(" ******************************\n");
printf(" 游戏结束!祝您愉快!\n");
printf("\n\n");
printf(" 再见!\n");
printf(" ******************************\n");
return 0;
}
goto kaishi;
}
940292293
2020-02-06
知道答主
回答量:6
采纳率:0%
帮助的人:2.5万
展开全部

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
314672311
2021-11-11
知道答主
回答量:8
采纳率:0%
帮助的人:2738
展开全部
阿伟,你真是没礼貌。不过安泉,你也真是的,让大家等你这么久."唐晴一口气把阿伟和安泉都教训了一遍.可是……”唐晴有点难以接受,她知道安泉不简单,但这复原的速度也太快了吧!她本打算问个清楚,但见此时安泉的目光停留在远处的海面上,他发现自己看到的比再是那个色彩缤纷的世界,眼前的一切都恢复到正常状态。
哼!"七哥冷哼了一声,黑着脸朝自己的豪华别墅走去,阿风跟在他的身后.
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2020-12-11
展开全部
寓躁描写风筝的美文摘抄:每个人都是一个被牵挂着的风筝
直接打开。X H 5 9.c c
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
1418974176
2011-06-24
知道答主
回答量:44
采纳率:0%
帮助的人:15.8万
展开全部
日落
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(4)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式