おまいら最強の将棋プログラムしてみろよ Part3

このエントリーをはてなブックマークに追加
867603:04/05/28 13:23
>>866

作ってますよー。
本業の合間がなかなかとれず遅々として進んでおりませんが。

現在の状況
・駒の動き(合法判定):作成中
・勝敗の判定:王手放置と投了のみ。詰まされたかどうかの判定は後回し

当面の目標
・MAN対MAN
・その局面の評価(先手優勢とか、そういうの)をCPUにさせる

とりあえず、ここまでできれば棋譜の通りに自分で駒を動かしてみたり
しながら楽しくなっていくかなあと。
対戦できるようになるにはまだまだかかりそうですけど、
詰み検索アルゴリズムは公開されている資料も多いし、
思考ルーチンも局面の評価が上手くできればそんなに大変な作業では
ないんじゃーないだろーかとか、楽観的に考えながらゆっくり進めようと
思ってます。

作っている人がどれぐらいいるのか、対戦できるレベルまで完成?させた
ものをいじっている人がどれぐらいいるのかは自分も気になるなあ。


 
868840:04/05/28 14:49
>>866
自分も作りかけ。といってもモノは簡易手動 CSA クライアントなので>>866
言ってるのとは違うけど。
元々フロントエンドは作ってたから、バックエンドを CSA 用にすげ替えるだ
けなんだけどなかなか時間が…orz
>>866
最近はあまり時間が取れないから触ってないけど、できてますよー。
http://homapage1.nifty.com/Ike/usapyon/
うげ、タイプミスした。
http://homepage1.nifty.com/Ike/usapyon/
でサーバーは進化してるんだろうか?
>>773氏はまだ居る?
とりあえず現状を整理しておこう

小物
サーバのログに日付と時刻 (842)
Winからだと改行コードのせいで乱れる (843)
daemon化してPIDを記録 (847)
LOGIN:OKが出るのが遅い (850)
タイムアウト関係

大物
WHOコマンド
チャット

その他
手動用のクライアント

これくらい?
手動用クラ期待sage。
どんな感じだろう?telnet + α(コマンド一覧表示等) とか?
普通の将棋ソフトにプロトコル通信足したのとか
874773:04/05/28 23:49
>>871
いる。土曜日にscratchからやり直す予定。

telnet接続 -> authコマンド -> 拡張モード(WHO, 対戦相手決定とか)
-> LOGINコマンド -> CSAモード(CSAプロトコル準拠) -> 勝敗決着
-> 拡張モード

telnet接続 -> LOGINコマンド -> CSAモード(CSAプロトコル準拠)

みたいのを考えている。

>>872
水曜日あたりに更新版出して、書き込んだつもりだけど、書き込めてなかった。

Winからだと改行コードのせいで乱れる (843)
CSAプロトコルが、改行をLFに規定しているので、どうしょもないのです。
この手の奴は、CRLFなのがよく聞く話だけど
daemon化してPIDを記録
個人的趣味により、当分はPID記録するけど、daemon化せずの予定
>>874
TELNET端末からのアクセスを正式に許すなら改行コードは両対応しないといけないですね
マッキントッシュも勘定に入れるとcrのみというのも有りだし
876773:04/05/29 00:10
client -> serverの方は、
serverが寛大なのは通常問題がないので、現状でも、LF/CRLF/CRどれでもいいはずです。

