在编译的时候:线程版需要连接 curses库 和pthread库 ;进程版只要连接curses库即可
由于这个代码是本人第一次编写的,有些地方可能写法不规范,注释不明了,仅限参考。
1、进程版
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/msg.h>
#include <curses.h>
#include <time.h>
#define BUFSIZE 1024
#define TYPE 100
#define FLAG 99
typedef struct{
long mtype;
char mtext[BUFSIZE];
}msgbuf_t;
int a=-1,b=-1;
int an,bn;
int score = 0;
int scra[28][18]={0}; // show data
int scrb[28][18]={ // result data
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,0,0,0,0,0,0,0,0,0,0,1,0,0,0,
0,0,0,1,1,1,1,1,1,1,1,1,1,1,1,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,
0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0
};
int model[7][4][4][4]={
{ // model formate 0
{ // direct 0
0,0,0,0,
0,0,0,0,
1,0,0,0,
1,1,1,0
},
{ // direct 1
0,0,0,0,
1,1,0,0,
1,0,0,0,
1,0,0,0
},
{ // derect 2
0,0,0,0,
0,0,0,0,
1,1,1,0,
0,0,1,0
},
{ // direct 3
0,0,0,0,
0,1,0,0,
0,1,0,0,
1,1,0,0
}
},
{ // model formate 1
{ // direct 0
0,0,0,0,
0,0,0,0,
0,0,1,0,
1,1,1,0
},
{ // direct 1
0,0,0,0,
1,0,0,0,
1,0,0,0,
1,1,0,0
},
{ // direct 2
0,0,0,0,
0,0,0,0,
1,1,1,0,
1,0,0,0
},
{ // direct 3
0,0,0,0,
1,1,0,0,
0,1,0,0,
0,1,0,0
}
},
{ // model formate 2
{ // direct 0
0,0,0,0,
0,0,0,0,
1,1,0,0,
0,1,1,0
},
{ // direct 1
0,0,0,0,
0,1,0,0,
1,1,0,0,
1,0,0,0
},
{ // direct 2
0,0,0,0,
0,0,0,0,
1,1,0,0,
0,1,1,0
},
{ // direct 3
0,0,0,0,
0,1,0,0,
1,1,0,0,
1,0,0,0
}
},
{ // model formate 3
{ // direct 0
0,0,0,0,
0,0,0,0,
0,1,1,0,
1,1,0,0
},
{ // direct 1
0,0,0,0,
1,0,0,0,
1,1,0,0,
0,1,0,0
},
{ // direct 2
0,0,0,0,
0,0,0,0,
0,1,1,0,
1,1,0,0
},
{ // direct 3
0,0,0,0,
1,0,0,0,
1,1,0,0,
0,1,0,0
}
},
{ // model formate 4
{ // direct 0
0,0,0,0,
0,0,0,0,
1,1,0,0,
1,1,0,0
},
{ // direct 1
0,0,0,0,
0,0,0,0,
1,1,0,0,
1,1,0,0
},
{ // direct 2
0,0,0,0,
0,0,0,0,
1,1,0,0,
1,1,0,0
},
{ // direct 3
0,0,0,0,
0,0,0,0,
1,1,0,0,
1,1,0,0
}
},
{ // model formate 5
{ // direct 0
0,0,0,0,
0,0,0,0,
0,1,0,0,
1,1,1,0
},
{ // direct 1
0,0,0,0,
1,0,0,0,
1,1,0,0,
1,0,0,0
},
{ // direct 2
0,0,0,0,
0,0,0,0,
1,1,1,0,
0,1,0,0
},
{ // direct 3
0,0,0,0,
0,1,0,0,
1,1,0,0,
0,1,0,0
}
},
{ // model formate 6
{ // direct 0
0,0,0,0,
0,0,0,0,
0,0,0,0,
1,1,1,1
},
{ // direct 1
1,0,0,0,
1,0,0,0,
1,0,0,0,
1,0,0,0
},
{ // direct 2
0,0,0,0,
0,0,0,0,
0,0,0,0,
1,1,1,1
},
{ // direct 3
1,0,0,0,
1,0,0,0,
1,0,0,0,
1,0,0,0
}
}
};
/*----------------------------