C语言写的“斗牛”游戏原代码

本文提供了一段使用C语言编写的斗牛游戏的完整代码,包括牌的数据结构、初始化、洗牌、发牌、排序、点数计算等功能。游戏规则和算法在代码中详细解释,适合对C语言和游戏编程感兴趣的读者学习。
摘要由CSDN通过智能技术生成

/*建立二人斗牛游戏的程序*/
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <time.h>
/*牌的数据结构*/
typedef struct
{
 char face[4];
 int num;
}FACE;
/*建立返回牌结果的数据结构*/
typedef struct
{
 int result;    //点数
 int max;     //最大的那张牌
 int number;    //如果多张牌时返回
 int numberzhi;
}PAIRESULT;
/*建立总共纸牌初始函数*/
void inition(FACE zong[])
{
 int i;
 for(i=1;i<=4;i++)
 {
  strcpy(zong[i].face,"3");
  zong[i].num=0;
 }
 for(i=5;i<=8;i++)
 {
  strcpy(zong[i].face,"4");
  zong[i].num=1;
 }
 for(i=9;i<=12;i++)
 {
  strcpy(zong[i].face,"5");
  zong[i].num=2;
 }
    for(i=13;i<=16;i++)
 {
  strcpy(zong[i].face,"6");
  zong[i].num=3;
 }
 for(i=17;i<=20;i++)
 {
  strcpy(zong[i].face,"7");
  zong[i].num=4;
 }
 for(i=21;i<=24;i++)
 {
  strcpy(zong[i].face,"8");
  zong[i].num=5;
 }
 for(i=25;i<=28;i++)
 {
  strcpy(zong[i].face,"9");
  zong[i].num=6;
 }
 for(i=29;i<=32;i++)
 {
  strcpy(zong[i].face,"10");
  zong[i].num=7;
 }
 for(i=33;i<=36;i++)
 {
  strcpy(zong[i].face,"J");
  zong[i].num=8;
 }
 for(i=37;i<=40;i++)
 {
  strcpy(zong[i].face,"Q");
  zong[i].num=9;
 }
 for(i=41;i<=44;i++)
 {
  strcpy(zong[i].face,"K");
  zong[i].num=10;
 }
 for(i=45;i<=48;i++)
 {
  strcpy(zong[i].face,"A");
  zong[i].num=11;
 }
 for(i=49;i<=52;i++)
 {
  strcpy(zong[i].face,"2");
  zong[i].num=12;
 }
}
/*建立输出函数*/
void output(int n,FACE zong[],int k)
{
 int i;
 printf("/n");
 if(k==2)
  printf("这是玩家的牌/n");
 else
  printf("这是庄家的牌/n");
 for(i=1;i<=n;i++)
  printf("%s ",zong[i].face);
 printf("/n");
}
/*建立洗牌函数*/
void xipai(FACE zong[])
{
 int i,j;
 long k;
 FACE temp;
 srand(time(NULL));
 for(k=1;k<1000;k++)
 {
  i=1+rand()%52;
  j=1+rand()%52;
  temp=zong[i];
  zong[i]=zong[j];
  zong[j]=temp;
 }
}

/*建立发牌函数*/
void fapai(FACE zong[],FACE player1[],FACE player2[])
{
 int i=1,c1=1,c2=1;
 for(i=1;i<=10;)
 {
  player1[c1++]=zong[i++];
  player2[c2++]=zong[i++];
 }
}
/*建立牌的排序函数*/
void paisort(FACE player[])
{
 FACE temp;
 int i,j;
 for(i=0;i<4;i++)
  for(j=1;j<=4-i;j++)
   if(player[j].num>player[j+1].num)
   {
    temp=player[j];
    player[j]=player[j+1];
    player[j+1]=temp;
   }
}
/*建立只有三张非纸牌的函数*/
int san(int a2[])
{
 if((a2[0]+a2[1]+a2[2])%10==0)//三张牌和为十的倍数时
        return 10;
 else   //没有牛时
 {  
  /*以下是有两张牌和为10时*/
  if(a2[0]+a2[1]==10)  return a2[2]; 
  if(a2[0]+a2[2]==10)    return a2[1];
  if(a2[1]+a2[2]==10)    return a2[0];
  else
   return 0;
 }
}

/*建立有四张非花牌时的函数*/
int si(int a[])
{

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值