Simulator 0.3

中国ルールでプレイアウトを繰り返し、勝敗の統計を取る予定ですが、今のところプレイアウトのルールのみ実装し、手動での対局となっています。 勝敗の記録は取れません。プレイアウトのルールによりアタリでない自石の1目の眼に打てなくなっています。
今回は得点を表示するようにしました。またドキュメントを JsDoc Toolkit によって作成しました。

実行結果

Simulator 0.3 には HTML5 Canvas が必要です。 Simulator 0.3 には HTML5 Canvas が必要です。 Simulator 0.3 には HTML5 Canvas が必要です。
0 0
       得点 Score 0        得点 Score 0

ソース

今回からソースへのリンク先には JsDoc Toolkit で作成したものを利用しています。

simulator03.html

スタイルシートの部分です。変更はありません。
<style>
hr.colored {
	border-color: goldenrod
}
#table {
	margin: 0;
	color: white;
	background-image: url(img/table800.jpg);
	z-index: 1;
	position: relative;
	left: 0px;
	top: 0px
}
#shadow {
	margin: 0;
	z-index: 2;
	position: absolute;
	left: 0px;
	top: 0px
}
#stones {
	margin: 0;
	z-index: 3;
	position: absolute;
	left: 0px;
	top: 0px
}
#control {
	color: white;
	height: 48px;
	width: 630px;
	background-color: #26130D;
	padding: 5px;
	border-spacing: 0;
	margin: 0;
	position: absolute;
	left: 0px;
	top: 480px
}
.list {
	border: 1px solid lightgray;
	max-height: 300px
}
</style>
実行結果を表示する部分です。バージョン番号を変更した他、前回、活路と石の数を別々に表示していましたが、その和を得点として表示するようにしました。
<h2>実行結果</h2>
<div style="height: 540px; width: 640; position: relative">
<canvas width="640" height="480" id="table">Simulator 0.3 には HTML5 Canvas が必要です。</canvas>
<canvas width="640" height="480" id="shadow">Simulator 0.3 には HTML5 Canvas が必要です。</canvas>
<canvas width="640" height="480" id="stones">Simulator 0.3 には HTML5 Canvas が必要です。</canvas>
<div id="control">
<img style="vertical-align: bottom; padding-left: 10px" src="img/white22.png">
<input id="white" type="button" value="パス Pass" onclick="pass()">
<span id="pw">0</span>
<img style="vertical-align: bottom; padding-left: 10px" src="img/black22.png">
<input id="black" type="button" value="パス Pass" onclick="pass()">
<span id="pb">0</span>
<input style="margin-left: 40px" type="button" value="はじめから Restart" onclick="restart()"><br>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 得点 Score <span id="sw">0</span>
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; 得点 Score <span id="sb">0</span>
</div><!-- end of control -->
</div><!-- end of 実行結果 -->

simulator03.js

バージョン 0.2にあったメソッド showLiberty と showNumStones を showScore に置き換えました。
/**
 * 得点の表示
 * @param stone 石の色
 * @param score 得点
 * @since 0.3
 */
function showScore(stone, score) {
	if (stone == BLACK) {
		var p = document.getElementById('sb');
	} else {
		var p = document.getElementById('sw');
	}
	p.firstChild.nodeValue = score;
}
ソース全体はこちら。
リンク先をご覧下さい。

board05.js

得点の表示に対応しました。
Board.prototype = {
	
	/**
	 * 着手します。
	 * @param col 石の桁位置を指定します。
	 * @param row 石の行位置を指定します。
	 * @param context3 石を描画するコンテキスト
	 * @param context2 影を描画するコンテキスト
	 * @since 0.2
	 */
	move : function(col, row, context3, context2) {
		passButton[this.p.turn].disabled = true;
		var turn = this.p.turn;
		var moved = this.p.move(col, row);	// 着手禁止点は false
		var mv = new Move(col, row);
		if (!mv.isPass(this.ro)) {
//			setWatch();
			if (moved) {
				this.prisoner[P_BLACK] = this.p.prisoner[P_BLACK];
				this.prisoner[P_WHITE] = this.p.prisoner[P_WHITE];
//				rec.move(col, row);
				this.drawStone(col, row, turn, context3, context2);
				auClick.play();
				if (this.p.d.abs()) {
					this.removeStones(this.p.d, this.p.turn, context3, context2);
					showPrisoner(turn, this.prisoner[turn - 1]);
				}
				showScore(BLACK, this.p.liberty[P_BLACK] + this.p.w.inv().abs());
				showScore(WHITE, this.p.liberty[P_WHITE] + this.p.b.inv().abs());
			} else
				auError.play();
		}
		passButton[this.p.turn].disabled = false;
		return moved;
	},
ソース全体はこちら。
リンク先をご覧下さい。

pos07.js

JsDoc Toolkit に対応しました。その他の変更はありません。
リンク先をご覧下さい。

move03.js

JsDoc Toolkit に対応しました。その他の変更はありません。
リンク先をご覧下さい。

bvector06.js

JsDoc Toolkit に対応しました。その他の変更はありません。
リンク先をご覧下さい。

bmatrix05.js

JsDoc Toolkit に対応しました。その他の変更はありません。
リンク先をご覧下さい。

ドキュメント

JsDoc Toolkit で作成したドキュメントはこちら
Copyright © 2012-2017 たかはしのんき. All rights reserved.