/* м╛ио, ╪с©Лкы╤х */ int winsh0(int x, int y) { int c, d; static char word[9][10]= { "║╓", "ё╠", "ё╡", "ёЁ", "ё╢", "ё╣", "ё╤", "ё╥", "ё╦" }; static int cc[9]= {38, 37, 32, 31, 33, 35, 36, 40, 39}; char buf[100]; if (!o[x][y]&&!m[x][y]) { prints("║Ы"); return 0; } if (m[x][y]) { prints("║Я"); return 0; } if (a[x][y]) { prints("[1;31mюв[m"); return 0; } c= num_mine_beside(x, y); d= 1; if(c==0) d=0; sprintf(buf, "[%d;%dm%s[m", d, cc[c], word[c]); prints(buf); return 0; }
/* ͬÉÏ, ¼Ó¿ìËÙ¶È */ void winsh0(int x, int y) { int c, d; static char word[9][10] = { "¡¤", "£±", "£²", "£³", "£´", "£µ", "£¶", "£·", "£¸" }; static int cc[9] = { 38, 37, 32, 31, 33, 35, 36, 40, 39 }; char buf[100]; if (!o[x][y] && !m[x][y]) { prints("¡ù"); return; } if (m[x][y]) { prints("¡ñ"); return; } if (a[x][y]) { prints("[1;31mÀ×[m"); return; } c = num_mine_beside(x, y); d = 1; if (c == 0) d = 0; if (colorful) sprintf(buf, "[%d;%dm%s[m", d, cc[c], word[c]); else strcpy(buf, word[c]); prints(buf); }
/* 同上, 加快速度 */ int winsh0(int x, int y) { int c, d; static char word[9][10]= { //% "·", "1", "2", "3", "4", "5", "6", "7", "8" "\xa1\xa4", "\xa3\xb1", "\xa3\xb2", "\xa3\xb3", "\xa3\xb4", "\xa3\xb5", "\xa3\xb6", "\xa3\xb7", "\xa3\xb8" }; static int cc[9]= {38, 37, 32, 31, 33, 35, 36, 40, 39}; char buf[100]; if (!o[x][y]&&!m[x][y]) { //% prints("※"); prints("\xa1\xf9"); return; } if (m[x][y]) { //% prints("●"); prints("\xa1\xf1"); return; } if (a[x][y]) { //% prints("[1;31m雷[m"); prints("[1;31m\xc0\xd7[m"); return; } c= num_mine_beside(x, y); d= 1; if(c==0) d=0; sprintf(buf, "[%d;%dm%s[m", d, cc[c], word[c]); prints(buf); }
/* 双键 */ int dblclick(int x, int y) { int dx, dy; if(x<1|| x>30|| y<1|| y>16) return; if(!o[x][y]) return; if(num_mine_beside(x, y)!=num_mark_beside(x, y)) return; for(dx=x-1;dx<=x+1;dx++) for(dy=y-1;dy<=y+1;dy++) windig(dx, dy); }
/* 左键 */ int windig(int x, int y) { int dx, dy; if(x< 1|| x> 30|| y< 1|| y> 16) return; if(o[x][y]||m[x][y]) return; o[x][y]=1; winsh(x, y); if(a[x][y]) { show_mines(); gameover=1; return; } if(num_mine_beside(x, y)==0) { for(dx=x-1;dx<=x+1;dx++) for(dy=y-1;dy<=y+1;dy++) windig(dx, dy); } }
int winloop() { int x, y, c, marked, t0, inited; x= 10; y= 8; inited= 0; marked= 0; t0=time(0); steps=0; while(1) { c= igetkey(); //system("echo start_winloop_igetkey >> /home/bbs/stiger.test"); steps++; if(c=='q' || c==Ctrl('C')) return 0; if((c==KEY_UP||c=='k')&&y>1) y--; if((c==KEY_DOWN||c=='j')&&y<16) y++; if((c==KEY_LEFT||c=='h')&&x>1) x--; if((c==KEY_RIGHT||c=='l')&&x<30) x++; move(20,0); prints("й╠╪Д: %d ", time(0)-t0); move(21,0); prints("вЬ╠Й: %3d, %3d", x, y); move(y-1,x*2-2); //modified by stiger,2001,6,12,╦дуЩmarkedмЁ╪ф╣д╢МнС if(ganyingshi) { marknum=o[x-1][y-1]+o[x-1][y]+o[x-1][y+1]+o[x][y-1]+o[x][y+1]+o[x+1][y-1]+o[x+1][y]+o[x+1][y+1]; if((m[x][y]!=1)&&(num_mine_beside(x, y)==8-marknum)) { if(o[x-1][y-1]!=1) { if(!m[x-1][y-1]) {m[x-1][y-1]=1; marked++; } winsh(x-1,y-1);} if(o[x-1][y]!=1) { if(!m[x-1][y]) {m[x-1][y]=1; marked++; } winsh(x-1,y);} if(o[x-1][y+1]!=1) { if(!m[x-1][y+1]) {m[x-1][y+1]=1; marked++;} winsh(x-1,y+1);} if(o[x][y-1]!=1) { if(!m[x][y-1]) {m[x][y-1]=1; marked++; } winsh(x,y-1);} if(o[x][y+1]!=1) { if(!m[x][y+1]) {m[x][y+1]=1; marked++;} winsh(x,y+1);} if(o[x+1][y-1]!=1) { if(!m[x+1][y-1]) {m[x+1][y-1]=1; marked++;} winsh(x+1,y-1);} if(o[x+1][y]!=1) { if(!m[x+1][y]) {m[x+1][y]=1; marked++;} winsh(x+1,y);} if(o[x+1][y+1]!=1) { if(!m[x+1][y+1]) {m[x+1][y+1]=1; marked++;} winsh(x+1,y+1);} } if(num_mine_beside(x, y)==num_mark_beside(x, y)) dblclick(x,y); } //add by stiger,2001,6,12,╦дуЩmarkedотй╬╣днйлБ move(20,30); prints("╠Й╪г: %d ", marked); //add end if(c=='H') winhelp(); if(c=='d'|| c=='D') winrefresh(); if(c=='f'|| c=='F'){ if(!inited) { wininit(x, y); inited= 1; } dig(x, y); } if((c==83|| c==115)&&!o[x][y]) { if(m[x][y]){ m[x][y]=0; marked--; } else { m[x][y]=1; marked++; } winsh(x, y); //add by stiger,2001,6,12 move(20,30); prints("╠Й╪г: %d ", marked); //add end } if(checkwin()==1) { /*add by stiger*/ stiger=steps*1.0/(time(0)-t0); move(22,0); prints("вё╨ьдЦё║дЦЁи╧╕акё║ф╫╬Ыц©цК%lf╡╫",stiger); gameover= 0; win_checkrec(time(0)-t0);/* added by soff ╫Ьппеепп╪Л╡И */ return 1; } if(gameover) { move(22,0); prints("╨эре╨╤ё╛дЦй╖╟эак... тыю╢р╩╢н╟иё║ "); gameover= 0; return 1; } move(y-1,x*2-2); refresh(); } return 1; }