FCK-GARDEN 板


LINE

=============================   由前面的解析,我们知道,有四、有三,是怎麽判断?   原来是判断dir[index] 这个阵列啊!   那这个阵列又怎麽来的呢?   我们很快注意到在该副函式中,有个 dir[i] = dirchk(ku, x, y, color, limit, i ? (i >> 1) : -1, i ? (i & 1) : 1);   很好,显然dir[i]这个变数 来自於dirchk()   现在我们追踪到dirchk函式里面去   这个函式相当复杂!我们一段一段解析 dirchk(board_t ku, int x, int y, int color, int limit, int dx, int dy) { int le, ri, loc, style = 0; le = gomo_getindex(ku, x, y, color, -dx, -dy); //往反方向查有多少子连结 ri = gomo_getindex(ku, x, y, color, dx, dy);  //正向查询有哪些子连结 loc = (le > ri) ? (((le * (le + 1)) >> 1) + ri) : (((ri * (ri + 1)) >> 1) + le); //恩...这里就 快看不懂了                    //大致上是要把算出两个方向得到的                      //值进行一个综合计算 style = pat_gomoku[loc];     //问题在这个阵列 if (limit == 0) //如果是无禁情况 return (style & 0x0f);     //就直接回传後四个bit     style >>= 4; //右偏移4bits if ((style == 3) || (style == 2)) { //如果有三或四...........?! } return style; } 在看到最精采的部分前,先让我们回头来看看这边在写些什麽。 我们最终结果是要得到一颗子所在方位,是构成活三、死三什麽子力结构的。 但这过程是复杂的,因为这边虽然已经有方位,但那毕竟代表着一条线 上的子力分布,我们还要考虑两个方向呢! 於是忽我们分别计算le跟ri,在利用後面函式进行综合计算。 计算出loc,在使用查表计算,才可以判断出一颗子是否构成三或四 但又要怎麽判断出一颗子是三,还是四呢? 我们注意到这个函数: gomo_getindex(board_t ku, int x, int y, int color, int dx, int dy) { int i, k, n; for (n = -1, i = 0, k = 1; i < 5; i++, k*=2) { x += dx; y += dy; if ((x < 0) || (x >= BRDSIZ) || (y < 0) || (y >= BRDSIZ)) { n += k; break; //撞墙的时候 } else if (ku[x][y] != BBLANK) { n += k; if (ku[x][y] != color) break;  //碰到不同色子的话 } } if (i >= 5) n += k; return n; }   我们这边看到一个移位概念,k*=2 我们很快联想到这个函数传回值  似乎代表着 以 (x,y) 为起点,方向 (dx,dy),传回以 bit 表示相邻哪几格有子 如 10111 表示该方向相邻 1,2,3 有子, 4 空地 最高位 1 表示对方的子, 或是墙 举例:   2 ├┼┼┼┼┼┤ 1 ├○○○┼○┤ └┴┴┴┴┴┘ 现在返回座标2,1    a      求函数gomo_getindex(KU,2,1,White, 1,0) 代表着求2,1这个座标上,往右(由於dx=1 dy=0)           颜色为白,求相邻状况?           传回值为 1 1 0 1 1      ^第一格有子,即图上a位                   ^第二格                  ^第三格没有子   ============================= -- 请多指教喔!! /\●/\ )) (( / /▲\ \ \\ --



※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 118.169.79.199
1F:推 minolala:超级辛苦;) 218.168.179.89 04/03 00:31







like.gif 您可能会有兴趣的文章
icon.png[问题/行为] 猫晚上进房间会不会有憋尿问题
icon.pngRe: [闲聊] 选了错误的女孩成为魔法少女 XDDDDDDDDDD
icon.png[正妹] 瑞典 一张
icon.png[心得] EMS高领长版毛衣.墨小楼MC1002
icon.png[分享] 丹龙隔热纸GE55+33+22
icon.png[问题] 清洗洗衣机
icon.png[寻物] 窗台下的空间
icon.png[闲聊] 双极の女神1 木魔爵
icon.png[售车] 新竹 1997 march 1297cc 白色 四门
icon.png[讨论] 能从照片感受到摄影者心情吗
icon.png[狂贺] 贺贺贺贺 贺!岛村卯月!总选举NO.1
icon.png[难过] 羡慕白皮肤的女生
icon.png阅读文章
icon.png[黑特]
icon.png[问题] SBK S1安装於安全帽位置
icon.png[分享] 旧woo100绝版开箱!!
icon.pngRe: [无言] 关於小包卫生纸
icon.png[开箱] E5-2683V3 RX480Strix 快睿C1 简单测试
icon.png[心得] 苍の海贼龙 地狱 执行者16PT
icon.png[售车] 1999年Virage iO 1.8EXi
icon.png[心得] 挑战33 LV10 狮子座pt solo
icon.png[闲聊] 手把手教你不被桶之新手主购教学
icon.png[分享] Civic Type R 量产版官方照无预警流出
icon.png[售车] Golf 4 2.0 银色 自排
icon.png[出售] Graco提篮汽座(有底座)2000元诚可议
icon.png[问题] 请问补牙材质掉了还能再补吗?(台中半年内
icon.png[问题] 44th 单曲 生写竟然都给重复的啊啊!
icon.png[心得] 华南红卡/icash 核卡
icon.png[问题] 拔牙矫正这样正常吗
icon.png[赠送] 老莫高业 初业 102年版
icon.png[情报] 三大行动支付 本季掀战火
icon.png[宝宝] 博客来Amos水蜡笔5/1特价五折
icon.pngRe: [心得] 新鲜人一些面试分享
icon.png[心得] 苍の海贼龙 地狱 麒麟25PT
icon.pngRe: [闲聊] (君の名は。雷慎入) 君名二创漫画翻译
icon.pngRe: [闲聊] OGN中场影片:失踪人口局 (英文字幕)
icon.png[问题] 台湾大哥大4G讯号差
icon.png[出售] [全国]全新千寻侘草LED灯, 水草

请输入看板名称,例如:BuyTogether站内搜寻

TOP