*All archives* |  *Admin*

<<01  2017/02  1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28  03>>
floodgate for mahjong へ参戦その2・経過報告
前回、GitHub(https://github.com/mahjong-server/mahjong-server)で公開されてるツモ切りプレイヤーのコードを修正・加筆することにより、floodgate for mahjongで自作AIを戦わせようと思ったのですが、
接続に成功したのは1回だけで、それっきり接続できなくなってしまいました。

また、Visual Studioをエディタとして使ってるのですが、なぜかコンパイルが通らない(Cygwinでは通るのだが…)ので、まったくデバッグができないという事態になっています。

なので、C++のコードを手直しするのを諦めて、普段使ってる環境(VB.NET)で新しく一からTCP通信・json形式のプロトコル対応・AI本体を作ることにしました。

言語はVBで、いつものフォームアプリケーションではなく、コマンドプロンプトとかで動くコンソールアプリケーションを選択。
ほとんど文法はいつもと同じなので、安心。

System.Net.SocketsクラスのTcpClient関数でTCP通信をやってみることにします。
すると、
ホスト名「http://mjai.hocha.org/」、ポート番号「11600」だと「拒否」と返されて通信できない。うむー。
そこからいろいろと調べて、練習用の「gimite.net」、ポート番号「11600」、room「manue-1kyoku」というサーバー相手だと文字列の送受信ができることを確認しました。

READMEに書いてる
http://www.logos.t.u-tokyo.ac.jp/mjlog/
(試合結果が載ってるところ)
もなんか503エラー(Service Unavailable:The server is temporarily unable to service your request due to maintenance downtime or capacity problems. Please try again later.)
で閲覧できないので、なんか向こうのサーバー側の不具合なのかなぁ。

まぁ一応練習用のところにはつなげるし、まだjson形式プロトコル対応とかAI部分の移植とかも全然できてないので、今のところはこの問題は放置することにします。


それで単純なツモ切りプレイヤーとして、サーバーと交互に文字列を送りあうところまでは行きました。

170208-01b.png
「hello」と「join」で最初に通信できるかを確認して「start_game」「start_kyoku」で試合開始・局開始。
その後「tsumo」と「dahai」を繰り返し(ツモ切りなので、自分の打牌順以外はただ「none」を送るだけ)、
最後に「hora」「end_kyoku」「end_game」で終わる、と。

一応、通信は成功している。

それで、今は次の段階に入っています。
前に作った四麻計算機・麻雀ゲームから変数や関数を移植したうえで、
json形式で受け取った文字列を各種内部変数(手牌とか捨て牌とか)に反映させるという作業です。

プロトコルのサンプルを見ながら各命令に対して文字列の読み取って変数に1個1個落とし込むという感じです。
今のところ「hello」「join」「start_game」「start_kyoku」「tsumo」「dahai」「reach」「reach_accepted」まで終わりました。
後は鳴きと和了と終了関係なので、今で半分くらいかなぁ。

そこまでいったら後は麻雀ゲームのときに作った関数を確認しながらコピー&ペーストして必要に応じて修正を加える感じなので、棒テン即リー全ツッパAIまでならそこまで時間はかからないかなー。

後はAIが完成するまでにサーバーが復活してくれるといいなぁ。


あんまり関係ない話だけど、最近、任意の場所でコードを折りたたんで非表示にする機能(アウトライン化)を発見しました。
自分のコード設計パターンとして、あまり関数を小分けにはせず、1個の関数内で細かい処理まで全部書いていく方式にしてるのが多いので、
1個の関数を表示するとそれが何百行と続いてスクロールするのがめんどいとかがあったので、
アウトライン機能でif文とかfor文とかの中身を細かく非表示にさせてまとめることで、コードの中身がちょっと見やすくなった…かもしれない。
スポンサーサイト
プロフィール

nisi5028

Author:nisi5028
FC2ブログへようこそ!

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
FC2カウンター
フリーエリア
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード