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

📄 qkmj.c

📁 我搜集到的一个java常用类库的源代码
💻 C
📖 第 1 页 / 共 2 页
字号:
#include <stdio.h>#include <sys/types.h>#include <sys/socket.h>#include <netinet/in.h>#include <arpa/inet.h>#include  "curses.h"#include <stdlib.h>#include <string.h>#include <signal.h>#include <sys/time.h>#include <sys/errno.h>#include "mjdef.h" #include "socket.h"#include "input.h" /*gloable variables*/fd_set rfds,afds;int nfds;extern int errno;//extern char *sys_errlist[];char GPS_IP[50];int GPS_PORT;char my_username[20];char my_address[70];int PLAYER_NUM=4;char QKMJ_VERSION[]="094";char menu_item[25][5]={"  ","A ","B ","C ","D ","E ","F ","G ","H ","I ","J ",  "K ","L ","M ","N ","O ","P ","Q ","R ","  "};char number_item[30][3]={"0","1","2","3","4","5","6","7","8","9","10","11","12","13",  "14","15","16","17","18","19","20"};char mj_item[100][5]={"**","一万","二万","三万","四万","五万","六万","七万","八万","九万",  "摸牌","一索","二索","三索","四索","五索","六索","七索","八索","九索",  "    ","一筒","二筒","三筒","四筒","五筒","六筒","七筒","八筒","九筒",  "□□","东风","南风","西风","北风","    ","    ","    ","    ","    ",  "□□","红中","白板","青发","    ","    ","    ","    ","    ","    ",  "    ","春1","夏2","秋3","冬4","梅1","兰2","菊3","竹4" };struct tai_type {  char name[20];  int score;  char flag;} tai[100]={  {"庄家",1,0},  {"门清",1,0},  {"自摸",1,0},  {"断么九",1,0},  {"一杯口",1,0},  {"杠上开花",1,0},  {"海底摸月",1,0},  {"河底捞鱼",1,0},  {"抢杠",1,0},  {"东风",1,0},  {"南风",1,0},  {"西风",1,0},  {"北风",1,0},  {"红中",1,0},  {"白板",1,0},  {"青发",1,0},  {"花牌",1,0},  {"东风东",2,0},  {"南风南",2,0},  {"西风西",2,0},  {"北风北",2,0},  {"春夏秋冬",2,0},  {"梅兰菊竹",2,0},  {"全求人",2,0},  {"平胡",2,0},  {"混全带么",2,0},  {"三色同顺",2,0},  {"一条龙",2,0},  {"二杯口",2,0},  {"三暗刻",2,0},  {"三杠子",2,0},  {"三色同刻",2,0},  {"门清自摸",3,0},  {"碰碰胡",4,0},  {"混一色",4,0},  {"纯全带么",4,0},  {"混老头",4,0},  {"小三元",4,0},  {"四暗刻",6,0},  {"四杠子",6,0},  {"大三元",8,0},  {"小四喜",8,0},  {"清一色",8,0},  {"字一色",8,0},  {"七抢一",8,0},  {"五暗刻",8,0},  {"清老头",8,0},  {"大四喜",16,0},  {"八仙过海",16,0},  {"天胡",16,0},  {"地胡",16,0},  {"人胡",16,0},  {"连  拉  ",2,0}  };struct card_comb_type {  char info[10][20];  int set_count;  int tai_sum;  int tai_score[100];} card_comb[20];int comb_num;char mj[150];char sit_name[5][3]={"  ","东","南","西","北"};char check_name[7][3]={"无","吃","碰","杠","胡","听"};int SERV_PORT=DEFAULT_SERV_PORT;int set_beep;int pass_login;int pass_count;int current_item;int card_in_pool[5];int pos_x, pos_y;int current_check;int check_number;int check_x,check_y;int eat_x,eat_y;int card_count=0;int card_point;int card_index;int gps_sockfd,serv_sockfd,table_sockfd;int in_serv,in_join;char talk_buf[255]="\0";int talk_buf_count=0;char history[HISTORY_SIZE+1][255];int h_head,h_tail,h_point;int talk_x,talk_y;int talk_left,talk_right;int comment_x,comment_y;int comment_left, comment_right, comment_bottom, comment_up;char comment_lines[24][255];int talk_mode;int play_mode;int screen_mode;unsigned char key_buf[255];char wait_hit[5];int waiting;unsigned char *str;int key_num;int input_mode;int current_mode;unsigned char cmd_argv[40][100];int arglenv[40];int narg;int my_id;int my_sit;long my_money;unsigned int my_gps_id;unsigned char my_name[11];unsigned char my_pass[9];unsigned char my_note[255];struct ask_mode_info {  int question;  int answer_ok;  char *answer;} ask;struct player_info {  int sockfd;  int in_table;  int sit;  unsigned int id;  char name[30];  long money;  char pool[20];  struct sockaddr_in addr;} player[MAX_PLAYER];struct pool_info {  char name[30];  int num;  char card[20];  char out_card_index;  char out_card[10][6];  char flower[10];  char door_wind;  int first_round;  long money;  float time;} pool[5];struct table_info {  int cardnum;  int wind;  int dealer;  int cont_dealer;  int base_value;  int tai_value;} info;struct timeval before,after;int table[5];int new_client;char new_client_name[30];long new_client_money;unsigned int new_client_id;int player_num;WINDOW *commentwin, *inputwin,*global_win,*playing_win;int turn;int card_owner;int in_kang;int current_id;int current_card;int in_play;int on_seat;int player_in_table;int check_flag[5][8],check_on,in_check[6],check_for[6];int go_to_check;int send_card_on;int send_card_request;int getting_card;int next_player_on;int next_player_request;int color=1;int cheat_mode=0;char table_card[6][17];/* Request a card */request_card(){  if(in_join)  {    write_msg(table_sockfd,"313");    return(0);  }  else  {    return(mj[card_point++]);  }}  /* Change a card */change_card(position,card)char position;char card;{  int i;  i=(16-pool[my_sit].num+position)*2;  if(position==pool[my_sit].num)    i++;  pool[my_sit].card[position]=card;  show_card(20,INDEX_X+i,INDEX_Y+1,1);  wrefresh(stdscr);  show_card(card,INDEX_X+i,INDEX_Y+1,1);  wrefresh(stdscr);}/* Get a card */get_card(card)char card;{  pool[my_sit].card[pool[my_sit].num]=card;  show_card(20,INDEX_X+16*2+1,INDEX_Y+1,1);  wrefresh(stdscr);  show_card(card,INDEX_X+16*2+1,INDEX_Y+1,1);  wrefresh(stdscr);}process_new_card(sit,card)char sit;char card;{  char msg_buf[255];  current_card=card;  show_cardmsg(sit,0);  pool[sit].card[pool[sit].num]=card;  get_card(card);  return_cursor();  if(!check_flower(sit,card))    play_mode=THROW_CARD;}/* Throw cards to the table */throw_card(card)char card;{  int x,y;  if(card==20)     {    card_count--;  }  table_card[card_count/17][card_count%17]=card;  x=THROW_X+(card_count%17)*2;  y=THROW_Y+card_count/17*2;  if(y%4==3)  {    if(!color)      attron(A_BOLD);     show_card(card,x,y,1);    if(!color)      attroff(A_BOLD);  }  else    show_card(card,x,y,1);  if(card!=20)  {    card_count++;  }}send_one_card(id)int id;{  char msg_buf[255];  char card;  char sit;  int i;  sit=player[id].sit;  card=mj[card_point++];  current_card=card;  pool[sit].card[pool[sit].num]=card;  show_num(2,70,144-card_point-16,2);  sprintf(msg_buf,"314%c%c",sit,2);  broadcast_msg(id,msg_buf);  show_newcard(sit,2);  return_cursor();  sprintf(msg_buf,"306%c",card_point);  broadcast_msg(1,msg_buf);  show_cardmsg(sit,0);  card_owner=sit;  sprintf(msg_buf,"305%c",(char) sit);  broadcast_msg(1,msg_buf);  clear_check_flag(sit);  check_flag[sit][3]=check_kang(sit,card);  check_flag[sit][4]=check_make(sit,card,0);  in_check[sit]=0;  for(i=1;i<check_number;i++)    if(check_flag[sit][i])    {      getting_card=1;         in_check[sit]=1;      check_on=1;      sprintf(msg_buf,"501%c%c%c%c",check_flag[sit][1]+'0',        check_flag[sit][2]+'0',check_flag[sit][3]+'0',check_flag[sit][4]+'0');      write_msg(player[table[sit]].sockfd,msg_buf);      break;    }  sprintf(msg_buf,"304%c",card);  write_msg(player[id].sockfd,msg_buf);  gettimeofday(&before, (struct timezone *) 0);}next_player(){  char msg_buf[255];  turn=next_turn(turn);  sprintf(msg_buf,"310%c",turn);  broadcast_msg(1,msg_buf);  display_point(turn);  return_cursor();  if(table[turn]!=1)  {    strcpy(msg_buf,"303");    write_msg(player[table[turn]].sockfd,msg_buf);    show_newcard(turn,1);    return_cursor();  }  else   {    attron(A_REVERSE);    show_card(10,INDEX_X+16*2+1,INDEX_Y+1,1);    attroff(A_REVERSE);    wrefresh(stdscr);    return_cursor();    play_mode=GET_CARD;    beep1();  }  sprintf(msg_buf,"314%c%c",turn,1);  broadcast_msg(table[turn],msg_buf);}  next_turn(current_turn)int current_turn;{  current_turn++;  if(current_turn==5)    current_turn=1;  if(!table[current_turn])    current_turn=next_turn(current_turn);  return(current_turn);}display_pool(sit)int sit;{  int i;  char buf[5],msg_buf[255];    msg_buf[0]=0;  for(i=0;i<pool[sit].num;i++)  {    sprintf(buf,"%2d",pool[sit].card[i]);    strcat(msg_buf,buf);  }  display_comment(msg_buf);  }sort_pool(sit)int sit;{  int i,j,max;  char tmp;  max=pool[sit].num;  for(i=0;i<max;i++)    for(j=0;j<max-i-1;j++)      if(pool[sit].card[j]>pool[sit].card[j+1])      {        tmp=pool[sit].card[j];        pool[sit].card[j]=pool[sit].card[j+1];        pool[sit].card[j+1]=tmp;      }}sort_card(mode)int mode;{  int i,j,max;  char tmp;  if(mode)    max=pool[my_sit].num+1;  else      max=pool[my_sit].num;  for(i=0;i<max;i++)    for(j=0;j<max-i-1;j++)      if(pool[my_sit].card[j]>pool[my_sit].card[j+1])      {        tmp=pool[my_sit].card[j];        pool[my_sit].card[j]=pool[my_sit].card[j+1];        pool[my_sit].card[j+1]=tmp;      }  for(i=0;i<pool[my_sit].num;i++)  {    show_card(20,INDEX_X+(16-pool[my_sit].num+i)*2,INDEX_Y+1,1);    wrefresh(stdscr);    show_card(pool[my_sit].card[i],INDEX_X+(16-pool[my_sit].num+i)*2              ,INDEX_Y+1,1);    wrefresh(stdscr);  }  if(mode)  {    show_card(20,INDEX_X+(16-pool[my_sit].num+i)*2+1,INDEX_Y+1,1);    wrefresh(stdscr);    show_card(pool[my_sit].card[pool[my_sit].num]              ,INDEX_X+(16-pool[my_sit].num+i)*2+1,INDEX_Y+1,1);    wrefresh(stdscr);  }  return_cursor();}new_game(){  clear_screen_area(0,2,18,54);  show_cardmsg(my_sit,0);  draw_table();  wrefresh(stdscr);}opening(){  char msg_buf[255];  int i,j;  new_game();  input_mode=PLAY_MODE;  for(i=1;i<=4;i++)  {    in_check[i]=0;    pool[i].first_round=1;    wait_hit[i]=0;    pool[i].num=16;    check_for[i]=0;    pool[i].out_card_index=0;    for(j=0;j<8;j++)      pool[i].flower[j]=0;    pool[i].time=0;  }  display_info();  current_item=pool[my_sit].num;  draw_index(pool[my_sit].num+1);  for(i=0;i<16;i++)    pool[my_sit].card[i]=0;  pos_x=INDEX_X+current_item*2+1;  pos_y=INDEX_Y;  play_mode=0;  card_count=0;  check_on=0;  for(i=1;i<=4;i++)  {    if(i!=my_sit && table[i])      show_cardback(i);  }}

⌨️ 快捷键说明

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