⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 check.c

📁 我搜集到的一个java常用类库的源代码
💻 C
字号:
#include <stdlib.h>#include <stdio.h>#include <string.h>#include "curses.h"#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#define THREE_CARD 1#define STRAIGHT_CARD 2#define PAIR_CARD 3#include "mjdef.h"#include "qkmj.h"clear_check_flag(sit)char sit;{  int i,j;  for(j=1;j<6;j++)    check_flag[sit][j]=0;}int search_card(sit,card)char sit;char card;{  int i;   if(card==0)    return(0);  for(i=0;i<pool[sit].num;i++)  {    if(pool[sit].card[i]==card)      goto found;  }  i=-1;  found:;  return(i);}int check_kang(sit,card)char sit;char card;{  int i,kang;  kang=1;  if(card==0)    return(0);  for(i=0;i<pool[sit].num-2;i++)    if(pool[sit].card[i]==card)        goto found;  for(i=0;i<pool[sit].out_card_index;i++)    if(pool[sit].out_card[i][0]==2 && pool[sit].out_card[i][1]==card &&       sit==card_owner)    {      return 2;    }  kang=0;  found:;  if(pool[sit].card[i+1]!=card || pool[sit].card[i+2]!=card)    kang=0;  return(kang);}int check_pong(sit,card)char sit;char card;{  int i,pong;  pong=1;  if(card==0)    return(0);  for(i=0;i<pool[sit].num-1;i++)    if(pool[sit].card[i]==card)      goto found;  pong=0;  found:;  if(pool[sit].card[i+1]!=card)    pong=0;  return(pong);}int check_eat(sit,card)char sit;char card;{  int i,j,eat;  char msg_buf[80];    eat=0;  i=next_turn(turn);  if(i!=sit)    return(0);  if(card<1 || card>29)    return(0);  j=card%10;  switch(j)  {    case 1:      if(search_card(sit,card+1)>=0 && search_card(sit,card+2)>=0)        eat=1;      break;    case 2:      if(search_card(sit,card-1)>=0 && search_card(sit,card+1)>=0)        eat=1;      if(search_card(sit,card+1)>=0 && search_card(sit,card+2)>=0)        eat=1;      break;    case 3:    case 4:    case 5:    case 6:    case 7:      if(search_card(sit,card-2)>=0 && search_card(sit,card-1)>=0)        eat=1;      if(search_card(sit,card-1)>=0 && search_card(sit,card+1)>=0)        eat=1;      if(search_card(sit,card+1)>=0 && search_card(sit,card+2)>=0)        eat=1;      break;    case 8:      if(search_card(sit,card-2)>=0 && search_card(sit,card-1)>=0)        eat=1;      if(search_card(sit,card-1)>=0 && search_card(sit,card+1)>=0)        eat=1;      break;    case 9:      if(search_card(sit,card-2)>=0 && search_card(sit,card-1)>=0)        eat=1;      break;    default:      break;  }  return(eat);}check_card(sit,card)char sit;char card;{  char msg_buf[80];  clear_check_flag(sit);  check_flag[sit][1]=check_eat(sit,card);  check_flag[sit][2]=check_pong(sit,card);  check_flag[sit][3]=check_kang(sit,card);  check_flag[sit][4]=check_make(sit,card,0);}check_begin_flower(sit,card,position)  /* command for server */char sit;char card;char position;{  int i;  char msg_buf[80];  if(card<=58 && card>=51)  {    sprintf(msg_buf,"525%c%c",sit,pool[sit].card[position]);    broadcast_msg(1,msg_buf);    draw_flower(sit,card);    card=mj[card_point++];    if(sit==my_sit)      change_card(position,card);    else    {      pool[sit].card[position]=card;      sprintf(msg_buf,"301%c%c",position,card);      write_msg(player[table[sit]].sockfd,msg_buf);    }    return(1);  }  else    return(0);}check_flower(sit,card)char sit;char card;{  int i;  char msg_buf[80];  if(card<=58 && card>=51)  {    sprintf(msg_buf,"525%c%c",sit,card);    draw_flower(sit,card);    if(in_join)    {      write_msg(table_sockfd,msg_buf);    }    else    {      broadcast_msg(1,msg_buf);      card=mj[card_point++];      show_num(2,70,144-card_point-16,2);      card_owner=my_sit;      sprintf(msg_buf,"305%c",(char) my_sit);      broadcast_msg(1,msg_buf);      sprintf(msg_buf,"306%c",card_point);      broadcast_msg(1,msg_buf);      play_mode=GET_CARD;      attron(A_REVERSE);      show_card(10,INDEX_X+16*2+1,INDEX_Y+1,1);      attroff(A_REVERSE);      return_cursor();    }    return(1);  }  else    return(0);  }write_check(check)  /* Finished checking! */char check;{  char msg_buf[80];  if(in_join)  {    sprintf(msg_buf,"510%c",check+'0');    write_msg(table_sockfd,msg_buf);  }  else  {    in_check[player[1].sit]=0;    check_for[player[1].sit]=check;  }}send_pool_card(){  int j;  char msg_buf[80];  /* ----------------------- */  /*   0-2: 512 公布四家的牌 */  /*  3-18: 东家的牌         */  /* 19-34: 南家的牌         */     /* 35-50: 西家的牌         */  /* 51-66: 北家的牌         */  /*    67: 0                */  /* ----------------------- */  sprintf(msg_buf,"521");  for(j=0;j<16;j++)    msg_buf[3+j]=pool[1].card[j];  for(j=0;j<16;j++)    msg_buf[19+j]=pool[2].card[j];  for(j=0;j<16;j++)    msg_buf[35+j]=pool[3].card[j];  for(j=0;j<16;j++)    msg_buf[51+j]=pool[4].card[j];  msg_buf[67]=0;  broadcast_msg(1,msg_buf);}compare_check(){  int i,j;  char msg_buf[80];    next_player_request=0;  /* Check for make */  i=card_owner;  for(j=1;j<=4;j++)  {    i=next_turn(i);    if(check_for[i]==MAKE)    {      send_pool_card(i);      sprintf(msg_buf,"522%c%c",i,current_card);      broadcast_msg(1,msg_buf);      process_make(i,current_card);      goto finish;    }  }  /* Check for kang */  for(i=1;i<=4;i++)  {    if(check_for[i]==KANG)    {      card_owner=i;      if(table[i]==1) /* Server wants to process_epk */      {        if(search_card(i,current_card)>=0)        {        if(turn==i)  /* 自己摸牌 */          process_epk(11);        else          process_epk(KANG);        }        else           process_epk(12);      }      else      {        if(search_card(i,current_card)>=0)        {        if(turn==i)          sprintf(msg_buf,"520%c",11);         else          sprintf(msg_buf,"520%c",KANG);        }        else          sprintf(msg_buf,"520%c",12);        write_msg(player[table[i]].sockfd,msg_buf);        show_newcard(turn,1);        return_cursor();      }      turn=i;      sprintf(msg_buf,"314%c%c",i,1);      broadcast_msg(table[i],msg_buf);      goto finish;    }  }  /* Check for pong */  for(i=1;i<=4;i++)  {    if(check_for[i]==PONG)    {      card_owner=i;      if(table[i]==1)        process_epk(PONG);      else      {        sprintf(msg_buf,"520%c",PONG);        write_msg(player[table[i]].sockfd,msg_buf);        show_newcard(i,2);        return_cursor();      }      turn=i;      sprintf(msg_buf,"314%c%c",i,2);      broadcast_msg(table[i],msg_buf);      goto finish;    }  }  /* Check for eat */  for(i=1;i<=4;i++)  {    if(check_for[i]>=7 && check_for[i]<=9)    {      card_owner=i;      if(table[i]==1)        process_epk(check_for[i]);      else      {        sprintf(msg_buf,"520%c",check_for[i]);        write_msg(player[table[i]].sockfd,msg_buf);        show_newcard(i,2);        return_cursor();      }      turn=i;      sprintf(msg_buf,"314%c%c",i,2);      broadcast_msg(table[i],msg_buf);      goto finish;    }  }  if(!getting_card)    next_player_request=1;  finish:;  for(i=1;i<=4;i++)    check_for[i]=0;  getting_card=0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -