fc2ブログ

[JavaScript]ダウンロードデータ格納オブジェクトから古いデータを削除する

先日リリースした囲碁定石勉強用サイト「囲碁定石トレーニング」に、定石データを追加した。
ダウンロードした定石データはキャッシュ用オブジェクトに格納するが、定石データが増えたのでキャッシュに上限を設定した。
上限に達した場合、一番古いデータがキャッシュオブジェクトからdeleteされる。

実装は以下のようにした。
・「一番古いデータ」を得るために、キャッシュのメンバ名格納配列を作成
  /**
   * 問題データキャッシュ。メンバ名は問題選択radioのval。
   * メンバの値はダウンロードしたgetdata
   * @type {Object}
   */
  this.pdatacache = {};
  /**
   * 問題データキャッシュのメンバ名格納配列
   * @type {Array.<string>}
   */
  this.pdatacname = [];

・キャッシュを格納するメソッド
/**
 * 問題データキャッシュセット
 * @param {string} probval 問題選択radioのval
 * @param {Object} pdata セットする問題データ
 */
mijoseki.Action_.prototype.setpCache = function(probval, pdata) {
  if (this.pdatacache[probval]) {
    // migoprb.copy()は、オブジェクトをコピーする関数
    this.pdatacache[probval] = migoprb.copy(pdata);
  } else {
    if (this.pdatacname.length >= mijoseki.con.num.climit) {
      // キャッシュ数が上限のため、古いキャッシュを削除
      var delval = this.pdatacname.shift();
      delete this.pdatacache[delval];
    }
    this.pdatacname.push(probval);
    this.pdatacache[probval] = migoprb.copy(pdata);
  }
};

ブログに書くほどのことじゃない気もするが、備忘録として。
スポンサーサイト



囲碁定石勉強用サイト機能追加

先日リリースした囲碁定石勉強用サイトに、白の応手を選択可能にする機能を追加した。

囲碁定石トレーニング
囲碁定石トレーニング

当初は、プレイヤーの手を記録して、苦手な問題を優先して白の応手とするつもりだった。
だが、「苦手な問題はプレイヤー自身がわかるから、分岐を示して選ばせればいいのでは」と思い、選択可能にする機能を実装した。各プレイヤーの手を記録するより実装が簡単だし。

機能追加して実際にやってみると、毎回応手を選択するのはちょっと面倒だ。
あと、「前に戻る」で白の応手選択状態まで戻れないのがもどかしい。
そのうち、戻る機能を変更するかもしれない。

定石データを追加したのだが、相変わらず高目定石だけなのでもっと増やしたい。
どの定石が需要あるのかよくわからない。

囲碁定石勉強用サイトを公開した

先月からチョコチョコと作っていた囲碁定石勉強用プログラムが、やっと公開できる状況になった。

囲碁定石トレーニング
囲碁定石トレーニング

自分が打った手に対して、プログラムが定石に従った応手をする。
応手パターンは複数あり、ランダムに選択される。

作成した機能についての感想
・候補手表示
  プログラムが想定した手に対してだけ反応するため、ハズレの手ばかり打っていると進まなくてイライラする。
  そこで、想定した手を表示する機能をつけた。分岐を考慮したデータ構造のため、機能作成はあまり苦労しなかった。

・前に戻る
  最初は「一手戻る」だったのだが、候補手が1つしか無い場合、戻っても意味が無い。そのため、候補手が複数ある状態まで戻るようにした。
  取られた石を復活したり、コウ判定情報を回復したりするため、戻るためのデータを待避する必要がある。とりあえず待避データは1つにして、2回連続では戻れないようにした。
  待避データの取得やクリアのタイミングを網羅するのに苦労した。まだバグがありそうな気がする。
  何百手でも戻れる棋譜再生プログラムはどうやって履歴管理しているんだろう。あとでソースを読んでみるか。

高目定石しかなくて寂しいので、定石データを追加する作業を優先しよう。

囲碁定石データを作成中

プログラミングをする時間ができたので、引き続き囲碁定石勉強用プログラムを作っている。
基本的な機能ができたので、
・定石データの作成
・最低限のデザイン
を行えば公開できる状態になった。

定石データを作ろうとしたところ、問題と言うか懸念事項が発生。
囲碁の定石を扱っている本やサイトはたくさんあるのだが、著作権をどこまで考慮すればいいんだろう。
出典を明記して定石をまとめているサイトもあるが、引用として許される範囲がよくわからない。

結局、複数の本やサイトで紹介されている有名な定石だけでデータを作成することにした。解説文は、よく使われる短いフレーズにした。
今日は高目定石のデータだけを作った。
明日はデザインをやって、とりあえず高目定石だけで公開しよう。

ちなみに、囲碁は「定石」で、将棋は「定跡」。

JavaScript囲碁ライブラリを修正

プログラミングする時間が全然無かったので、久しぶりのブログエントリだ。

囲碁定石勉強用プログラム作成中、JavaScript囲碁ライブラリにいくつか機能追加をした。
また、いくつかのバグを修正したので、githubに公開しているソースを更新した。
mimami24i/jsIGO - GitHub

盤面をクリアする箇所にバグがあり、バグを修正したときにメソッド名も変更した。
互換性を考えると、プライベートじゃないプロパティやメソッド名は変えない方がいいのだろうけど、使ってる人いないと思って変えた。
変更履歴とかをちゃんと作ったほうがいいのかな。ver1.0になったら考えよう。

本来作ろうとしていた囲碁定石勉強用プログラムができるのはいつの日か。
プロフィール

himax64

Author: 南西
30代後半の無職です。
就活もせずダラダラ生きてます。
作ったもの

最新記事
人気記事
検索フォーム
カテゴリ
月別アーカイブ
最新コメント
最新トラックバック
RSSリンクの表示
QRコード
QRコード
カウンター