忍者ブログ

ぐれーすけーるブログ

ゲームプログラミングを独習中なんだぜ☆

↑同人活動☆w
ホームページ☆
『きふわらべ』のダウンロード
は、ホームページへ飛ぶ↑☆

ぐれーすけーる は、ゲーム86パーセントでお送りするんだぜ☆↑押すと最新記事に飛ぶぜ☆



第25回世界コンピュータ将棋選手権1日目に
初出場した『きふわらべ』の記事はこちら↑☆
↑東方二次創作音楽
CD78サークル分買った
No image
(↑終了)
秋葉原裏通りの潰れそうなオリジナル同人
ソフト店『さんげっと』の記事はこちら☆

[PR]

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

【将棋】めざせ電王戦(6) ミニマックス戦略とは何か、イメージとして完璧に自分のものにするためにググった☆!

2014/08/11 19:23

コンピューター将棋というと、すぐ

  ・「ミニマックス戦略」
  ・「αβ法」

という言葉が出てきて、その説明が始められてしまうんだぜ☆

a とか -2 とか 算数の言葉使いが始まると 眠くなるので、4コマ漫画で解説して欲しいんだぜ☆



Webでググったら

『Hotta Lab.』5.ゲーム理論 ノート
http://www.bunkyo.ac.jp/~hotta/lab/

というページで説明があったので ちょくちょく読むことにしよう☆

世の中には もっと分かりやすい解説Webサイトが存在して、
わたしも もうちょい他を探してみよう、と手を伸ばすような 全幅探索 を進めれば
もっとお得な 解説Webサイト に出会えるのかもしれないが、
それは分からないからな☆

どこらへんかで 諦めなければならない☆
私が情報を得るときの 探索の枝刈り(*1) の方法は 人生経験で身に付いている☆

                *1…これ以上調べる必要はないと断定するための
                  判断ポイント、方法。


    ・深読みは1手まで (それは読んでいるとは言わない☆ww浅い☆www)

    ・評価関数は
           この本は眠そう    0点
           この本は読めそう 100点
     の2値式である

    ・最初に100点を見つけたものを選ぶ  (もう確定☆wwww)


この枝刈り戦術に わたし自身 疑問はないのか☆ww




あと、わたしは 重要なことだと思っているんだが、

  ・「ミニマックス戦略」
  ・「αβ法」

の2つを、同じレベルに並べて 続けて説明するのは ごちゃごちゃ だと思うんだぜ☆

片方は戦略、片方は戦術なんだぜ☆



  ・ミニマックス戦略で 望みうる利益は少しも減らしたくない、
   だが それを現実的にやるには 壮大すぎる。
   そこで αβ法を使う

  ・片っ端から掃く戦略で 時間かけても庭をちり一つ残さないほど掃除したい、
   だが それを現実的にやるには 壮大すぎる。
   そこで 弟を使う

ぐらいの上下関係だろう☆


テンプレ
=======
問い. 上の例を参考に 次の文章の穴を埋めよ☆

  ・[      ]で [            ]したい(したくない)。
   だが それを現実的にやるには 壮大すぎる。
   そこで [    ]




なんというか、

    コンピューター将棋ソフトは ミニマックス戦略を採るんだ!


という断言で すべて始まっているんだぜ☆
   ~~~~

 (断言に見えず、単に テクニックの1つが
  適当な順番でだらだらと話し始められた、ぐらいに読んでしまう本もある)




もし、 ミニマックス戦略でない将棋ソフト が登場すれば、
博士が 口から茶を吹いてディスプレイに染みを残すレベルなんだぜ☆





2014/08/11 01:02

といっても、調べて わたしが理解した分には、

    ミニマックス戦略と、 マックスミニ戦略は、 どちらも同じ。

    マキシマックス戦略は 楽観的。


なんだぜ☆


 ミニマックス戦略な将棋
 ===================

    最悪な中、良い手を採る戦略なんだぜ☆ マックスミニ戦略と同じ。

    みえすいた好手は塞がれる、と見込んで
    お互い 残された 一番よい 凡手を ずっと続ける。


 マックスミニ戦略な将棋
 ===================

    最悪な中、良い手を採る戦略なんだぜ☆ ミニマックス戦略と同じ。

    あっちが立てば こっちが立たず、という状況だが
    逆に考えれば あっちが立たないときは こっちが立っている☆
    どっちかは立っているのだ☆!

    そして トータルで見れば 全体は上向いているという状況ならば
    あちこちに バランスよく 振り分ける 巨大な財力さえあれば
    全体を押さえられる → 全体は上向いている =
      部分的な損を上回る部分的な得をどこかがしている → じりじり得する☆
    が見込める☆

    という指し方☆ (どんな指し方なんだぜ☆?)


 マキシマックス戦略な将棋
 =====================

    うまく行けば 最善じゃないか、と 最善を見込んで
    お互い 飛車先の歩を受けない。
    





