diff options
Diffstat (limited to 'mbbsd/dark.c')
-rw-r--r-- | mbbsd/dark.c | 725 |
1 files changed, 418 insertions, 307 deletions
diff --git a/mbbsd/dark.c b/mbbsd/dark.c index 9cf99aab..19e17444 100644 --- a/mbbsd/dark.c +++ b/mbbsd/dark.c @@ -1,4 +1,4 @@ -/* $Id: dark.c,v 1.4 2002/06/04 13:08:33 in2 Exp $ */ +/* $Id: dark.c,v 1.5 2002/07/05 17:10:27 in2 Exp $ */ #include "bbs.h" #define RED 1 @@ -6,439 +6,550 @@ typedef short int sint; typedef struct item { - short int color,value,die,out; -} item; + short int color, value, die, out; +} item; -typedef struct cur{ - short int y,x,end; -} cur; +typedef struct cur { + short int y, x, end; +} cur; -static item brd[4][8]; -static cur curr; /* 6 Ó bytes */ +static item brd[4][8]; +static cur curr; /* 6 Ó bytes */ -static char *rname[]={"§L","¬¶","ØX","¨®","¬Û","¥K","«Ó"}; -static char *bname[]={"¨ò","¥]","°¨","¨®","¶H","¤h","±N"}; +static char *rname[] = {"§L", "¬¶", "ØX", "¨®", "¬Û", "¥K", "«Ó"}; +static char *bname[] = {"¨ò", "¥]", "°¨", "¨®", "¶H", "¤h", "±N"}; -static sint cury[]={3,5,7,9}, curx[]={5,9,13,17,21,25,29,33}; -static sint rcount,bcount,cont,fix; /* cont:¬O§_¥i³s¦Y */ -static sint my=0,mx=0,mly=-1,mlx=-1; /* ²¾°Êªº®y¼Ð ¸ò ¿ï¤lªº®y¼Ð */ +static sint cury[] = {3, 5, 7, 9}, curx[] = {5, 9, 13, 17, 21, 25, 29, 33}; +static sint rcount, bcount, cont, fix; /* cont:¬O§_¥i³s¦Y */ +static sint my = 0, mx = 0, mly = -1, mlx = -1; /* ²¾°Êªº®y¼Ð + * ¼Ð */ -static sint cur_eaty,cur_eatx; /* ¦Y±¼¹ï¤è¨ä¤lªº¨q¥X®y¼Ð */ -static void brdswap(sint y,sint x,sint ly,sint lx) { - memcpy(&brd[y][x],&brd[ly][lx],sizeof(item)); - brd[ly][lx].die=1; - brd[ly][lx].color=-1; /* ¨S³oÓcolor */ - brd[ly][lx].value=-1; +static sint cur_eaty, cur_eatx; /* ¦Y±¼¹ï¤è¨ä¤lªº¨q¥X®y¼Ð */ +static void +brdswap(sint y, sint x, sint ly, sint lx) +{ + memcpy(&brd[y][x], &brd[ly][lx], sizeof(item)); + brd[ly][lx].die = 1; + brd[ly][lx].color = -1; /* ¨S³oÓcolor */ + brd[ly][lx].value = -1; } -static void pprints(sint y,sint x,char* s) { - move(y,x); +static void +pprints(sint y, sint x, char *s) +{ + move(y, x); clrtoeol(); - prints("%s",s); + prints("%s", s); } -static sint Is_win(item att, item det, sint y, sint x, sint ly, sint lx) { - sint i,c=0,min,max; - if(att.value == 1) /* ¯¥ */ - { - if(y!=ly && x!=lx) return 0; - if((abs(ly-y)==1 && brd[y][x].die==0)|| - (abs(lx-x)==1 && brd[y][x].die==0)) +static sint +Is_win(item att, item det, sint y, sint x, sint ly, sint lx) +{ + sint i, c = 0, min, max; + if (att.value == 1) { /* ¯¥ */ + if (y != ly && x != lx) return 0; - if(y==ly){ - if(x>lx) {max=x;min=lx;} - else {max=lx;min=x;} - for(i=min+1;i<max;i++) - if(brd[y][i].die==0) c++; - }else if(x==lx){ - if(y>ly) {max=y;min=ly;} - else {max=ly;min=y;} - for(i=min+1;i<max;i++) - if(brd[i][x].die==0) c++; + if ((abs(ly - y) == 1 && brd[y][x].die == 0) || + (abs(lx - x) == 1 && brd[y][x].die == 0)) + return 0; + if (y == ly) { + if (x > lx) { + max = x; + min = lx; + } else { + max = lx; + min = x; + } + for (i = min + 1; i < max; i++) + if (brd[y][i].die == 0) + c++; + } else if (x == lx) { + if (y > ly) { + max = y; + min = ly; + } else { + max = ly; + min = y; + } + for (i = min + 1; i < max; i++) + if (brd[i][x].die == 0) + c++; } - if(c != 1) return 0; - if(det.die == 1) return 0; + if (c != 1) + return 0; + if (det.die == 1) + return 0; return 1; } /* «D¯¥ */ - if( ((abs(ly-y)==1&&x==lx) || (abs(lx-x)==1&&ly==y)) && brd[y][x].out==1 ) - { - if(att.value == 0 && det.value == 6) return 1; - else if(att.value == 6 && det.value == 0) return 0; - else if(att.value >= det.value) return 1; - else return 0; + if (((abs(ly - y) == 1 && x == lx) || (abs(lx - x) == 1 && ly == y)) && brd[y][x].out == 1) { + if (att.value == 0 && det.value == 6) + return 1; + else if (att.value == 6 && det.value == 0) + return 0; + else if (att.value >= det.value) + return 1; + else + return 0; } return 0; } -static sint Is_move(sint y,sint x, sint ly, sint lx) { - if(brd[y][x].die==1 && ((abs(ly-y)==1&&x==lx) || (abs(lx-x)==1&&ly==y))) +static sint +Is_move(sint y, sint x, sint ly, sint lx) +{ + if (brd[y][x].die == 1 && ((abs(ly - y) == 1 && x == lx) || (abs(lx - x) == 1 && ly == y))) return 1; return 0; } -static void brd_rand() { - sint y,x,index; - sint tem[32]; - sint value[32]={0,0,0,0,0,1,1,2,2,3,3,4,4,5,5,6, - 0,0,0,0,0,1,1,2,2,3,3,4,4,5,5,6}; +static void +brd_rand() +{ + sint y, x, index; + sint tem[32]; + sint value[32] = {0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, + 0, 0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6}; bzero(brd, sizeof(brd)); bzero(tem, sizeof(tem)); bzero(&curr, sizeof(curr)); - srand(getpid()%2731+now%3219); - for(y=0;y<4;y++) - for(x=0;x<8;x++) - while(1) { - index=rand()%32; - if(tem[index]) continue; - brd[y][x].color=(index>15)?0:1; - brd[y][x].value=value[index]; - tem[index]=1; + srand(getpid() % 2731 + now % 3219); + for (y = 0; y < 4; y++) + for (x = 0; x < 8; x++) + while (1) { + index = rand() % 32; + if (tem[index]) + continue; + brd[y][x].color = (index > 15) ? 0 : 1; + brd[y][x].value = value[index]; + tem[index] = 1; break; } } -static void brd_prints() { +static void +brd_prints() +{ clear(); - move(1,0); + move(1, 0); outs("\n" -" [43;30m¢~¢w¢s¢w¢s¢w¢s¢w¢s¢w¢s¢w¢s¢w¢s¢w¢¡[m\n" -" [43;30m¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x[m\n" -" [43;30m¢u¢w¢q¢w¢q¢w¢q¢w¢q¢w¢q¢w¢q¢w¢q¢w¢t[m\n" -" [43;30m¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x[m\n" -" [43;30m¢u¢w¢q¢w¢q¢w¢q¢w¢q¢w¢q¢w¢q¢w¢q¢w¢t[m\n" -" [43;30m¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x[m\n" -" [43;30m¢u¢w¢q¢w¢q¢w¢q¢w¢q¢w¢q¢w¢q¢w¢q¢w¢t[m\n" -" [43;30m¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x[m\n" -" [43;30m¢¢¢w¢r¢w¢r¢w¢r¢w¢r¢w¢r¢w¢r¢w¢r¢w¢£[m\n" -" "); + " [43;30m¢~¢w¢s¢w¢s¢w¢s¢w¢s¢w¢s¢w¢s¢w¢s¢w¢¡[m\n" + " [43;30m¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x[m\n" + " [43;30m¢u¢w¢q¢w¢q¢w¢q¢w¢q¢w¢q¢w¢q¢w¢q¢w¢t[m\n" + " [43;30m¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x[m\n" + " [43;30m¢u¢w¢q¢w¢q¢w¢q¢w¢q¢w¢q¢w¢q¢w¢q¢w¢t[m\n" + " [43;30m¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x[m\n" + " [43;30m¢u¢w¢q¢w¢q¢w¢q¢w¢q¢w¢q¢w¢q¢w¢q¢w¢t[m\n" + " [43;30m¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x¡´¢x[m\n" + " [43;30m¢¢¢w¢r¢w¢r¢w¢r¢w¢r¢w¢r¢w¢r¢w¢r¢w¢£[m\n" + " "); } -static void draw_line(sint y, sint f) { - sint i; - char buf[1024],tmp[256]; +static void +draw_line(sint y, sint f) +{ + sint i; + char buf[1024], tmp[256]; *buf = 0; *tmp = 0; - strcpy(buf,"\033[43;30m"); - for(i=0; i<8; i++) - { - if(brd[y][i].die==1) - sprintf(tmp,"¢x "); - else if(brd[y][i].out==0) - sprintf(tmp,"¢x¡´"); + strcpy(buf, "\033[43;30m"); + for (i = 0; i < 8; i++) { + if (brd[y][i].die == 1) + sprintf(tmp, "¢x "); + else if (brd[y][i].out == 0) + sprintf(tmp, "¢x¡´"); else { sprintf(tmp, "¢x\033[%s1;%dm%s\033[m\033[43;30m", - (f==i)?"1;47;":"",(brd[y][i].color)?31:34, - (brd[y][i].color)?rname[brd[y][i].value]: + (f == i) ? "1;47;" : "", (brd[y][i].color) ? 31 : 34, + (brd[y][i].color) ? rname[brd[y][i].value] : bname[brd[y][i].value]); } - strcat(buf,tmp); + strcat(buf, tmp); } - strcat(buf,"¢x\033[m"); + strcat(buf, "¢x\033[m"); - move(cury[y],3); + move(cury[y], 3); clrtoeol(); - prints("%s",buf); + prints("%s", buf); } -static void redraw() { - sint i=0; - for(;i<4;i++) - draw_line(i,-1); +static void +redraw() +{ + sint i = 0; + for (; i < 4; i++) + draw_line(i, -1); } -static sint playing(sint fd, sint color,sint ch,sint *b, userinfo_t *uin) { +static sint +playing(sint fd, sint color, sint ch, sint * b, userinfo_t * uin) +{ curr.end = 0; - move(cury[my],curx[mx]); + move(cury[my], curx[mx]); - if(fix) { - if(ch=='s') { - fix=0; *b=0; return 0; + if (fix) { + if (ch == 's') { + fix = 0; + *b = 0; + return 0; } else { - draw_line(mly,-1); + draw_line(mly, -1); } } - - switch(ch) { + switch (ch) { case KEY_LEFT: - if(mx == 0) mx=7; - else mx--; - move(cury[my],curx[mx]); - *b=-1; + if (mx == 0) + mx = 7; + else + mx--; + move(cury[my], curx[mx]); + *b = -1; break; case KEY_RIGHT: - if(mx==7) mx=0; - else mx++; - move(cury[my],curx[mx]); - *b=-1; + if (mx == 7) + mx = 0; + else + mx++; + move(cury[my], curx[mx]); + *b = -1; break; case KEY_UP: - if(my==0) my=3; - else my--; - move(cury[my],curx[mx]); - *b=-1; + if (my == 0) + my = 3; + else + my--; + move(cury[my], curx[mx]); + *b = -1; break; case KEY_DOWN: - if(my==3) my=0; - else my++; - move(cury[my],curx[mx]); - *b=-1; + if (my == 3) + my = 0; + else + my++; + move(cury[my], curx[mx]); + *b = -1; break; - case 'q':case 'Q': - if(!color) bcount=0; - else rcount=0; - *b=0; + case 'q': + case 'Q': + if (!color) + bcount = 0; + else + rcount = 0; + *b = 0; return -2; - case 'p':case 'P': + case 'p': + case 'P': return -3; case 'c': return -4; case 'g': return -5; - case 's': /* ½¶}´Ñ¤l ©Î¬O¿ï¾Ü´Ñ¤l */ + case 's': /* ½¶}´Ñ¤l ©Î¬O¿ï¾Ü´Ñ¤l */ /* ¿ï¾Ü´Ñ¤l */ - if(brd[my][mx].out==1) - { - if(brd[my][mx].color != color) - { - *b=-1; + if (brd[my][mx].out == 1) { + if (brd[my][mx].color != color) { + *b = -1; break; } - if(mly<0) /*¥i¥H¿ï¾Ü*/ - { - mly=my;mlx=mx; - draw_line(my,mx); - *b=-1; + if (mly < 0) { /* ¥i¥H¿ï¾Ü */ + mly = my; + mlx = mx; + draw_line(my, mx); + *b = -1; break; + } else if (mly == my && mlx == mx) { /* ¤£¿ï¤F */ + mly = -1; + mlx = -1; + draw_line(my, -1); + } else { + draw_line(mly, -1); + mly = my; + mlx = mx; + if (brd[mly][mlx].value == 1) + fix = 1; + draw_line(my, mx); } - else if(mly == my && mlx == mx) /*¤£¿ï¤F*/ - { - mly=-1;mlx=-1; - draw_line(my,-1); - }else - { - draw_line(mly,-1); - mly=my;mlx=mx; - if(brd[mly][mlx].value == 1) fix=1; - draw_line(my,mx); - } - *b=-1; + *b = -1; break; } /* ½¶}´Ñ¤l */ - if(mly >=0 ){ *b=-1; break;} /*¥»¨Ó´N¬O½¶}ªº*/ + if (mly >= 0) { + *b = -1; + break; + } /* ¥»¨Ó´N¬O½¶}ªº */ /* ¨M©w¤@¶}©lªºÃC¦â */ - if(currutmp->color=='.'){ - if(uin->color!='1' && uin->color!='0') - currutmp->color=(brd[my][mx].color)?'1':'0'; + if (currutmp->color == '.') { + if (uin->color != '1' && uin->color != '0') + currutmp->color = (brd[my][mx].color) ? '1' : '0'; else - currutmp->color=(uin->color=='0')?'1':'0';} - brd[my][mx].out=1; - draw_line(my,-1); - move(cury[my],curx[mx]); - *b=0; + currutmp->color = (uin->color == '0') ? '1' : '0'; + } + brd[my][mx].out = 1; + draw_line(my, -1); + move(cury[my], curx[mx]); + *b = 0; break; case 'u': - move(0,0);clrtoeol(); - prints("%s¦â%s cont=%d",(brd[my][mx].color == RED)?"¬õ":"¶Â",rname[brd[my][mx].value],cont); - *b=-1; + move(0, 0); + clrtoeol(); + prints("%s¦â%s cont=%d", (brd[my][mx].color == RED) ? "¬õ" : "¶Â", rname[brd[my][mx].value], cont); + *b = -1; break; - case '\r': /* ¦Y or ²¾°Ê ly¸òlx¥²¶·¤j©ó0*/ + case '\r': /* ¦Y or ²¾°Ê ly¸òlx¥²¶·¤j©ó0 */ case '\n': - if( - mly >= 0 /* n¥ý¿ï¤l */ + if ( + mly >= 0 /* n¥ý¿ï¤l */ && - brd[mly][mlx].color != brd[my][mx].color /* ¦P¦â¤£¯à²¾°Ê¤]¤£¯à¦Y */ + brd[mly][mlx].color != brd[my][mx].color /* ¦P¦â¤£¯à²¾°Ê¤]¤£¯à¦Y */ && - (Is_move(my,mx,mly,mlx) || Is_win(brd[mly][mlx],brd[my][mx],my,mx,mly,mlx)) - ) - { - if(fix && brd[my][mx].value<0) - { - *b=-1;return 0; + (Is_move(my, mx, mly, mlx) || Is_win(brd[mly][mlx], brd[my][mx], my, mx, mly, mlx)) + ) { + if (fix && brd[my][mx].value < 0) { + *b = -1; + return 0; } - if(brd[my][mx].value>=0&&brd[my][mx].die==0) - { - if(!color) bcount--; - else rcount--; - move(cur_eaty,cur_eatx); - prints("%s",(color)?bname[brd[my][mx].value]:rname[brd[my][mx].value]); - if(cur_eatx>=26) - { cur_eatx=5;cur_eaty++; } + if (brd[my][mx].value >= 0 && brd[my][mx].die == 0) { + if (!color) + bcount--; else - cur_eatx+=3; + rcount--; + move(cur_eaty, cur_eatx); + prints("%s", (color) ? bname[brd[my][mx].value] : rname[brd[my][mx].value]); + if (cur_eatx >= 26) { + cur_eatx = 5; + cur_eaty++; + } else + cur_eatx += 3; } - brdswap(my,mx,mly,mlx); - draw_line(mly,-1); - draw_line( my,-1); - if(fix==1) *b=-1; - else { mly=-1;mlx=-1;*b=0; } - } - else *b=-1; + brdswap(my, mx, mly, mlx); + draw_line(mly, -1); + draw_line(my, -1); + if (fix == 1) + *b = -1; + else { + mly = -1; + mlx = -1; + *b = 0; + } + } else + *b = -1; break; default: - *b=-1; + *b = -1; } - - if(!rcount) + + if (!rcount) return -1; - else if(!bcount) + else if (!bcount) return -1; - if(*b == -1) return 0; - curr.y = my;curr.x = mx; curr.end=(!*b)?1:0; - send(fd,&curr,sizeof(curr),0); - send(fd,&brd,sizeof(brd),0); + if (*b == -1) + return 0; + curr.y = my; + curr.x = mx; + curr.end = (!*b) ? 1 : 0; + send(fd, &curr, sizeof(curr), 0); + send(fd, &brd, sizeof(brd), 0); return 0; } -int main_dark(int fd,userinfo_t *uin) { - sint end=0,ch=1,go_on,i=0,cont=0; - char buf[16]; - *buf=0;fix=0; - currutmp->color='.'; // '.' ªí¥ÜÁÙ¨S¨M©wÃC¦â - rcount=16;bcount=16; // initialize - cur_eaty=18,cur_eatx=5; +int +main_dark(int fd, userinfo_t * uin) +{ + sint end = 0, ch = 1, go_on, i = 0, cont = 0; + char buf[16]; + *buf = 0; + fix = 0; + currutmp->color = '.'; + //'.' ª í¥ÜÁÙ¨S ¨ M © w à C ¦ â + rcount = 16; + bcount = 16; + //initialize + cur_eaty = 18, cur_eatx = 5; brd_prints(); - if(currutmp->turn) - { + if (currutmp->turn) { brd_rand(); - send(fd,&brd,sizeof(brd),0); - pprints(21,0," [1;37m[1;33m¡»[1;37m§A¬O¥ý¤â[m"); - pprints(22,0," [1;33m¡»[5;35m½ü¨ì§A¤U¤F[m"); - }else - { - recv(fd,&brd,sizeof(brd),0); - pprints(21,0," [1;33m¡»[1;37m§A¬O«á¤â[m"); + send(fd, &brd, sizeof(brd), 0); + pprints(21, 0, " [1;37m[1;33m¡»[1;37m§A¬O¥ý¤â[m"); + pprints(22, 0, " [1;33m¡»[5;35m½ü¨ì§A¤U¤F[m"); + } else { + recv(fd, &brd, sizeof(brd), 0); + pprints(21, 0, " [1;33m¡»[1;37m§A¬O«á¤â[m"); } - move(12,3); - prints("%s[0³Ó0±Ñ][5;31m¢þ¢û[1;37m.[m%s[0³Ó0±Ñ]",currutmp->userid,currutmp->mateid); + move(12, 3); + prints("%s[0³Ó0±Ñ][5;31m¢þ¢û[1;37m.[m%s[0³Ó0±Ñ]", currutmp->userid, currutmp->mateid); outs("\n" -" [1;36m¢®¢¬[1;31m¥\\¯àªí[1;36m¢¢®¢¢¬¢®¢[m\n" -" [1;36m¢¬[1;33m ¡ô¡ö¡õ¡÷[1;37m: [1;35m²¾°Ê[m\n" -" [1;36m¢®[1;33m ¢û[1;37m: [1;35m ¿ï¤l,½¤l[m\n" -" [1;36m¢¬[1;33m enter[1;37m: [1;35m ¦Y´Ñ,©ñ´Ñ[m\n" -"¡@[1;33m¤w¸g¸Ñ¨Mªº[1;37m:[1;36m¡@¡@ ¢®[1;33m ¢ø[1;37m: [1;35m ¦X´Ñ[m\n" -" ¡@¡@ [1;36m¢¬[1;33m ¢ù[1;37m: [1;35m »{¿é[m\n" -" [1;36m¢®[1;33m ¢ë[1;37m: [1;35m ´«Ãä[m"); + " [1;36m¢®¢¬[1;31m¥\\¯àªí[1;36m¢¢®¢¢¬¢®¢[m\n" + " [1;36m¢¬[1;33m ¡ô¡ö¡õ¡÷[1;37m: [1;35m²¾°Ê[m\n" + " [1;36m¢®[1;33m ¢û[1;37m: [1;35m ¿ï¤l,½¤l[m\n" + " [1;36m¢¬[1;33m enter[1;37m: [1;35m ¦Y´Ñ,©ñ´Ñ[m\n" + "¡@[1;33m¤w¸g¸Ñ¨Mªº[1;37m:[1;36m¡@¡@ ¢®[1;33m ¢ø[1;37m: [1;35m ¦X´Ñ[m\n" + " ¡@¡@ [1;36m¢¬[1;33m ¢ù[1;37m: [1;35m »{¿é[m\n" + " [1;36m¢®[1;33m ¢ë[1;37m: [1;35m ´«Ãä[m"); - if(currutmp->turn) move(cury[0],curx[0]); + if (currutmp->turn) + move(cury[0], curx[0]); add_io(fd, 0); - while(end<=0) - { - if(uin->turn=='w' || currutmp->turn=='w') { end=-1; break; } - + while (end <= 0) { + if (uin->turn == 'w' || currutmp->turn == 'w') { + end = -1; + break; + } ch = igetkey(); - if(ch == I_OTHERDATA) - { - ch=recv(fd,&curr,sizeof(curr),0); - if(ch!=sizeof(curr)) - { - if(uin->turn=='e') { end=-3;break; } - else if(uin->turn!='w') { end=-1; currutmp->turn='w'; break; } - end=-1; break; + if (ch == I_OTHERDATA) { + ch = recv(fd, &curr, sizeof(curr), 0); + if (ch != sizeof(curr)) { + if (uin->turn == 'e') { + end = -3; + break; + } else if (uin->turn != 'w') { + end = -1; + currutmp->turn = 'w'; + break; + } + end = -1; + break; } + if (curr.end == -3) + pprints(23, 30, "\033[33mn¨D¦X´Ñ\033[m"); + else if (curr.end == -4) + pprints(23, 30, "\033[33mn¨D´«Ãä\033[m"); + else if (curr.end == -5) + pprints(23, 30, "\033[33mn¨D³s¦Y\033[m"); + else + pprints(23, 30, ""); - if(curr.end==-3) pprints(23,30,"\033[33mn¨D¦X´Ñ\033[m"); - else if(curr.end==-4) pprints(23,30,"\033[33mn¨D´«Ãä\033[m"); - else if(curr.end==-5) pprints(23,30,"\033[33mn¨D³s¦Y\033[m"); - else pprints(23,30,""); - - recv(fd,&brd,sizeof(brd),0); - my=curr.y;mx=curr.x; + recv(fd, &brd, sizeof(brd), 0); + my = curr.y; + mx = curr.x; redraw(); - if(curr.end) - pprints(22,0," [1;33m¡»[5;35m½ü¨ì§A¤U¤F[m"); - move(cury[my],curx[mx]); - }else - { - if(currutmp->turn=='p') - { - if(ch=='y') { end=-3; currutmp->turn='e'; break; } - else { pprints(23,30,""); *buf=0; currutmp->turn=(uin->turn)?0:1; } - }else if(currutmp->turn=='c') - { - if(ch=='y') { currutmp->color=(currutmp->color=='1')?'0':'1'; - uin->color=(uin->color=='1')?'0':'1'; - pprints(21,0,(currutmp->color=='1')?" \033[1;33m¡»[1;31m§A«ù¬õ¦â´Ñ\033[m":" \033[1;33m¡»[1;36m§A«ù¶Â¦â´Ñ\033[m"); + if (curr.end) + pprints(22, 0, " [1;33m¡»[5;35m½ü¨ì§A¤U¤F[m"); + move(cury[my], curx[mx]); + } else { + if (currutmp->turn == 'p') { + if (ch == 'y') { + end = -3; + currutmp->turn = 'e'; + break; + } else { + pprints(23, 30, ""); + *buf = 0; + currutmp->turn = (uin->turn) ? 0 : 1; } - else { pprints(23,30,""); currutmp->turn=(uin->turn)?0:1; } - }else if(currutmp->turn=='g') - { - if(ch=='y') { - cont=1; - pprints(21,0," \033[1;33m¡»[1;31m§A«ù¬õ¦â´Ñ\033[m ¥i³s¦Y"); + } else if (currutmp->turn == 'c') { + if (ch == 'y') { + currutmp->color = (currutmp->color == '1') ? '0' : '1'; + uin->color = (uin->color == '1') ? '0' : '1'; + pprints(21, 0, (currutmp->color == '1') ? " \033[1;33m¡»[1;31m§A«ù¬õ¦â´Ñ\033[m" : " \033[1;33m¡»[1;36m§A«ù¶Â¦â´Ñ\033[m"); + } else { + pprints(23, 30, ""); + currutmp->turn = (uin->turn) ? 0 : 1; + } + } else if (currutmp->turn == 'g') { + if (ch == 'y') { + cont = 1; + pprints(21, 0, " \033[1;33m¡»[1;31m§A«ù¬õ¦â´Ñ\033[m ¥i³s¦Y"); + } else { + pprints(23, 30, ""); + currutmp->turn = (uin->turn) ? 0 : 1; } - else { pprints(23,30,""); currutmp->turn=(uin->turn)?0:1; } } + if (currutmp->turn == 1) { + if (uin->turn == 'g') { + cont = 1; + uin->turn = (currutmp->turn) ? 0 : 1; + pprints(21, 10, "¥i³s¦Y"); + } + end = playing(fd, currutmp->color - '0', ch, &go_on, uin); - if(currutmp->turn==1) - { - if(uin->turn=='g') { cont=1;uin->turn=(currutmp->turn)?0:1; pprints(21,10,"¥i³s¦Y"); } - end=playing(fd,currutmp->color-'0',ch,&go_on,uin); - - if(end == -1) { currutmp->turn='w';break; } - else if(end == -2) { uin->turn='w';break; } - else if(end == -3) { - uin->turn='p';curr.end=-3; - send(fd,&curr,sizeof(curr),0); - send(fd,&brd,sizeof(buf),0); + if (end == -1) { + currutmp->turn = 'w'; + break; + } else if (end == -2) { + uin->turn = 'w'; + break; + } else if (end == -3) { + uin->turn = 'p'; + curr.end = -3; + send(fd, &curr, sizeof(curr), 0); + send(fd, &brd, sizeof(buf), 0); continue; - } - else if(end == -4) { - if(currutmp->color!='1'&&currutmp->color!='0') + } else if (end == -4) { + if (currutmp->color != '1' && currutmp->color != '0') continue; - uin->turn='c';i=0;curr.end=-4; - send(fd,&curr,sizeof(curr),0); - send(fd,&brd,sizeof(buf),0); + uin->turn = 'c'; + i = 0; + curr.end = -4; + send(fd, &curr, sizeof(curr), 0); + send(fd, &brd, sizeof(buf), 0); continue; - } - else if(end == -5) { - uin->turn='g';curr.end=-5; - send(fd,&curr,sizeof(curr),0); - send(fd,&brd,sizeof(buf),0); + } else if (end == -5) { + uin->turn = 'g'; + curr.end = -5; + send(fd, &curr, sizeof(curr), 0); + send(fd, &brd, sizeof(buf), 0); continue; } - if(!i && currutmp->color=='1') - { pprints(21,0," \033[1;33m¡»[1;31m§A«ù¬õ¦â´Ñ\033[m");i++;move(cury[my],curx[mx]); } - if(!i && currutmp->color=='0') - { pprints(21,0," \033[1;33m¡»[1;36m§A«ù¶Â¦â´Ñ\033[m");i++;move(cury[my],curx[mx]); } - - if(uin->turn == 'e') { end=-3; break; } - if(go_on < 0) continue; + if (!i && currutmp->color == '1') { + pprints(21, 0, " \033[1;33m¡»[1;31m§A«ù¬õ¦â´Ñ\033[m"); + i++; + move(cury[my], curx[mx]); + } + if (!i && currutmp->color == '0') { + pprints(21, 0, " \033[1;33m¡»[1;36m§A«ù¶Â¦â´Ñ\033[m"); + i++; + move(cury[my], curx[mx]); + } + if (uin->turn == 'e') { + end = -3; + break; + } + if (go_on < 0) + continue; - move(22,0);clrtoeol(); - prints(" [1;33m¡»[1;37m½ü¨ì%s¤U §O©È§O©È ¥LºâÔ£¦Ì[m",currutmp->mateid); + move(22, 0); + clrtoeol(); + prints(" [1;33m¡»[1;37m½ü¨ì%s¤U §O©È§O©È ¥LºâÔ£¦Ì[m", currutmp->mateid); currutmp->turn = 0; uin->turn = 1; - }else - { - if(ch == 'q'){uin->turn='w';break;} - move(22,0);clrtoeol(); - prints(" [1;33m¡»[1;37m½ü¨ì%s¤U §O©È§O©È ¥LºâÔ£¦Ì[m",currutmp->mateid); + } else { + if (ch == 'q') { + uin->turn = 'w'; + break; + } + move(22, 0); + clrtoeol(); + prints(" [1;33m¡»[1;37m½ü¨ì%s¤U §O©È§O©È ¥LºâÔ£¦Ì[m", currutmp->mateid); } } } - switch(end) - { + switch (end) { case -1: case -2: - if(currutmp->turn=='w'){ move(22,0);clrtoeol();prints("[1;31m§AŤF.. ¯u¬O®¥³ß~~[m");} - else {move(22,0);clrtoeol();prints("[1;31m¿é±¼¤F°Õ.....¤U¦¸Åý¥L¦n¬Ý!![m");} - break; + if (currutmp->turn == 'w') { + move(22, 0); + clrtoeol(); + prints("[1;31m§AŤF.. ¯u¬O®¥³ß~~[m"); + } else { + move(22, 0); + clrtoeol(); + prints("[1;31m¿é±¼¤F°Õ.....¤U¦¸Åý¥L¦n¬Ý!![m"); + } + break; case -3: - pprints(22,0,"[1;31m¦X´Ñò!! ¤U¦¸¦b¤À°ª¤U§a ^_^[m"); - break; + pprints(22, 0, "[1;31m¦X´Ñò!! ¤U¦¸¦b¤À°ª¤U§a ^_^[m"); + break; default: - add_io(0,0); - close(fd); - pressanykey(); - return 0; + add_io(0, 0); + close(fd); + pressanykey(); + return 0; } - add_io(0,0); + add_io(0, 0); close(fd); pressanykey(); return 0; |