server -> clientにしても、改行コードを選べるターミナルエミュレータを
使ってもらえれば、LFでも大丈夫だと思ってます。
CSAプロトコルから外れるのは、避けたほうがいいと思います。
WHOコマンドなどを取り入れたらすでにSCA上位互換ということになるので
このさい改行コードの対応もぜひ(笑
こんな案はどう?、
接続後いきなりLOGINが送られてきた場合は相手はプログラムなのでLFで行く
TELNETが相手の場合は一発目に改行を送ってもらってその改行コードを使う
LOGINプロンプトなんかもだしちゃったらいいかも



サーバープロジェクトが複数立ち上がるのがまずくなければ
vb.netの勉強にちょうどよさげな題材なので
WINDOWS版のサーバーを書いてみようかと思ってます
でも773氏の気分がそがれるようならやめときます


878773:04/05/29 00:20
>>877
なるほど。一発目のコマンドにあわせて送り返すのはいいアイディアかも。

> WINDOWS版のサーバーを書いてみようかと思ってます
> でも773氏の気分がそがれるようならやめときます

ぜひ書いてください。
879868:04/05/29 00:55
>>873
あー、自分のブツは CSA frontend on Emacs なので縁がない人には全く縁が
ないかと…。
>>818とか既存のコードを使えばもっと簡単に手動用クラはできそうだけど。

この路線で盛り上がってオープンな yet another 将棋倶楽部24 ができればと
妄想中。
>>879
というか、なんで今まで無かったんだ?
鯖側は漏れも参加してみたいが、ruby分からないので辞退。
プロトコルの仕様を読むところからだけど、
既存のフリーソフトを自分なりに改造して
ネット対戦版をつくっていきたいなぁと妄想
>>878
うい〜、ではぼちぼちととりかかります

今日の成果、接続して送受して終了まで、なんと数行でかけてしまうというのがわかった
しかし、おぶじぇくとしこうがようわからん(笑
うにうに・・・、途中から素のVBへ逃げるかも
883まともに動いていない ◆R/rLuLKeEI :04/05/29 12:58
実はtest56.jarを作りかけて773氏のが動き始めたのを知って止めたのが残ってたりする。
実は自分も鯖作りかけてたりする@Java
885まともに動いていない ◆R/rLuLKeEI :04/05/29 13:25
>>884
因みに私のはLOGIN/LOGOUTだけのコンソールアプリなのにまともに動いてないので884氏に期待。
関係ないがEclipseはええよ。
886884:04/05/29 13:33
>>885
いまんとこ同じようなもんです。
自分もコンソールアプリですけど…簡単なGUIでもつけた方が良いですか?

Eclipseは既に使用中。
887884:04/05/29 13:59
名前とパスワード、32バイト以下なら2byte文字も使用可能にしないと駄目ですかな?

1対1プロトコルとサーバプロトコル、読み比べると2byte文字使用可能な様に読める…

1on1  “空白を含まない32文字以内の7ビットASCII文字列”
server “空白を含まない32バイト以内の(略)文字列”
888773:04/05/29 16:30
火曜日バージョンをアップします。
http://up.isp.2ch.net/up/f4e4e84035fe.zip

↓これは直したつもりです。
サーバのログに日付と時刻 (842)
LOGIN:OKが出るのが遅い (850)

pingに反応しないと切断するのも、止めました。

telnetした直後に、誰が接続しているか、表示されます。
(CSAプロトコル違反なので、次のバージョンでは止めます)

>>887
空白にはタブを含むのか
英数字以外の7ビットASCIIの扱いはどうなるのか
とか不明ですね。
漢字を通すにしても、文字コードが定められてないですし。
889まともに動いてない ◆R/rLuLKeEI :04/05/29 16:53
>>886-887
将来Xサーバーを起動していないUNIX上でも使いたいので私のtest56.jarは意図的にコンソールアプリにしてます。

サーバーは8ビットスルーにしておくつもり。
でもログイン/パスワードだけ。
>>888
ども。クライアント作りに使わせてもらってます。

で、指し手に対する応答がちょっと変みたい。例えば telnet で
+7776FU を送ると
+7776FU^M,T10
みたいに指し手とカンマの間に CR が入ったのが返ってきます。

応答のときは str から CR を取り除かないといけないのかな。Ruby 詳しくな
いので報告だけですまんこ。
891890:04/05/29 23:07
あ、telnet って CRLF で送るんだっけ。だから CR が付いてきちゃうのか。
規約どおり LF で送れば問題ないのかな(まだやってないけど)。ってこと
>>890は気にしないで下さいませ(;´Д`)
892773:04/05/29 23:26
>>891
サーバの受け取りは、CRLF/LF/CRなんでもいけるはずです。(つもり)
chomp関数が対応してくれるはずなので。
scriptの方を使っている場合はRubyのversionを教えて下さい。
1.8以降でないと、駄目だと思います。
893890:04/05/29 23:50
>>892
なるほど、了解です。script の方を ruby 1.6.7 なマシンで動かしてました。
ruby 1.8.1 上でやったら確かに telnet からでも問題ありませんでした。

ちなみに 1.8 以降でないと駄目なのはこの改行コードだけの話ですか?
それとも他の機能も 1.8 以降でないとマズいですか?
894783:04/05/30 01:13
>> 888
wdoor 更新しました
>>877
ふと思ったんだがウインドウズでサーバー作ってもライセンス料払えないなと・・・・
なんで自分で作ったサーバーソフトを運用するのにMSに金はらわにゃならんのか
なっとくいかね〜
896デフォルトの名無しさん:04/05/31 00:25
>> 888
クライアントのテストに使わせていただいてます。
END Position
END Game_Summary
が、送られてこないみたいですがなぜでしょう?
ソースを見ても送ってないように見えます。
897877:04/05/31 00:39
暑くて頭がまわんない・・・・・
ただいま室温35度・・・しむ
898773:04/05/31 00:46
>>896
すみません。バグです。

>>893
今のところは、改行コードの問題だけだと思います。
今後は分かりません...
899879:04/05/31 01:12
とりあえず簡単だけど手動対戦できるとこまでは完成。
もちょっと綺麗にしたらアップできそう。
900893:04/05/31 12:42
>>898
了解です。1.8 の方でテストしていくことにします。
手指しや観戦用のクラに使う将棋板は駒の画像提供してくれる神は居ませんか〜?
あとテキストでうまく表現するアイディアとかも無いでしょうか?
これがあればサーバーが面倒見ればtelnetだけで対局もできるかもと思ったのですが
漢字が上下逆に表示できたら簡単なのになあ


>>901
将棋板は駒の→将棋板や駒の
>>901
> あとテキストでうまく表現するアイディアとかも無いでしょうか?
将棋板を覗いてみるといいと思う。テキストだけでも充分表現できてるよ。
>>903
行ってきました
探し当てたのは ▽歩 ▲歩 ★歩 ってやつでした、ほかのはなかなか見つからなかったので
もしこっちのほうがもっといいというのがあったら教えてください
駒が横長になってしまうのに少々違和感がありますが(笑)しょうがないですよね

これ見て思いつき
 歩>   <香   って横向きにしちゃうのってどう?違和感ありすぎ?だよね(笑




>>901
駒の画像ならここなんかどう?
柿木将棋用駒フォントだけど・・・

http://member.nifty.ne.jp/Takeyan/
C言語の初心者です
なんとかTCP/IP接続が出来るので自分も参加したいと思ってます
グラフィックがDOS画面で駒とか配置してるんだけど、
WINDOWSプログラミングって出来て当然なのでしょうか?
覚える事が多すぎてちょっと手を出す気が起きないのですが・・・
>>905
さんくす、いくつかダウンロードしてみました
ライセンス関係の記述が無いみたいですね
各自で入手してもらうようにすればいいのかな
>>906
windowsプログラムはCにこだわらなければVBなんかだとボタンやテキストボックスなどの部品を
ドラッグ&ドロップでペタペタと貼り付けていくと外見があっというまに出来上がってしまうので
非常に簡単に形になりますよ
ぶっちゃけ本質のとこだけコーディングすればいいので(ちょい誇張)非常にらくちんです
細かいことをいわなければ・・・(笑





>>901
X Windowだと文字がひっくり返ったフォントを作ってくれてるね。
http://www.logos.ic.i.u-tokyo.ac.jp/~gekisashi/download.html

Windowsのフォントってこんな感じのを自前で作れたっけ?
>>909
>>905のとこに有るみたいよ
>>910
あ、ほんとだ。


>>904
縦長がよければ




でどうだろう。

へぼでよければ駒絵くらい提供できるけどね。
913903:04/06/01 08:55
>>904
> 探し当てたのは ▽歩 ▲歩 ★歩 ってやつでした、ほかのはなかなか見つからなかったので
説明が書いてあったと思うけど★☆は最終手ってことね。
成駒は
成銀 "全"
成桂 "圭"
成香 "杏"
ってなカンジ。

>  歩>   <香   って横向きにしちゃうのってどう?違和感ありすぎ?だよね(笑
相手側の駒 "v歩"
自分側の駒 " 歩"
ってのも使われてるよ。
>>913
>>相手側の駒 "v歩"
みましたみました、でも私的に非常に見づらかったので脳内却下してました(笑
>>912
皆が自由に使えるものを提供してもらえると非常にうれすいです〜
>>906
用意されてるものを利用するほうが楽ちん。
CならたぶんBCBが楽。

たとえば、盤面にはTStringGrid(オブジェクトも格納できる表)
なんかを使って、盤面のクラス定義してメンバに一個もたして、
表示はなるべくTStringGridのメソッドを利用するようにしたり。