2014/08/11 23:11

ミニ が マックス な戦略というのは何なのか、 ポエム風にして説明しよう。



           コンピューター将棋ソフト ポエム

                     書いた人 むずでょ
  ┏━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┓
  あなたがいて、わたしがいる。
  あなたが手を選ぶから、わたしも 次の手を指せる。
  もし あなたが この将棋盤の100手先を見通せるなら、
  そこには 1頻波羅(びんばら(*1)) ~ 1矜羯羅(こんがら(*1))ほどの
  将棋の盤面が 想像できているだろう。
    
      *1…1億とか1兆とか1無量大数よりも、上の数字。
        そこに至る途中の局面も全部足すと、
        1阿伽羅(あから(*1))以上の 将棋盤 は見たのだろう。
  わたしは、100手先を既に読んでいたので、
  あなたが 99手目に どんな手を指せるかを、既に 知っている。
    
  私は 100手目を見ることができるからこそ、
  99手目の中で あなたが選びそうな1手を、 調べることができるのだ。
  99手目の将棋盤の数も 1頻波羅 ~ 1矜羯羅 ほどあり、
  その1つ1つの将棋盤に、 0~593 手の あなたの合法手が存在する。
  あなたは その局面の中から 私に、
  私が一番苦しくなった100手目 を譲る1手を、選ぶのだ。
  ……わたしは、1頻波羅 ~ 1矜羯羅 ほどある
    マイナンバーワン苦しい局面☆ユワ・セレクションを 見ている。
      
    これらあなたの99手目は、私がどの98手目の後に指されたのかによって
    グループに分けることができる。
      
    あなたの一手を選ぶ力、それが私の98手目にはあるのだ。
    98手目から続くあなたの99手目は、0 ~ 593 手の合法手が存在する。
    どの98手目を指せば 一番苦しくないのか、
    99手目を知っている私には 98手目を 選ぶことができる。
  こうして選んだ わたしの98手目も、あなたの頭の中にある
  1頻波羅 ~ 1矜羯羅 の将棋盤の中に 既にあるのだ。
    
  あなたは わたしが一番苦しむ98手目を 将棋盤の数だけ用意し、
  将棋盤の数だけ 97手目を指す。
  私は その将棋盤の数だけある97手目を知っている。
  1つ1つの将棋盤に対して 一番苦しくない97手目び、96手目を指す。
    
  ……
    
  そして わたしは、2手目を指した。
  ┗━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━┛


という感じかと思う☆
変な感じがするのは……というか、私が想像していたコンピューターと違ったんだが、
  ① コンピューターというのは先に 色んな手を 指しておいて、
      ( 最初に、ばーっと枝を伸ばしまくる )
  ② 次に、一番深く読んだ 最後の局面の将棋盤にだけ 片っ端から点数を付ける。
           ~~~~~~~~~~~~~~~~~~
      ( 盤面を見ただけで、どっちに優劣が傾いているのか 点数が付くらしい。
        わたしにも そんなことができれば☆ww )
  ③ 一番奥に行くまでの、途中の将棋盤の局面もあるはずなんだが、
    それは 何点とか 計算しない。
      ( 途中の将棋盤の局面は、その手が進むだろう最終局面の点数と同じ )
と、いった感じになっている、ように 本を読んで理解したところなんだぜ☆

この理解が合っているのかどうか、それは分からん☆www





考えて枝を伸ばしているのかと思っていたんだが、
枝を伸ばしてから 考えているのだな。

拍手[0回]

PR

【将棋】目指せ電王戦(5) 将棋エンジンの通信方法には、USIプロトコル通信や、CSAプロトコル通信(など)があり、電王トーナメントはCSAプロトコルを使うというあたり理解してきた☆

2014/08/10 15:46

タイトルどおりなんだが、

将棋エンジンの通信方法には、

  ・USIプロトコル通信
  ・CSAプロトコル通信
    (など?)

があり、電王トーナメントは CSAプロトコル を使う。
というあたりを ようやく理解してきた☆wwww


土・日ぶっ続けで (途中、天下一プログラマーコンテスト2014予選Aに参加したり☆ww)
まだまだ 将棋GUIの開発途中だぜ☆

ソフトの見た目が変わらないので、アップするほどのスクリーンショットがないんだぜ☆


USIプロトコル通信
===============

  これは、「usi」とか、「usiok」(牛オッケー)といった挨拶に始まり、
  「bestmove 7g7f」とか、「position startpos moves 7g7f 3c3d」といった文章を
  やりとりする方のルールなんだぜ☆


