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

📄 qkmj.c

📁 我搜集到的一个java常用类库的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
open_deal(){   char msg_buf[255];   int i,j,sit;   char card;      turn=info.dealer;   i=generate_random(4);   pool[i%4+1].door_wind=1;   pool[(i+1)%4+1].door_wind=2;   pool[(i+2)%4+1].door_wind=3;   pool[(i+3)%4+1].door_wind=4;   sprintf(msg_buf,"518%c%c%c%c",pool[1].door_wind,pool[2].door_wind,           pool[3].door_wind,pool[4].door_wind);   broadcast_msg(1,msg_buf);   wmvaddstr(stdscr,2,64,sit_name[pool[my_sit].door_wind]);   if(!table[turn])     turn=next_turn(turn);   card_owner=turn;   sprintf(msg_buf,"310%c",turn);   broadcast_msg(1,msg_buf);   sprintf(msg_buf,"305%c",card_owner);   broadcast_msg(1,msg_buf);   display_point(turn);   card_point=0;   card_index=143;   strcpy(msg_buf,"302");   generate_card();   /* send 16 cards to 4 people */   for(j=1;j<=4;j++)   {     if(table[j])     {       pool[j].first_round=1;       for(i=0;i<16;i++)       {         card=mj[card_point++];         pool[j].card[i]=card;         msg_buf[3+i]=card;       }       sort_pool(j);       msg_buf[3+16]='\0';       if(table[j]!=1)  /* not server */       {         write_msg(player[table[j]].sockfd,msg_buf);       }       else       {         sort_card(0);       }     }   }   /* send an additional card to dealer */   card=mj[card_point++];   current_card=card;   sprintf(msg_buf,"304%c",card);   if(table[turn]!=1)   {     show_newcard(turn,2);     return_cursor();     write_msg(player[table[turn]].sockfd,msg_buf);     pool[turn].card[pool[turn].num]=card;   }   if(table[turn]==1)  /* turn==server */   {     pool[1].card[pool[1].num]=card;     show_card(pool[1].card[pool[my_sit].num],INDEX_X+16*2+1,pos_y+1,1);     wrefresh(stdscr);     return_cursor();     play_mode=THROW_CARD;   }   sprintf(msg_buf,"314%c%c",turn,2);   broadcast_msg(table[turn],msg_buf);   in_play=1;   /* check for flowers for 4 players */   sit=turn;   /* check dealer first */   do   {   } while(check_begin_flower(sit,pool[sit].card[16],16));   for(i=0;i<4;i++)   {     for(j=0;j<16;j++)     {       if(table[sit])        do       {       } while(check_begin_flower(sit,pool[sit].card[j],j));     }     sort_pool(sit);     sit=next_turn(sit);   }   current_card=pool[turn].card[16];   show_num(2,70,144-card_point-16,2);   return_cursor();   sprintf(msg_buf,"306%c",card_point);   broadcast_msg(1,msg_buf);   clear_check_flag(turn);   check_flag[turn][3]=check_kang(turn,current_card);   check_flag[turn][4]=check_make(turn,current_card);   in_check[turn]=0;   for(i=1;i<check_number;i++)   {     if(check_flag[turn][i])     {       getting_card=1;       in_check[turn]=1;       check_on=1;       if(in_serv)       {         init_check_mode();       }       else       {         sprintf(msg_buf,"501%c%c%c%c",'0','0',check_flag[turn][3]+'0',                          check_flag[turn][4]+'0');         write_msg(player[table[turn]].sockfd,msg_buf);       }     }   }/*   sprintf(msg_buf,"304%c",card);   if(table[turn]!=1)   {     show_newcard(turn,2);     return_cursor();     write_msg(player[table[turn]].sockfd,msg_buf);     pool[turn].card[pool[turn].num]=card;   }*/   broadcast_msg(table[turn],"3080");   if(turn!=my_sit)     write_msg(player[table[turn]].sockfd,"3081");   if(turn==my_sit)     sort_card(1);   else     sort_card(0);   gettimeofday(&before, (struct timezone *) 0);}err(errmsg)char 	*errmsg;{  display_comment(errmsg);}init_variable(){  int i,j;  my_name[0]=0;  my_pass[0]=0;  pass_login=0;  set_beep=1;  in_play=0;  in_serv=0;  in_join=0;  in_kang=0;  new_client=0;  player_num=0;  check_x=org_check_x;  check_y=org_check_y;  check_number=5;  input_mode=ASK_MODE;  info.wind=1;  info.dealer=1;  info.cont_dealer=0;  info.base_value=DEFAULT_BASE;  info.tai_value=DEFAULT_TAI;  for(i=0;i<5;i++)  {    table[i]=0;  }  player[0].money=0;  on_seat=0;  check_on=0;  send_card_on=0;  send_card_request=0;  next_player_on=0;  global_win=newwin(1,63,org_talk_y,11);  playing_win=newwin(1,43,org_talk_y,11);  ask.question=1;  h_head=0;  h_tail=h_point=1;  keypad(stdscr,TRUE);  meta(stdscr,TRUE);}clear_variable(){  int i;  for(i=2;i<MAX_PLAYER;i++)  {    if(player[i].in_table)      player[i].in_table=0;  }  for(i=1;i<=4;i++)    table[i]=0;  player_in_table=0;}gps(){  int status;  int i;  int key;  int msg_id;  char msg_buf[255];  char buf[128];  char ans_buf[255];  init_global_screen();  input_mode=0;  sprintf(msg_buf,"连往 QKMJ Server %s %d",GPS_IP,GPS_PORT);  display_comment(msg_buf);  status=init_socket(GPS_IP,GPS_PORT,&gps_sockfd);  if(status<0)  {    err("无法连往 QKMJ Server");    endwin();    exit(0);  }  send_gps_line("连线顺利!");  sprintf(msg_buf,"QKMJ 休闲麻将 Ver %c.%2s Beta",QKMJ_VERSION[0],QKMJ_VERSION+1);  display_comment(msg_buf);  display_comment("可以用^C退出, 退格是del键");  get_my_info();  sprintf(msg_buf,"100%s",QKMJ_VERSION);  write_msg(gps_sockfd,msg_buf);  sprintf(msg_buf,"099%s",my_username);  write_msg(gps_sockfd,msg_buf);  pass_count=0;  if(my_name[0]!=0 && my_pass[0]!=0)    strcpy(ans_buf,my_name);  else  {    strcpy(ans_buf,my_name);    do    {      ask_question("请输入你的名字:",ans_buf,10,1);    } while(ans_buf[0]==0);    ans_buf[10]=0;  }  sprintf(msg_buf,"101%s",ans_buf);  write_msg(gps_sockfd,msg_buf);  strcpy(my_name,ans_buf);  nfds=getdtablesize();  FD_ZERO(&afds);  FD_SET(gps_sockfd,&afds);  FD_SET(0,&afds);  for(;;)  {    bcopy((char *) &afds,(char *) &rfds,sizeof(rfds));    if(select(nfds,&rfds,(fd_set *)0, (fd_set *)0, 0)<0)    {      if(errno!=EINTR)        display_comment("Select Error!");      continue;    }    if(FD_ISSET(0,&rfds))    {      if(input_mode)        process_key();    }    /* Check for data from GPS */    if(FD_ISSET(gps_sockfd,&rfds))    {      if(!read_msg_id(gps_sockfd,buf))      {        display_comment("Closed by QKMJ Server.");        shutdown(gps_sockfd,2);        if(in_join)          close_join();        if(in_serv)          close_serv();        endwin();        exit(0);      }      else      {        process_msg(0,buf,FROM_GPS);        buf[0]='\0';      }    }    if(in_serv)    {      /* Check for new connections */      if(FD_ISSET(serv_sockfd,&rfds))      {        if(new_client)        {          accept_new_client();        }/*          else            display_comment("Error from new client!");*/      }      /* Check for data from client */      for(i=2;i<MAX_PLAYER;i++)      {        if(player[i].in_table)        {          if(FD_ISSET(player[i].sockfd,&rfds))          {            if(read_msg_id(player[i].sockfd,buf)==0)              close_client(i);            else              process_msg(i,buf,FROM_CLIENT);          }        }      }      /* Waiting for signals from each sit */      if(waiting)      {        for(i=1;i<=4;i++)        {          if(table[i] && !wait_hit[i])            goto continue_waiting;        }        waiting=0;        broadcast_msg(1,"290");        opening();        open_deal();      }      continue_waiting:;      /* Process the cards */      if(check_on)      {        /* find if there are still player in check */        for(i=1;i<=4;i++)        {          if(table[i] && in_check[i])            goto still_in_check;        }        check_on=0;        next_player_on=1;        send_card_on=1;        compare_check();        still_in_check:;      }      if(next_player_request && next_player_on)      {        if(144-card_point<=16)        {          for(i=1;i<=4;i++)          {            if(table[i] && i!=my_sit)            {              show_allcard(i);              show_kang(i);            }          }          info.cont_dealer++;          send_pool_card();          broadcast_msg(1,"330");          clear_screen_area(THROW_Y,THROW_X,8,34);          wmvaddstr(stdscr,THROW_Y+3,THROW_X+12,"海 底 流 局");          return_cursor();          wait_a_key(PRESS_ANY_KEY_TO_CONTINUE);          broadcast_msg(1,"290");          opening();          open_deal();         }        else        {            next_player();          next_player_request=0;        }      }      if(send_card_request && send_card_on)      {        send_one_card(table[turn]);        send_card_request=0;      }    }    if(in_join)    {      if(FD_ISSET(table_sockfd,&rfds))      {        if(!read_msg_id(table_sockfd,buf))        {          close(table_sockfd);          FD_CLR(table_sockfd,&afds);          in_join=0;          input_mode=TALK_MODE;          init_global_screen();        }        else          process_msg(1,buf,FROM_SERV);      }    }  }}read_qkmjrc(){  FILE *qkmjrc_fp;  char msg_buf[256];  char msg_buf1[256];  char event[80];  char *str1;  char rc_name[255];  sprintf(rc_name,"%s/%s",getenv("HOME"),QKMJRC);  if((qkmjrc_fp=fopen(rc_name,"r"))!=NULL)  {    while(fgets(msg_buf,80,qkmjrc_fp)!=NULL)    {      Tokenize(msg_buf);      strupr(event,cmd_argv[1]);      if(strcmp(event,"LOGIN")==0)      {        if(narg>1)        {          cmd_argv[2][10]=0;          strcpy(my_name,cmd_argv[2]);        }      }      else if(strcmp(event,"PASSWORD")==0)      {        if(narg>1)        {          cmd_argv[2][8]=0;          strcpy(my_pass,cmd_argv[2]);        }      }      else if(strcmp(event,"SERVER")==0)      {        if(narg>1)        {          strcpy(GPS_IP,cmd_argv[2]);        }        if(narg>2)        {          GPS_PORT=atoi(cmd_argv[3]);        }      }      else if(strcmp(event,"NOTE")==0)      {        if(narg>1)        {          str1=strtok(msg_buf," \n\t\r");          str1=strtok('\0',"\n\t\r");          strcpy(my_note,str1);        }      }       else if(strcmp(event,"BEEP")==0)      {        if(narg>1)        {          if(strcmp(strupr(msg_buf1,cmd_argv[2]),"OFF")==0)          {            set_beep=0;          }        }      }      }    fclose(qkmjrc_fp);  }}main(argc, argv)int	argc;char	*argv[];{  setenv("TERM", "vt100", 1);  initscr();  cbreak();  noecho();  nonl();  /*  attrset(A_NORMAL);  */  clear();  signal(SIGINT,leave);  signal(SIGIOT,leave);  signal(SIGPIPE,leave);  init_variable();  strcpy(GPS_IP,DEFAULT_GPS_IP);  GPS_PORT=DEFAULT_GPS_PORT;  read_qkmjrc();  /*if(argc>=3)  {    strcpy(GPS_IP,argv[1]);    GPS_PORT=atoi(argv[2]);  }  else if(argc==2)  {    strcpy(GPS_IP,argv[1]);    GPS_PORT=DEFAULT_GPS_PORT;  }*/  gps();  exit(0); }

⌨️ 快捷键说明

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