编辑:提升为女王以外的任何事物都会使一切爆炸。支持它也将非常困难(我的第2部分程序支持促销不足,但是仅通过读取像素来存储第1部分的信息是一场噩梦)。
Edit2:我刚刚注意到您的意思是真正的PGN棋盘棋,所以这都是没有用的,我很可能会删除我的答案。
第1部分:使用像素读取器存储正方形
完全有可能,所需步骤将是:
- 改变板的设置,以便它突出的最后一步(prefereably 不只是边境)
- 编写一个程序来读取给定(x,y)上的像素
- 使它在每个正方形上读取大约5个以上的像素(因此,光标/片段不可能覆盖要读取的所有像素)
- 将HEX转换为RBG,然后给出我们认为接近“最后一步”颜色的可接受值范围
- 将移动保存在数组中,其格式
["h1-h8", "e4-e5", ...]
仅为起始和终止平方(顺序不重要)
注意:从这里我们无法真正知道起始/结束位置是从哪个正方形开始的,但是只有两种可能性,其中只有一种是合法的。
我已经写了简单的基于像素的宏/机器人在C#中的RPG游戏,我可以保证,这不是说很难,因为:
- 凸轮是静态的(因此x,y值不会弄乱)
- 您以前知道背景颜色,或者可以在播放之前进行设置
基本上,最好是在线玩游戏,并且直接从屏幕上录制。
抱歉,第一部分没有程序
第2部分:将该列表导出到PGN
要将此列表转换为真实的PGN,您可以使用我用JavaScript编写的程序来记录移动,并且其中一个函数moveCaller()
传递两个正方形的位置,然后搜索final_pos
的合法移动,initial_pos
如果存在匹配项,则调用makeMove()
。因此,我们可以调用它两次e5 to e4
,e4 to e5
并且我保证它会忽略非法调用。
- 下载项目(直接链接.zip)
- 解压
.zip
- 使用以下命令更改
index.html
文件的JavaScript :
'
$(function(){
var i, len, arr, temp, m_board;
m_board=IsepicChess.initBoard({name : "main"});
arr=["e4-e2", "e7-e5", "f3-g1"]; //is ok for the initial and final squares to be swapped
for(i=0, len=arr.length; i<len; i++){
temp=arr[i].split("-");
//one of the two following lines will silently fail
m_board.moveCaller(temp[0], temp[1]);
m_board.moveCaller(temp[1], temp[0]);
}
m_board.refreshBoard();
});
.4。复制移动列表,并在其上方添加一些PGN标头,如此类[WhiteElo "2400"]
。