CSAプロトコル通信
================

  これは、「LOGIN tiger 0123」とか、「LOGIN:tiger OK」といった挨拶に始まり、
  「+7776FU」とか、「+3334FU,T1」といった文章を
  やりとりする方のルールなんだぜ☆



プロトコルというのは、

  ・こっちが こう送る手はずなので、
  ・決まりだから 合わせろ

という意味なんだぜ☆ コンピューターに限った用語ではなく、

  ・ポンに合わせて チャンカンする
  ・司会に紹介されてから 舞台に上がる
  ・お賽銭は、祈る前でも祈った後でも どちらで入れてもよい

など、プロトコルは どこにでもある☆



もう1つ理解しておくべきことがあるんだぜ☆


USIプロトコル通信

===============

   標準入出力を使う。

   ・Console.ReadLine()
   ・Console.WriteLine( "7g7f" )


CSAプロトコル通信
================

   TCP/IPを使う。

   ・(ストリーム).Read( buffer, 0, buffer.Length )
   ・(ストリーム).Write( "+7776FU\n", 0, 8 )



何が違うのかと言うと、ざっくり まとめてみたぜ☆



標準入出力
=========

   ・超簡単。


TCP/IP
===========

   ・サーバーとク


…と書こうとしていたところで、『将棋所』にUSI通信ができれば、
あとは『将棋所』が TCP/IP 通信をしてくれるんだと
ツイッターで 教えてくれたので 将棋所を もっと調べてみよう☆wwwwww


『将棋所』を ただの将棋盤 ぐらいにしか思っていなかった私には
通信の仲介に利用できるというのは 無かった発想なんだぜ☆



確かに この画面は見たことがある☆wwwww

3日ぐらい前に rubyで shogi-server を立てて、
れさぴょんin将棋所 相手に、 SFIinわたし で
対局していたやつなんだぜ☆wwwww





8/10(土)・11(日)の間に


  ①マウスで駒の動きを入力する機能
  ②合法手を くじ運で 適当に選ぶ機能
  ③CSAプロトコル1.1.3対応   ←まずは これを終わらすぜ☆!

と意気込んでいたんだが、


  ①マウスで駒の動きを入力する機能   ←将棋所をつかえばよい☆

  ②合法手を くじ運で 適当に選ぶ機能


  ③CSAプロトコル1.1.3対応   ←将棋所で将棋エンジンが動いていれば
                      他のサーバーの将棋エンジンと対戦できる☆


まさか 2つも もう終わっていたとは☆


計画変更☆

  ①局面を与えると、くじ運で 合法手を1つ返してくる機能


この1個だけ まず作ろう☆ww



『れさかい1.3.6』と遊んでいるのだが、
電王戦で ちらちら みかける評価値バーが ナイアガラの滝 のようなんだぜ☆



わたしのプログラムでは、
送られてくる「position startpos move ~」みたいな文字から
駒の場所をセッティングするところまでは作れているので、
次は どんな合法手があるか、を得られる方法を 調べるんだぜ☆
うさぴょんや れさかいのソースのどこかにあるはずなんだぜ☆



『れさぴょん』には 次のようなコードがある☆ (kyokumen.cpp)


    int Kyokumen::IsLegalMove(int SorE,Te &te)
    {
      ・動かしているのは相手の駒だ    → ×
      ・駒を打つぜ
            そんな駒持ってないぜ  → ×
      ・駒を指すぜ
            そんな駒、盤上にないぜ → ×
      ・自分の駒を取った         → ×
      ・IsCorrectMove(~)
         ○→ 試しに1手動かす
            ・自玉が詰んだ     → ×
            ・自玉は詰んでいない  → ○
         ×              → ×
    }


    int Kyokumen::IsCorrectMove(Te &te)
    {
      ・駒を打つぜ
          ・駒を打とうとした先に駒があった → ×
          ・歩だぜ
             打った列には別の歩があったぜ→ × 二歩
             相手の王様を詰ませたぜ   → × 打ち歩詰め
          ・それ以外            → ○ 打てた☆
      ・王を動かすぜ
          ・敵の利きに飛び込むぜ      → ×
          ・それ以外            → ○
      ・桂馬は跳ね~るぜ~☆          → ○ なんの邪魔もない

      動かした距離を測るぜ☆

      ・動かしてないぜ☆            → ×
      ・1枡横(縦、ナナメ)へ動かしたぜ☆   → ○
      ・2枡以上動くんだぜ☆
          ・途中に、空でない枡があった☆  → ×
          ・それ以外            → ○
    }

といった感じなんだぜ☆ わたしが読んだ感じ、多分☆



2014/08/10 19:41

コンピューターに、

    ①駒の動きを覚えさせる。(前に進むだけ → ちゃんと動く
         → 味方の駒を取らない → 王手に突っ込んでいかない …など)
    ②好きな駒を指させる。(違法手・パスあり)
    ③好きな駒を指させる。(合法手のみ・パスなし)

