本节目标:
借着AlphaGo与李世石的围棋大战的话题正风靡互联网的时机,回味一下以前下棋时的
一些往事。曾经有一段时间,阿伟也对围棋着迷过,棋书棋谱看了不少,各种围棋网站也
常常光临,但可惜实在忍受不住一局优秀对局的超长耗时,因此从来没有突破过业余十八级
的搞笑棋力层次,后来对围棋也就渐渐失去兴趣了。
那时还看了一部动漫《棋灵王》,当时感觉很有意思,甚至想把剧中的对局棋谱录下来,
但后来意识到那只是些并不存在的对局而已,只是剧情需要而展现出来的一鳞半爪,当不得真。
现在也就只记得两个主角星野光,塔矢亮,以及那个喜欢用“秀策尖”的棋灵而已,其它细节
再也想不起来了。
而今天,阿伟就要来讲这个AlphaGo和李世石围棋大战的故事,娱乐到死的年代,向来都
借着AlphaGo与李世石的围棋大战的话题正风靡互联网的时机,回味一下以前下棋时的
一些往事。曾经有一段时间,阿伟也对围棋着迷过,棋书棋谱看了不少,各种围棋网站也
常常光临,但可惜实在忍受不住一局优秀对局的超长耗时,因此从来没有突破过业余十八级
的搞笑棋力层次,后来对围棋也就渐渐失去兴趣了。
那时还看了一部动漫《棋灵王》,当时感觉很有意思,甚至想把剧中的对局棋谱录下来,
但后来意识到那只是些并不存在的对局而已,只是剧情需要而展现出来的一鳞半爪,当不得真。
现在也就只记得两个主角星野光,塔矢亮,以及那个喜欢用“秀策尖”的棋灵而已,其它细节
再也想不起来了。
而今天,阿伟就要来讲这个AlphaGo和李世石围棋大战的故事,娱乐到死的年代,向来都
是语不惊人死不休的,各种无厘头尚且层出不穷,何况是真人真事呢!
<span style="font-size:18px;">/**
* @usage 围棋打谱
* @author mw
* @date 2016年03月14日 星期一 08:06:31
* @param 棋谱字符串.sgf格式: ...;B[nq];W[kc]...
* @return
*
*/
/*
棋谱 [qí pǔ]
[释义] chess manual;
围棋 [wéi qí]
[释义] go; weiqi, a game played with black and white pieces on a board of 361 crosses; I-go; the game of go;
*/
function Go() {
this.play = function(GoManual, GoStep) {
//主打谱函数,调用入口
//传入参数为棋谱字符串,以及需要显示到的步数
var s = GoManual;
var resolveString = 'abcdefghijklmnopqrs';
var array = s.split(';');
//用了split函数,array[0]好像是''的
if (array[0] == '') {
array.shift();
}
var len = array.length;
var step = 0;
//棋盘每格的大小
var r = 20;
var x=0, y=0;
var player;
//棋子位置矩阵
var posArray = this.genIdleArray();
//每手棋按顺序
var seqArray = new Array(0);
if (GoStep > len) {
step = len;
}
else {
step = GoStep;
}
//到指定步数为止
for (var i = 0; i < step; i++) {
if (array[i] != '') {
//格式:B[pd]
x = resolveString.indexOf(array[i][2]);
y = resolveString.indexOf(array[i][3]);
player = array[i][0];
if (player == 'B') {
posArray[x][y] = 1;
}
else if (player == 'W') {
posArray[x][y] = -1;
}
this.eatDeal(posArray, [x, y]);
len = seqArray.length;
for (var i = 0; i < len; i++) {
if (seqArray[i][0] == x && seqArray[i][1] == y) {
//此处经过提子重放
seqArray[i][0] = -1;
seqArray[i][1] = -1;
}
}
seqArray.push([x, y, i+1]);
}
}
//棋盘九星
var star = [[0,0], [6, 6], [-6, 6], [6, -6], [-6, -6],
[0, 6], [0, -6], [-6, 0], [6, 0]];
plot.save();
plot.setGlobalAlpha(0.5);
plot.setFillStyle('orange');
shape.fillRect(0, 0, 20*r, 20*r);
plot.setFillStyle('yellow')
shape.fillRect(0, 0, 18*r, 18*r);
plot.setStrokeStyle('red')
.setLineWidth(3);
shape.strokeRect(0, 0, 18*r, 18*r);
plot.setFillStyle('red');
for (var i = 0; i < 9; i++) {
shape.fillCircle(star[i][0]*r, star[i][1]*r, r/4);
}
plot.setGlobalAlpha(1.0);
var x, y;
for (var row = 0; row < 19; row++) {
for (var col = 0; col < 19; col++) {
x = (row-9)*r;
y = (col-9)*r;
if (posArray[row][col] == 1) {
shape.sphere([x, y], r/2, 'black');
}
else if (posArray[row][col] == -1) {
shape.sphere([x, y], r/2, '#AAAAAA');
}
}
}
plot.setFillStyle('red');
plot.fillText('第'+step.toFixed(0)+'手', -200, -185, 100);
len = s