c语言五子棋linux,在linux下ubuntu的五子棋游戏c语言代码.doc

= 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;

}

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值