といった 将棋のルールを作りこんでいく段階なんだぜ☆


今、わたしのコンピューター将棋が どんな感じかというと。

    ①将棋盤の上の、自分の駒を ランダムに選ぶ。
    ②その駒を 前に1つ 進ませる。
    ③敵・味方 関係なく駒を取れる。
    ④先手の駒が1段目より上に行こうとしたとき 棋譜の符号が壊れる。
    ⑤後手の駒が9段目より下に行こうとしたとき 棋譜の符号が壊れる。

という感じなんだぜ☆
将棋のルールを全部覚えさせるのは まだまだ だな☆


2014-08-10 23:11

これが土日の成果なんだぜ☆


  (1)将棋エンジンを起動できるボタンを付けた。
     9三の歩を ちょっと突く、ぐらいまでは やってくれる☆www

  (2)USIプロトコルで ゲームエンジンと “お会話” をするところが
     まだ きっちり できていない☆ だが、ぼんやり付けることはできた☆

  (3)「コンピューターの最善手(作りかけ)」ボタンを置いた☆
     やってることは 駒を直進させるだけだぜ☆wwwww

  (4)上の 1~3 ができるように、土曜日はぶっとおしで
     ソースコードを整理した☆ 下地整備というやつなんだぜ☆


このアプリは ホームページで公開しているんだぜ☆

       ・
    『きふならべ Ver 1.07.1』
    http://grayscale.iza-yoi.net/shogi/download.html




拍手[1回]

【将棋】めざせ電王戦(4) CSAプロトコル続き☆ 局面の持ち方や、合法手を選ぶのを作るだけでも時間がかかりそうなんだぜ☆

2014/08/07 19:08

調べ物をするぜ☆
http://www.computer-shogi.org/protocol/tcp_ip_server_113.html


こんな説明書を読まなくても、

将棋所のれさぴょんと、SFIを戦わせて見れば、
どんなプロトコルが飛んでるのか 分かるかもしれない、
と妄想を膨らませて、やってみるぜ☆


CSAプロトコル 将棋サーバー
===========================

    私のPCでは C:\RailsInstaller\Ruby1.9.3\CSA_Server\shogi-server
    というところに 勝手に入っているぜ☆

    毎回 コマンドプロンプトを cmd で立ち上げて
┌──────────────────────────────┐
cd C:\RailsInstaller\Ruby1.9.3\CSA_Server
ruby shogi-server test 4081
└──────────────────────────────┘
    と打ち込むのが手間なんだぜ☆ .bat で書けないのかなんだぜ☆??

Shogi Framework Implements CSA Protocol
======================================

    入れたんだが、どこに入っているのか分からないんだぜ☆
    どうも、ダウンロードはしてなくて
    毎回 http://www.junichi-takada.jp/sficp/ このページから
    実行するのかも知れないな☆


将棋所
=====

    マイドキュメント\tool\Shogidokoro
    に入れてある☆




将棋所では次のように準備するんだぜ☆



あら☆?! SFIには コンピューター打ちが無いんだぜ☆

しかたないぜ☆ 私が1局指すぜ☆


ふぅ☆ SFIを使って、将棋所のれさぴょんに勝ったんだぜ☆

おっと、大事なのは CSAプロトコルの方なんだぜ☆?


送信の方には 次のように書いてあるぜ☆ こっちから送る方だな☆
┌──────────────────────────────┐
LOGIN tiger a
AGREE
-3334FU
-4132KI
-8384FU
-8485FU
-7162GI
-6364FU
-9394FU
-6263GI
-9495FU
-9195KY
-9596KY
-0098FU
-9899TO
-9998TO
-9697NY
-8586FU
-0085KY
-8586KY
-8286HI
-9798NY
-8676HI
-7696HI
-0085KE
-9692HI
-8597NK
-9293HI
-9897NY
-9394HI
-9495HI
-9597RY
-9799RY
-0088GI
-9989RY
-0077KI
-8978RY
-7768KI
-7873RY
-7379RY
-0077KA
-7788UM
-0076KE
-0078HI
-7668NK
-6878NK
-0098HI
-7868NK
-5142OU
-6859NK
-0058KI
└──────────────────────────────┘

