插入棋谱模块测试

与五子棋相关的技术文章……

Moderator: heihei

User avatar
wind23
Site Admin
Posts: 50
Joined: 2019-09-24 23:21
Contact:

插入棋谱模块测试

Post by wind23 » 2019-09-28 1:53

本功能由xsir317同学提供技术支持,在此进行感谢!

目前处于测试阶段,发现有bug欢迎随时提出!
User avatar
wind23
Site Admin
Posts: 50
Joined: 2019-09-24 23:21
Contact:

Re: 插入棋谱模块测试

Post by wind23 » 2019-09-28 1:53

1. 棋谱插入
示例代码:

Code: Select all

[board]h8i9j9k8k7j6i6h7[/board]
2. 带标记的棋谱插入(标记可用大写字母或数字)
示例代码:

Code: Select all

[board]h8h9h6i10i6i9g9g8j11i7i8/k71h102k8Ag6B[/board]
User avatar
TuDou
Posts: 17
Joined: 2019-09-26 9:31
Location: Open communication is the strongest weapon!

Re: 插入棋谱模块测试

Post by TuDou » 2019-09-28 1:55

这个功能好。
User avatar
heihei
Posts: 19
Joined: 2019-09-26 14:24

Re: 插入棋谱模块测试

Post by heihei » 2019-09-28 6:00

没找到这个功能呢,还是说只有发帖可以插入
User avatar
TuDou
Posts: 17
Joined: 2019-09-26 9:31
Location: Open communication is the strongest weapon!

Re: 插入棋谱模块测试

Post by TuDou » 2019-09-28 7:36

sun
Posts: 3
Joined: 2019-09-26 12:40

Re: 插入棋谱模块测试

Post by sun » 2019-09-28 7:47

小写标注
User avatar
xsir317
Posts: 31
Joined: 2019-09-27 16:29
Location: 包邮区
Contact:

Re: 插入棋谱模块测试

Post by xsir317 » 2019-09-28 8:33

heihei wrote:
2019-09-28 6:00
没找到这个功能呢,还是说只有发帖可以插入
发帖的时候代码写在 board 方括号标签里面就可以了。 应该会自动解析展示的。
http://ku10.com/ <-- 欢迎来稿
User avatar
xsir317
Posts: 31
Joined: 2019-09-27 16:29
Location: 包邮区
Contact:

Re: 插入棋谱模块测试

Post by xsir317 » 2019-09-28 8:53

代码方面的一点小问题:

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);
}
convertsinglepos 这个函数没必要去一位一位的截取

第一位是字母,按字母来处理, pos[0].charCodeAt() - 'a'.charCodeAt() + 1 很好没问题

第二位是1到2个数字,截取字符串之后转int 即可。 parseInt(pos.substring(1))

这样代码逻辑更清晰。
http://ku10.com/ <-- 欢迎来稿
User avatar
xsir317
Posts: 31
Joined: 2019-09-27 16:29
Location: 包邮区
Contact:

Re: 插入棋谱模块测试

Post by xsir317 » 2019-09-28 9:04

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/ <-- 欢迎来稿
User avatar
李一
Posts: 243
Joined: 2019-09-26 9:20

Re: 插入棋谱模块测试

Post by 李一 » 2019-09-28 9:10

如何区分要在h1写11和在h11写1的问题
Post Reply