アットウィキロゴ
sui @Wiki
掲示板 掲示板 ページ検索 ページ検索 メニュー メニュー

sui @Wiki

詰め将棋

最終更新:

匿名ユーザー

- view
だれでも歓迎! 編集

ルール

  • 攻方が、王手の連続で玉を追い詰める。
  • 最短最善手順で玉を詰めれば勝ち。
  • 攻方は、持ち駒と詰め中に手に入れた駒を利用できる。
  • 玉方は、最長最善手順をもって詰めを回避する。
  • 玉方は、残りの駒を全て持ち駒として持っている。
  • 玉の逃げ方で、同手数のものがあれば、相手に駒を与えないように逃げる。

領分に関して

  • 携帯用アプリケーションとして配布。フリーウェアとする。
  • 問題は全て古典の問題とする。
  • いずれ棋士との契約による新問題を領分できれば尚良し。

開発に関して

  • 最も開発コストとして重さを持つのが、AIの作成部分。汎用性を持つAIを作成することが慣用。30手程度なら総当たり方式でも良いのではないか(無理)
  • 問題のモジュール化。後から問題を追加するようなシステムを開発する。

将棋アルゴリズム参考リンク


だらだらと開発メモ

AI考。王手をされた玉側の取るべき手法は3つ。
  • 王が移動して相手の行動圏外に移動する。
  • 王手されている駒を取得する。
  • 王手している駒が飛び系の場合(桂馬除く)、間に適当な駒を貼る。
3番目のパターンが選べる状況になると、異常に手の種類が増えてしまうので結構しんどい気がする。

もし正解パターンならば、正解用の動作をすればいいので、全くAIの出る幕はない。
誤ったパターンを選択した場合に、n手詰めならば、後はユーザがどう行動しようとも
n手以内に詰めることのできない行動を適当に選択する必要がある。
アルゴリズムの計算負荷がn二乗となるので、携帯端末での計算は厳しいかもしれない。
ただ、先手の攻撃に関する条件が「王手をすること」なので、この時点で先手の行動パターンは絞られる。

ここら辺で、AIはなしにしてみようかと考えてみたが、「間違った場所に打ってます」
なんてメッセージを出したところで説得力がないので駄目。
まぁ色々考えてみよう。つか携帯とゲームボーイってどっちが上なんやろ。


あと、ゲームのシステムについて考える。JAVAだからクラスを使う。
取り合えず、ゲームの状態クラスを作る。盤面と、持ち駒。
あとゲームのイベントマネージャクラス。
イベント(ユーザのアクション)をマネージャに投げると、その結果を教えてくれ、状態を更新する。
もし打てない手だとしたら、エラーを返す。
表示系はマネージャからのリターンを使って描画。
常に最新リターンの状態を参照できるようフックしておく必要がある。
あとシリアライズクラス。盤面の状態をすべて直列に保持しておく。
メモリ足りるかな・・。

タグ:

+ タグ編集
  • タグ:
最近更新されたスレッド
ウィキ募集バナー