受信の方には 次のように書いてあるぜ☆ 将棋サーバーから送られてくる方だな☆
┌──────────────────────────────┐
LOGIN:tiger OK
BEGIN Game_Summary
Protocol_Version:1.1
Protocol_Mode:Server
Format:Shogi 1.0
Declaration:Jishogi 1.1
Game_ID:test+default-1500-0+renkon+tiger+20140807194057
Name+:renkon
Name-:tiger
Your_Turn:-
Rematch_On_Draw:NO
To_Move:+
BEGIN Time
Time_Unit:1sec
Total_Time:1500
Byoyomi:0
Least_Time_Per_Move:1
END Time
BEGIN Position
P1-KY-KE-GI-KI-OU-KI-GI-KE-KY
P2 * -HI *  *  *  *  * -KA * 
P3-FU-FU-FU-FU-FU-FU-FU-FU-FU
P4 *  *  *  *  *  *  *  *  * 
P5 *  *  *  *  *  *  *  *  * 
P6 *  *  *  *  *  *  *  *  * 
P7+FU+FU+FU+FU+FU+FU+FU+FU+FU
P8 * +KA *  *  *  *  * +HI * 
P9+KY+KE+GI+KI+OU+KI+GI+KE+KY
+
END Position
END Game_Summary
START:test+default-1500-0+renkon+tiger+20140807194057
+7776FU,T1
-3334FU,T6
+6766FU,T1
-4132KI,T8
+6978KI,T1
-8384FU,T5
+7968GI,T1
-8485FU,T1
+6877GI,T1
-7162GI,T2
+5968OU,T1
-6364FU,T1
+9796FU,T1
-9394FU,T1
+8897KA,T1
-6263GI,T1
+6879OU,T1
-9495FU,T5
+9695FU,T1
-9195KY,T1
+0096FU,T1
-9596KY,T1
+9788KA,T1
-0098FU,T5
+4958KI,T1
-9899TO,T1
+8997KE,T1
-9998TO,T6
+7768GI,T1
-9697NY,T2
+8877KA,T1
-8586FU,T7
+7786KA,T1
-0085KY,T6
+0099FU,T1
-8586KY,T4
+8786FU,T1
-8286HI,T3
+9998FU,T1
-9798NY,T8
+0087KY,T1
-8676HI,T11
+6877GI,T1
-7696HI,T1
+8781NY,T1
-0085KE,T20
+7887KI,T1
-9692HI,T5
+7786GI,T1
-8597NK,T3
+0093FU,T1
-9293HI,T1
+8697GI,T1
-9897NY,T1
+0085KE,T1
-9394HI,T2
+0086KE,T1
-9495HI,T4
+8797KI,T1
-9597RY,T2
+8573NK,T1
-9799RY,T6
+0089FU,T1
-0088GI,T1
+7968OU,T1
-9989RY,T5
+5859KI,T1
-0077KI,T2
+6858OU,T1
-8978RY,T1
+5849OU,T1
-7768KI,T7
+2868HI,T1
-7873RY,T1
+6888HI,T1
-7379RY,T8
+0078KI,T2
-0077KA,T10
+7879KI,T1
-7788UM,T2
+7988KI,T1
-0076KE,T2
+8887KI,T3
-0078HI,T3
+0073HI,T3
-7668NK,T5
+7378HI,T2
-6878NK,T1
+0073HI,T2
-0098HI,T5
+7363RY,T1
-7868NK,T2
+0084KA,T1
-5142OU,T12
+6361RY,T1
-6859NK,T2
+4959OU,T1
-0058KI,T2
%TORYO
#RESIGN
#WIN
└──────────────────────────────┘

このやりとりができれば、電王戦に出れるはずなんだぜ☆
第2回電王トーナメントだっけ☆ どっちでもいいんだぜ☆




将棋の思考部分がないと 次の1手を送信できないんだぜ☆wwwwwwww
電話じゃないんだぜ☆
適当に文字を送っても ゲームにならないんだぜ☆wwwwwwwwww


①局面を覚えておく

②合法手を適当に返す


この2つの実装が必要だぜ☆www



2014/08/07 20:42

ボナンザのコンパイル方法が載っていた☆ww

    『Bonanzaソース完全解析ブログ』2009-10-13
    http://d.hatena.ne.jp/LS3600/20091013

覚えておこう☆w

    『ながとダイアリー』2009/09/262009/09/26
    http://d.hatena.ne.jp/mclh46/20090926



Bonanzaの勉強も進めるんだが、
いつ身になるか分からないので、

自分にできる得意な方法でも 実装を進めておくんだぜ☆


2014/08/07 23:25



将棋のGUIを作っているんだが、これは 時間がかかるんだぜ☆

  ①マウスで駒の動きを入力する機能

  ②合法手を くじ運で 適当に選ぶ機能

  ③CSAプロトコル1.1.3対応

の3つの実装を目指すんだぜ☆


しばらくは成果の出ない日々が続くかもしれないな☆

拍手[0回]

【将棋】めざせ電王戦(3)  CSAプロトコルのクライアント側だけ作れればなんとかなんだが☆

2014/08/06 18:42


