= max)
{
max = cur;
p.x = i;
p.y = j;
p.z = 1;
}
}
}
return p;
}
//鏌ョ湅鍧愭爣x y鏄惁鑳借蛋
int if_done(int x,int y)
{
if(x>=CHESSBOARD1||x<0)
return 0;
if(y>=CHESSBOARD2||y<0)
return 0;
return 1;
}
void computer()
{
int i,j,k;
init2(play1);
init2(com);
for(i = 0;i0)
{
e = (buf[0]&0x07);
c = 2*buf[1];
d = 2*buf[2];
if(e == NOKEY)
{
restore_cursor(mx,my);
mx += c;
my -= d;
if(mx >= FB_W-17)
mx=FB_W-17;
if(mx < 0)
mx = 0;
if(my > FB_H-17)
my = FB_H-17;
if(my < 0)
my = 0;
save_cursor(mx,my);
drawmouse(mx,my);
}
else if(e == 1)
{
if(step%2==1)
{
// printf("play1 done!\n");
col =(int) (mx-X_OFFSET+SPACE/2)/SPACE;
row = (int)(my-Y_OFFSET+SPACE/2)/SPACE;
if(!(if_done(row,col))||board[row][col])
{
//printf("you cant done here !\n");
col =(int) (mx-X_OFFSET)/SPACE;
row = (int)(my-Y_OFFSET)/SPACE;
continue;
}
board[row][col] = 1;
restore_cursor(mx,my);
printqizi(row,col,BLACK);//鐢婚粦鑹茬殑妫嬪瓙
save_cursor(mx, my);
array[row][col][1] = step;
step ++;
computer();//鏇存柊浼樺厛绾ц〃
// printf("flag2 %d\n",flag2);
//flag2 = 1;
}
else {
// printf("play2 done!\n");
max1 = get_max(play1);
max2 = get_max(com);
if(max1 >= max2)
{
p = get_max2(play1);
}
else{
p = get_max2(com);
}
row = p.x;
col = p.y;
if(!(if_done(row,col))||board[row][col])
{
// printf("you cant done here !\n");
max1 = get_max(play1);
max2 = get_max(com);
if(max1 >= max2)
{
p = get_max3(play1);
}
else{
p = get_max3(com);
}
row = p.x;
col = p.y;
continue;
}
board[row][col] = 2;
computer(board);
restore_cursor(mx,my);
printqizi(row,col,WHITE);
save_cursor(mx, my);
array[row][col][1] = step;
step++;
//flag2 = 0;
}
if(if_gameover(board))
flag1=0;
}
else if(e == 2)
{
if(step != 1)
{
p = get_max4(array);
row = p.x;
col = p.y;
board[row][col] = 0;
array[row][col][1] = 0;
computer(board);
drawbg(row,col);
//restore_cursor(mx,my);
step--;
}
}
}
}
if(board[row][col] ==1)
printf("GAME OVER! play1 win!\n");
else
printf("GAME OVER! play2 win!\n");
}
void mouse_doing2()
{
int fd,step = 1;
int row,col,flag1=1;
int max1,max2;
char buf[8];
struct node_t p;
int mx,my,a,b,c,d,e;
mx = FB_W/2-100;
my = FB_H/2;
int n;
//drawmouse(mx,my);
fd = open("/dev/input/mice",O_RDWR|O_NONBLOCK);
if(fd < 0)
{
printf("open mouse error!\n");
}
save_cursor(mx,my);
drawmouse(mx,my);
while(flag1)
{
if(read(fd,buf,8) >0)
{
e = (buf[0]&0x07);
c = 2*buf[1];
d = 2*buf[2];
if(e == NOKEY)
{
restore_cursor(mx,my);
mx += c;
my -= d;
if(mx >= FB_W-17)
mx=FB_W-17;
if(mx < 0)
mx = 0;
if(my > FB_H-17)
my = FB_H-17;
if(my < 0)
my = 0;
save_cursor(mx,my);
drawmouse(mx,my);
}
else if(e == 1)
{
if(step%2==1)
{
// printf("play1 done!\n");
col =(int) (mx-X_OFFSET+SPACE/2)/SPACE;
row = (int)(my-Y_OFFSET+SPACE/2)/SPACE;
if(!(if_done(row,col))||board[row][col])
{
//printf("you cant done here !\n");
col =(int) (mx-X_OFFSET)/SPACE;
row = (int)(my-Y_OFFSET)/SPACE;
continue;
}
board[row][col] = 1;
restore_cursor(mx,my);
printqizi(row,col,BLACK);//鐢婚粦鑹茬殑妫嬪瓙
save_cursor(mx, my);
array[row][col][1] = step;
step ++;
//computer();//鏇存柊浼樺厛绾ц〃
// printf("flag2 %d\n",flag2);
//flag2 = 1;
}
else {
// printf("play2 done!\n");
col =(int) (mx-X_OFFSET+SPACE/2)/SPACE;
row = (int)(my-Y_OFFSET+SPACE/2)/SPACE;
if(!(if_done(row,col))||board[row][col])
{
//printf("you cant done here !\n");
col =(int) (mx-X_OFFSET)/SPACE;
row = (int)(my-Y_OFFSET)/SPACE;
continue;
}
board[row][col] = 2;
//computer(board);
restore_cursor(mx,my);
printqizi(row,col,WHITE);
save_cursor(mx, my);
array[row][col][1] = step;
step++;
//flag2 = 0;
}
if(if_gameover(board))
flag1=0;
}
else if(e == 2)
{
if(step != 1)
{
p = get_max4(array);
row = p.x;
col = p.y;
board[row][col] = 0;
array[row][col][1] = 0;
computer(board);
drawbg(row,col);
//restore_cursor(mx,my);
step--;
}
}
}
}
if(board[row][col] ==1)
printf("GAME OVER! play1 win!\n");
else
printf("GAME OVER! play2 win!\n");
}
int main(int argc, const char *argv[])
{
fb_open();
int row,col;
int m;
init(board);
init2(play1);
printf("qing xuan ze you xi mo shi:\n");
printf("1 dan ren you xi\n");
printf("2 shuang ren you xi\n");
scanf("%d",&m);
if(m == 1)
{
printboard();
mouse_doing();
}
if(m == 2)
{
printboard();
mouse_doing2();
}
return 0;
}