作者yvb (yvb)
看板PttBug
标题[情报] 五子棋禁手 bug fix
时间Thu Jun 26 22:46:45 2008
状况: gomo.c 於 revision 3036 改出 bug.
说明:
chkwin() 原传回值为 1 , 0, 或 -1,
改成传回值为 CHESS_RESULT_WIN,
CHESS_RESULT_CONTINUE,
或 CHESS_RESULT_LOST
对照 chess.h, CHESS_RESULT_LOST 值似为 2, 而非 -1;
因此 dirchk() 中,
>> (chkwin(getstyle(ku, nx, ny, color, limit), limit) >= 0))
便无法正确判断 (nx, ny) 是否为禁手, 故影响整段
>> if ((style == 3) || (style == 2)) {
>> ...
>> }
无法正确检查是否为 "真的" 活三或断三 (即关於 以禁解禁 的检查).
建议:
将上述
>> (chkwin(getstyle(ku, nx, ny, color, limit), limit) >= 0))
改为
>> (chkwin(getstyle(ku, nx, ny, color, limit), limit) != CHESS_RESULT_LOST))
即可.
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 60.199.200.53