今日は CSAプロトコルについて 自習してみたいと思う☆w
これが書ければ 電王戦には出れるはずなんだぜ☆

http://www.computer-shogi.org/protocol/tcp_ip_server_113.html




こんなブログもあったんだぜ☆
『将棋ゲームPC』
http://www.game4pc.com/



ソースがほしいんだぜ~☆

2014/08/06 19:35
う、うさぴょんのソースコードを読むんだぜ☆ きっとCSAプロトコルが書いてあるはず☆

main に何か書いてるんだぜ☆
TCP/IP ができれば、CSAプロトコルはただの文字みたいなんだぜ☆

C#で TCP/IP 通信をする方法が分かればいけるはずなんだぜ☆
http://dobon.net/vb/dotnet/internet/tcpclientserver.html


2014/08/06 21:02
こっちから送信するのと、向こうからくるのを受信するの、
同時にするには どうすればいいんだぜ……☆



サーバーは作らなくていいんだぜー☆ 将棋サーバーがあるのだから☆
クライアント側のプログラムだけ調べればいいんだぜー☆



2014/08/06 21:48
将棋サーバーから返信がこないんだぜ☆、と思っていたんだが
文字コードを UTF8 にしているのが悪いのかもしらん☆
なんだっけ☆
ASCII の 7ビットとか分からんが ASCIIなら何でもいだろう☆ とりあえず

    System.Text.Encoding enc = System.Text.Encoding.ASCII;

というのを使うぜ☆


うさぴょんのソースコードの main を見ながら
コマンドの末尾には 改行を付けておくこと、という
プロトコル説明書に書いてあったことを思い出したんだぜ☆
  (LF は ’¥n’、 CRは’¥r’なので、 ¥nが正解だぜ☆)



ここまできたー☆



ところで 

うさぴょん ではなくて れさぴょん ではなかったか☆

このソース☆
http://homepage1.nifty.com/Ike/lesserpyon/


サーバーからのコマンドは ”~¥n~¥n~¥n” みたいな感じでつながって
送られてくるので、

                string[] lines = resMessage.Split(new string[] { "\n" }, StringSplitOptions.None);
                foreach (string line in lines)
                {
                    Console.WriteLine( "v(^▽^)v:"+ line);
                }

で分解するぜ☆




2014/08/06 22:59



AGREE¥n を送ったら、 START:~ が返ってきたんだぜ☆
ここから将棋を指せばいいはずなんだぜ☆

え~と、CSAプロトコルは……☆
http://www.computer-shogi.org/protocol/tcp_ip_server_113.html


+7776FU


みたいな簡単な文字を送ればいいのか☆




後手番なのに 先に 初手を送信してしまったぜ☆ww 相手にされないぜ☆wwwww 止まったのかな☆
あっ、非合法手を 送ってしまったぜ☆wwww




将棋所で角道を開けたら +7776FU,T919 が返ってきたぜ☆
仕様どおりだな☆




あー、かたまった☆

手入力だと、最後の [Enter] キー入力が送られていないんじゃないか☆?

  送信する → 返信を待つ → 送信する → 返信を待つ

という交互の流れに作ってあるので、返信がこなかったら はまる☆wwww


  返信を待つ              返信を待つ
    文字を打ち込む→送信する 文字を打ち込む→送信する
      返信を待つ

みたいに、文字を打ち込んでいる間にも 返信を待ちたいし、
文字を打ち終わったあとにも また返信を待たずに すぐに
文字を打ち込みたいときもあるかもしれないぜ☆



でもまあ☆ CSA1.1.3プロトコルへの対応も、なんだかいけそうな感じがしないか☆?

今日も 成果あり だぜ☆!

2014/08/06 23:21

拍手[0回]

【将棋】めざせ電王戦(2) : これは 将棋用にプログラムをいじったときの 備忘録 なんだぜ☆

