第1个回答 2013-09-01
玩法:21点一般用到1-8副牌。庄家给每个玩家发两张牌,牌面朝上;给自己发两张牌,一张牌面朝上(叫明牌),一张牌面朝下(叫暗牌)。大家手中扑克点数的计算是:K、Q、J 和 10 牌都算作 10 点。 A 牌既可算作1 点也可算作11 点,由玩家自己决定。其余所有2 至9 牌均按其原面值计算。首先玩家开始要牌,如果玩家拿到的前两张牌是一张 A 和一张10点牌,就拥有黑杰克 (Blackjack);此时,如果庄家没有黑杰克,玩家就能赢得2倍的赌金(1赔2)。没有黑杰克的玩家可以继续拿牌,可以随意要多少张。目的是尽量往21点靠,靠得越近越好,最好就是21点了。在要牌的过程中,如果所有的牌加起来超过21点,玩家就输了——叫爆掉(Bust),游戏也就结束了。假如玩家没爆掉,又决定不再要牌了,这时庄家就把他的那张暗牌打开来。庄家根据自己的情况拿牌,一般到17点或17点以上不再拿牌,但也有可能15到16点甚至12到13点就不再拿牌或者18到19点继续拿牌。假如庄家爆掉了,那他就输了。假如他没爆掉,那么你就与他比点数大小,大为赢。一样的点数为平手,你可以把你的赌注拿回来。如果拿牌拿到手中有5张牌,并且总数不到21点,那这种情况能压住一切牌型(当然5张加起来一共21点更好),但某些玩法中不支持此规则 21点 c语言程序int result1(int s1,int s2)
{
if(s1>21)
u=1;
else if(s2>21)
u=0;
else if(s1<=s2)
u=1;
else
u=0;
return u;
}
int result(int s1,int s2,int ii,int jj,int z1,int z2)
{
if(ii==5&&jj==5)
u=s1>s2?1:0;
else if(jj==5&&ii!=5&&s2<=21)
u=1;
else if(ii==5&&jj!=5&&s1<=21)
u=0;
else
{
S1S2(s1,s2,z1,z2);
u=result1(s1,s2);
}
return u;
}
void GiveCard(int ctr)
{
if(ctr==0)
{
int y;
y=random(13);
q[ctrl2++]=t[y];
z2+=acer(y);
s2+=s[y];
}
if(ctr==2)
{
int y;
y=random(13);
q[ctrl2++]=t[y];
z2+=acer(y);
s2+=s[y];
printf("\nComputer got a card '%s'...\n",t[y]);
}
else if(ctr==1)
{
int x;
x=random(13);
p[ctrl1++]=t[x];
z1+=acer(x);
s1+=s[x];
printf("\nYou got a card '%s'...\n",t[x]);
}
else if(ctr==-1)
{
s1=0;
s2=0;
z1=0;
z2=0;
mark1=2;
mark2=2;
ctrl1=0;
ctrl2=0;
}
DELAY(1024);
}
void YouGetCard()
{
char ch;
if(ctrl1<5)
{
printf("Do You Want Another Card?[yn]");
YON:
ch=getche();
switch(ch)
{
case 'y' : ;
case 'Y' : {
GiveCard(1);
mark1++;
}break;
case 'N' : ;
case 'n' : ctrl1=5;break;
default : goto YON;
}
}
else
;
}
void ComputerGetCard(void)
{
s2tmp=s2;
S1S2(s1,s2,z1,z2);
if(ctrl2<5)
{
if(s2>=s1)
{
if(ctrl1==5)
ctrl2=5;
else
if(s2tmp+random(10)+1<=21)
{
s2=s2tmp;
GiveCard(2);
mark2++;
}
}
else
{
if(s2tmp+random(10)+1<=21)
{
s2=s2tmp;
GiveCard(2);
mark2++;
}
else
ctrl2=5;
}
}
}
main()
{
char choice;
unsigned long int dely;
int temp;
char name[100];
clrscr();
START:printf("A small game...BlackJack\nPress 1 if you want to play the game...\nPress 2 if you want to exit...\n");
choice=getch();
if(choice=='2')
exit(1);
else if(choice=='1')
{
clrscr();
printf("Welcome to the BlackJack Game...\n");
do
{
printf("Please Input Your Name:");
gets(name);
}
while(*name=='\x0');
printf("Please Press Any Key To Start The Game...");
getch();
clrscr();
GiveCard(-1);
randomize();
printf("Welcom %s to the game...\n\n",name);
printf("Turn 1:\n");
GiveCard(1);
GiveCard(0);
printf("\nTurn 2:\n");
GiveCard(1);
GiveCard(2);
printf("\n");
temp=s1;
for(ctrl=3;ctrl<=5&&ctrl1*ctrl2!=25;ctrl++)
{
printf("\nTurn %d:\n",ctrl);
s1=temp;
if(ctrl1<5)
YouGetCard();
if(s1>21)
break;
temp=s1;
if(ctrl2<5)
ComputerGetCard();
if(s2>21)
break;
}
}
else
{
clrscr();
goto START;
}
printf("\n\nIn order you get:\n");
for(ctrl1=0;ctrl1<mark1;ctrl1++)
printf("%s\t",p[ctrl1]);
printf("\n\nIn order computer get:\n\n");
for(ctrl2=0;ctrl2<mark2;ctrl2++)
printf("%s\t",q[ctrl2]);
u=result(s1,s2,mark1,mark2,z1,z2);
if(u==1)
printf("\n\n\tYou Lost!\n\n");
else
printf("\n\n\tYou Win!\n\n");
printf("Thank You %s For Playing This Game:)\nMade By SkyPu\n\tYour Sincerely Friend",name);
printf("\nPlease Press Any Key To Continue...");
getch();
clrscr();
goto START;
}本回答被网友采纳