21点小游戏C程序
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
if(sum>21) return 0; else return 1; }
char change(int card) {
char ch; int 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)
}
} int main() {
int n;
kaishi:
printf("
欢迎进入 21 点游戏!\n");
printf("
************************************\n");
printf("
1.开始游戏\n");
printf("
2.退出游戏\n");
printf("
************************************\n");
printf("\nCongratulations! You win!\n"); player_point+=20; host_point-=20; printf(" 庄 家 的 分 数 是 %d\n 您 的 分 数
是%d\n",host_point,player_point); break;
} printf("庄家的牌面值是%d\n 您的牌面值是%d\n",host_sum,player_sum); if(compare(host_sum,player_sum)==1) {printf("\nYou lose..\n"); player_point-=20;host_point+=20; printf("庄家的分数是%d\n 您的分数是%d\n",host_point,player_point); break; } else printf("\nCongratulations! You win!\n"); host_point-=20;player_point+=20; printf("庄家的分数是%d\n 您的分数是%d\n",host_point,player_point); break; }
} 字符
}
ch='J'; } } break; }
return ch;
//以上 switch 语句用于将数字转换成
void game() {
int i,k,n,host_card[15],player_card[15]; char host_ch,player_ch; int host_sum=0,player_sum=0; static int host_point=1700,player_point=1700; srand(time(NULL));
printf("请输入 1 或 2:");
if(scanf("%d",&n)&&n==1)
game();
else if(n==2)
{
printf("
******************************\n");
printf("
游戏结束!祝您愉快!\n");
printf("\n\n");
printf("
是%d\n",host_point,player_point); break; } printf("庄家爆牌了!庄家的牌面值是%d\n",host_sum); printf("\nCongratulations! You win!\n"); player_point+=20; host_point-=20; printf(" 庄 家 的 分 数 是 %d\n 您 的 分 数
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");
for(i=0;i<2;i++) { player_card[i]= (int)(11.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||player_card[i]==11||player_card[i]==12||player_card[i]==13) printf("您要到的第%d 张牌是%c\n",i+1,player_ch);
//电脑自动判断庄家的 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 您 的 分 数 是%d\n",host_point,player_point);
break; } else printf("\nCongratulations! You win!\n"); host_point-=20;player_point+=20;
printf("\nYou lose..\n"); player_point-=20; host_point+=20;
printf(" 庄 家 的 分 数 是 %d\n 您 的 分 数 是%d\n",host_point,player_point);
break; } printf("庄家爆牌了!庄家的牌面值是%d\n",host_sum); printf("\nCongratulations! You win!\n");
}
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(breakal(player_sum)==0) { printf("庄家爆牌了,您也爆牌了!庄家的牌面值是%d,
您的牌面值是%d\n",host_sum,player_sum); printf("\nYou lose..\n"); player_point-=20; host_point+=20; printf(" 庄 家 的 分 数 是 %d\n 您 的 分 数
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));
#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) {
再见!\n");
printf("
******************************\n");
return 0;
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')
printf(" 庄 家 的 分 数 是 %d\n 您 的 分 数 是%d\n",host_point,player_point);
break; } } if(breakal(host_sum)==0) { if(breakal(player_sum)==0) {
printf("庄家爆牌了,您也爆牌了!庄家的牌面值是%d, 您的牌面值是%d\n",host_sum,player_sum);
player_point+=20; host_point-=20;
printf(" 庄 家 的 分 数 是 %d\n 您 的 分 数 是%d\n",host_point,player_point);
break; }
lose..\n",player_sum);
else if(breakal(player_sum)==0) { printf(" 您 爆 牌 了 ! 您 的 牌 面 值 是 %d\n \nYou
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)
是%d\n",host_point,player_point); break;
} else
if(breakal(player_sum)==0) { printf(" 您 爆 牌 了 ! 您 的 牌 面 值 是 %d\n \nYou lose..\n",player_sum);
player_point-=20; host_point+=20;
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(" 庄 家 的 分 数 是 %d\n 您 的 分 数 是%d\n",host_point,player_point);
break; } else {
printf(" 庄 家 的 牌 面 值 是 %d\n 您 的 牌 面 值 是%d\n",host_sum,player_sum);
if(compare(host_sum,player_sum)==1) { printf("\nYou lose..\n"); player_point-=20;host_point+=20;
是%d\n",host_point,player_point);
player_point-=20; host_point+=20;
printf(" 庄 家 的 分 数 是 %d\n
break; }
您的分数
} else {
if(breakal(host_源自文库um)==0) { printf("庄家爆牌了!庄家的牌面值是%d\n",host_sum);
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;
char change(int card) {
char ch; int 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)
}
} int main() {
int n;
kaishi:
printf("
欢迎进入 21 点游戏!\n");
printf("
************************************\n");
printf("
1.开始游戏\n");
printf("
2.退出游戏\n");
printf("
************************************\n");
printf("\nCongratulations! You win!\n"); player_point+=20; host_point-=20; printf(" 庄 家 的 分 数 是 %d\n 您 的 分 数
是%d\n",host_point,player_point); break;
} printf("庄家的牌面值是%d\n 您的牌面值是%d\n",host_sum,player_sum); if(compare(host_sum,player_sum)==1) {printf("\nYou lose..\n"); player_point-=20;host_point+=20; printf("庄家的分数是%d\n 您的分数是%d\n",host_point,player_point); break; } else printf("\nCongratulations! You win!\n"); host_point-=20;player_point+=20; printf("庄家的分数是%d\n 您的分数是%d\n",host_point,player_point); break; }
} 字符
}
ch='J'; } } break; }
return ch;
//以上 switch 语句用于将数字转换成
void game() {
int i,k,n,host_card[15],player_card[15]; char host_ch,player_ch; int host_sum=0,player_sum=0; static int host_point=1700,player_point=1700; srand(time(NULL));
printf("请输入 1 或 2:");
if(scanf("%d",&n)&&n==1)
game();
else if(n==2)
{
printf("
******************************\n");
printf("
游戏结束!祝您愉快!\n");
printf("\n\n");
printf("
是%d\n",host_point,player_point); break; } printf("庄家爆牌了!庄家的牌面值是%d\n",host_sum); printf("\nCongratulations! You win!\n"); player_point+=20; host_point-=20; printf(" 庄 家 的 分 数 是 %d\n 您 的 分 数
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");
for(i=0;i<2;i++) { player_card[i]= (int)(11.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||player_card[i]==11||player_card[i]==12||player_card[i]==13) printf("您要到的第%d 张牌是%c\n",i+1,player_ch);
//电脑自动判断庄家的 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 您 的 分 数 是%d\n",host_point,player_point);
break; } else printf("\nCongratulations! You win!\n"); host_point-=20;player_point+=20;
printf("\nYou lose..\n"); player_point-=20; host_point+=20;
printf(" 庄 家 的 分 数 是 %d\n 您 的 分 数 是%d\n",host_point,player_point);
break; } printf("庄家爆牌了!庄家的牌面值是%d\n",host_sum); printf("\nCongratulations! You win!\n");
}
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(breakal(player_sum)==0) { printf("庄家爆牌了,您也爆牌了!庄家的牌面值是%d,
您的牌面值是%d\n",host_sum,player_sum); printf("\nYou lose..\n"); player_point-=20; host_point+=20; printf(" 庄 家 的 分 数 是 %d\n 您 的 分 数
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));
#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) {
再见!\n");
printf("
******************************\n");
return 0;
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')
printf(" 庄 家 的 分 数 是 %d\n 您 的 分 数 是%d\n",host_point,player_point);
break; } } if(breakal(host_sum)==0) { if(breakal(player_sum)==0) {
printf("庄家爆牌了,您也爆牌了!庄家的牌面值是%d, 您的牌面值是%d\n",host_sum,player_sum);
player_point+=20; host_point-=20;
printf(" 庄 家 的 分 数 是 %d\n 您 的 分 数 是%d\n",host_point,player_point);
break; }
lose..\n",player_sum);
else if(breakal(player_sum)==0) { printf(" 您 爆 牌 了 ! 您 的 牌 面 值 是 %d\n \nYou
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)
是%d\n",host_point,player_point); break;
} else
if(breakal(player_sum)==0) { printf(" 您 爆 牌 了 ! 您 的 牌 面 值 是 %d\n \nYou lose..\n",player_sum);
player_point-=20; host_point+=20;
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(" 庄 家 的 分 数 是 %d\n 您 的 分 数 是%d\n",host_point,player_point);
break; } else {
printf(" 庄 家 的 牌 面 值 是 %d\n 您 的 牌 面 值 是%d\n",host_sum,player_sum);
if(compare(host_sum,player_sum)==1) { printf("\nYou lose..\n"); player_point-=20;host_point+=20;
是%d\n",host_point,player_point);
player_point-=20; host_point+=20;
printf(" 庄 家 的 分 数 是 %d\n
break; }
您的分数
} else {
if(breakal(host_源自文库um)==0) { printf("庄家爆牌了!庄家的牌面值是%d\n",host_sum);
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;