2014/08/05 19:59

  bonanza6.0のソースコードを
  『Microsoft Visual Studio Express 2012 for Windows Desktop』に放り込んで
  コンパイルしてみたんだぜ☆

  ┏━━━━━━━━━━エラー一覧━━━━━━━━━━┓
  エラー 1 error C4703: 初期化されていない可能性のあるローカル ポインター変数 'lpszTemp' が使用されています c:\users\takahashi\documents\visual studio 2012\projects_cpp\bonanza6win32\bonanza6win32\bns\sikou_dll\sikou.c 1631 1 Bonanza6Win32

  エラー 2 error C4703: 初期化されていない可能性のあるローカル ポインター変数 'lpszTemp' が使用されています c:\users\takahashi\documents\visual studio 2012\projects_cpp\bonanza6win32\bonanza6win32\bns\sikou_dll\sikou.c 1574 1 Bonanza6Win32

   3 IntelliSense: 型 "HGDIOBJ" の値を型 "HBRUSH" のエンティティに割り当てることはできません c:\Users\Takahashi\Documents\Visual Studio 2012\Projects_Cpp\Bonanza6Win32\Bonanza6Win32\bns\sikou_dll\sikou.c 1169 11 Bonanza6Win32

   4 IntelliSense: 型 "HGDIOBJ" の値を型 "HBRUSH" のエンティティに割り当てることはできません c:\Users\Takahashi\Documents\Visual Studio 2012\Projects_Cpp\Bonanza6Win32\Bonanza6Win32\bns\sikou_dll\sikou.c 1180 11 Bonanza6Win32
  ┗━━━━━━━━━━エラー一覧━━━━━━━━━━┛


 なんのことだか分からないが、
 図にすると、

   ダイアログボックスの種類がいろいろあるぜ☆
    │
    ├──情報のことなら       これ!
    ├──スコアのことなら      これ!
    ├──(中略)
    ├──アイコンの背景?のことなら これ!
    └──それ以外なら        どれでもない☆   ←エラー!

 ということらしいので、
    ~
    default:
      // (2014-08-05 Muzudho)ここから
      lpszTemp = 0;
      // (2014-08-05 Muzudho)ここまで
    ~

 と強引に 穴埋めをしたんだぜ☆
 とりあえず 進んでいくぜ☆



 C++、Bonanza6.0 は諦めるぜ☆wwww




 次☆

 CSAサーバーを ローカルPCに 立てようと思うのだが、Ruby のようなんだぜ☆
 そこで Ruby の勉強を始めるぜ☆
 http://www.rubylife.jp/ini/

 むむむ☆ 1.9.3 ならどれでもいいのかだぜ☆
 http://railsinstaller.org/en


 インストール後、
 C:\RailsInstaller\Ruby1.9.3\bin\ruby.exe
 をダブルクリックしてみたが、何をしていいのか分からないぜ☆



Microsoft Windows [Version 6.1.7601]
Copyright (c) 2009 Microsoft Corporation.  All rights reserved.

