插入棋谱模块测试
Moderator: heihei
Re: 插入棋谱模块测试
1. 棋谱插入
示例代码:
2. 带标记的棋谱插入(标记可用大写字母或数字)
示例代码:
Code: Select all
[board]h8i9j9k8k7j6i6h7[/board]
Code: Select all
[board]h8h9h6i10i6i9g9g8j11i7i8/k71h102k8Ag6B[/board]
Re: 插入棋谱模块测试
这个功能好。
Re: 插入棋谱模块测试
没找到这个功能呢,还是说只有发帖可以插入
Re: 插入棋谱模块测试
小写标注
Re: 插入棋谱模块测试
http://ku10.com/ <-- 欢迎来稿
Re: 插入棋谱模块测试
代码方面的一点小问题:
convertsinglepos 这个函数没必要去一位一位的截取
第一位是字母,按字母来处理, pos[0].charCodeAt() - 'a'.charCodeAt() + 1 很好没问题
第二位是1到2个数字,截取字符串之后转int 即可。 parseInt(pos.substring(1))
这样代码逻辑更清晰。
Code: Select all
function convertsinglepos(pos) {
if(pos.length < 2 || pos.length > 3) {
return null;
}
var n1 , n2;
n1 = pos[0].charCodeAt() - 'a'.charCodeAt() + 1;
n2 = parseInt(pos.substring(1));
//TODO 这里可以添加对n1 ,n2 取值范围的检查
return n2.toString(16) + n1.toString(16);
}
第一位是字母,按字母来处理, pos[0].charCodeAt() - 'a'.charCodeAt() + 1 很好没问题
第二位是1到2个数字,截取字符串之后转int 即可。 parseInt(pos.substring(1))
这样代码逻辑更清晰。
http://ku10.com/ <-- 欢迎来稿
Re: 插入棋谱模块测试
Code: Select all
function convertpos(pos) {
var ret = '';
var tmp_str = '';//临时变量,这个也可以改为坐标记录
for (i = 0; i < pos.length; i ++) {
//这里检查每个字符的合法性,然后去做转换
if(pos[i] >= 'a' && pos[i] <= 'o') //是字母
{
if(tmp_str)
{
ret += convertsinglepos(tmp_str);
}
tmp_str = pos[i];
}
else //是数字
{
tmp_str += pos[i];
}
}
ret += convertsinglepos(tmp_str);
return ret;
}
convertpos 其实就是负责做个切割。
切割就是遍历一遍字符串,如果遇到字母,就把前面那段扔去转换;
如果遇到数字,就往后拼。
一遍遍历足够了,不用正则一遍,再遍历3次。
http://ku10.com/ <-- 欢迎来稿
Re: 插入棋谱模块测试
如何区分要在h1写11和在h11写1的问题