Simulator 0.3
中国ルールでプレイアウトを繰り返し、勝敗の統計を取る予定ですが、今のところプレイアウトのルールのみ実装し、手動での対局となっています。
勝敗の記録は取れません。プレイアウトのルールによりアタリでない自石の1目の眼に打てなくなっています。
今回は得点を表示するようにしました。またドキュメントを JsDoc Toolkit によって作成しました。
実行結果
ソース
今回からソースへのリンク先には 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>
得点 Score <span id="sw">0</span>
得点 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.