…中略…
c:\RailsInstaller\Ruby1.9.3\CSA_Server>ruby shogi_server.rb
C:/RailsInstaller/Ruby1.9.3/lib/ruby/site_ruby/1.9.1/rubygems/custom_require.rb:
36:in `require': cannot load such file -- shogi_server/compatible (LoadError)
        from C:/RailsInstaller/Ruby1.9.3/lib/ruby/site_ruby/1.9.1/rubygems/custo
m_require.rb:36:in `require'
        from shogi_server.rb:32:in `<main>'
c:\RailsInstaller\Ruby1.9.3\CSA_Server>


むー☆



CSA_Serverに入っているREADMEというファイルには次のように書かれているんだぜ☆

=== Run
Examples:
 $ ./shogi-server hoge 4000
 $ ruby1.8 ./shogi-server hoge 4000
 $ ruby1.9.1 ./shogi-server --pid-file shogi-server.pid \
                            --daemon . \
                            --player-log-dir player-log-dir \
                            --floodgate-history floodgate_history.yaml \
                            floodgatetest 4000



むむむ☆



c:\RailsInstaller\Ruby1.9.3\CSA_Server> ruby shogi_server hoge 4000
ruby: Permission denied -- shogi_server (LoadError)
c:\RailsInstaller\Ruby1.9.3\CSA_Server>






ソースを見ていると、33行目、34行目に

CLIENT_NAME = "web"
CLIENT_PASSWORD = "web1235"

という記述があるんだぜ☆



c:\RailsInstaller\Ruby1.9.3\CSA_Server>ruby shogi_server web web1235
ruby: Permission denied -- shogi_server (LoadError)
c:\RailsInstaller\Ruby1.9.3\CSA_Server>



☆wwwwwwwwwwwwwwwww 違うのか☆wwwwwwwww





スタートサーバーという、いかにもな名前のファイルを見つけたんだぜ☆





これが何なのか分からないんだぜ☆
とりあえず 真似して打ってみるんだぜ☆



ソケットエラーと書かれてあるんだぜ☆
なんのことだか分からないぜ☆

何か書かれているんだろうが ■■■■■■■■■ ばかりで分からんぜ☆


適当に打ち込み連打してたんだが……、

何かに当たったんだぜ☆?



さっそく、将棋所を起動して サーバー対局のページを開き、

localhost
test
a

といった具合で文字を入力してみたんだぜ☆
この文字も適当に打ったんだぜ☆

~ [INFO] user test login
~ [INFO] user test run in CSA mode

と出ているな☆


将棋サーバーは ポートが 4081 だと書かれていた☆
そこで、将棋所も ポート 4081 につなぎにいったのだろう☆

「test さんがログインしました」
「テストさんは CSAモードで動いています」

ぐらいの意味のはずだぜ☆ ……多分☆wwwwwwwwwwwww


将棋所の駒をクリックしても動かないので、適当に押せるボタンを押していってたんだぜ☆

何かそれっぽいのが出てきたんじゃないか☆?w


ここが 第2回 電王トーナメント用の CSAプロトコルのページのはずだぜ☆
http://www.computer-shogi.org/protocol/tcp_ip_server_113.html#protocol
見比べてみよう☆

その通り、うまく行っているみたいだな☆

> LOGIN 【ユーザー名】 【パスワード】
< LOGIN 【ユーザー名】 OK

と書いてあるな☆

プロトコルの説明書を読んでいると、
このあと、将棋サーバーは

BEGIN Game_Summary
Protocol_Version:1.1
Protocol_Mode:Server
 …以下略…
といったメッセージを 将棋所に送り返すはずなんだが、動きがないぜ☆


2人がつなげないと サーバーは何もしないということだろうか☆?
じゃあ 将棋所を2つ起動するか、と思ってダブルクリックしたんだが



将棋所は 1つまでしか 起動できなかったんだぜ☆/(^▽^)\



http://www.computer-shogi.org/protocol/

ならば CSAプロトコル 将棋サーバーに対応しているソフトを探すんだぜ☆

4つ 案内があるな☆

  ・K-Shogi
  ・うさぴょん
  ・Shogi Framework Implements CSA programs
  ・将棋所

上から見ていこう☆w


K-Shogi を入れてみたんだぜ☆

初見でピンとくるんだが、将棋所と似た感じがするぜ☆ 
適当に触ってみるぜ☆wwww


こ・れ・は☆wwwwww

    [ポート:] 4081

に どきどき するぜ☆!


    [接続先アドレス:] 127.0.0.1

というのは、localhost と同じだぜ☆

これを見ただけで

    妄想: user ksuser login
    妄想: user ksuser run in CSA mode
    妄想: >LOGIN ksuser *
    妄想: <LOGIN:ksuser OK

となるのを期待するぜ☆ わくわく☆


[INFO] user ksuser login
[INFO] user ksuser run in x1 mode

(O_O)x1 mode って何なんだぜー☆?
そして 将棋所と K-Shogi でつないだんだが、サーバーが何か返信する様子がないぜ☆??



次は うさぴょん なんだぜ☆
私が作っているソフトと似た感じのするインターフェースなんだぜ☆

突然戦うことになり 負けましたなんだぜ☆
将棋サーバーへの接続方法を探していたんだが、
通信機能は 分からなかったんだぜ☆



次は Shogi Framework Implements CSA Protocol だぜ☆!
これまた 私の作っているソフトと似たような画面なんだぜ☆(字が駒になってるあたり)

みんな考えていることは似てしまうのか、と思ってしまうぜ☆


さて、どうなるかなんだぜ☆?



おっ おっ☆! 反応したんだぜ☆

将棋所の方も 何かメッセージを受け取ったみたいだぜ☆!

SFI えらい☆!

確かに、将棋所と SFIが、 Perl の将棋サーバーを仲介にして
同時に画面更新をしながら 動いているぜ☆

わたしが わたし相手に 2面指ししているのだが……☆


これなら、将棋ソフトの CSAプロトコル対応の実験に使えそうなんだぜ☆
今日は 成果あり なんだぜ☆!


2014/08/05 23:46 終わり ※4081は しょうぎはちわん とゴロを合わせるのだろう多分☆
ちなみに サーバーはコマンドプロンプト画面で [Ctrl]+[C]キーを押して止めたぜ☆

拍手[0回]

ブログ内検索

PR



絶版・品切れ本を皆さまからの投票で復刊させる読者参加型のリクエストサイト
復刊ドットコム

ネイフィールウォーター

応援フリーエリア

デジゲー博
むずでょは、第1回から毎年 出展しているんだぜ☆

ウサギのように新品入荷☆
カメのようにまだ置いてある既刊☆

同人ソフト一押し店 さんげっと
むずでょは、さんげっと を応援しているんだぜ☆

TVアニメ「Charlotte(シャーロット)」公式サイト
ニコ生の Angel Beats! 一挙放送が 面白かったので次のも応援するぜ☆ww

プロフィール

HN:
むずでょ
性別:
非公開

最新コメント

[01/02 Free Tax Marlboro Gold Regular Cigarettes Coupons 3 Cartons]
[12/30 Hot Selling Newport Regular Cigarettes Outlet 160 Cartons]
[12/29 http://www.patersonlabs.com/Marlboro/41.html]
[12/29 http://xz84.com/Marlboro/16.html]
[12/29 http://www.paragoninks.co.uk/Marlboro/93.html]

P R