忍者ブログ

ぐれーすけーるブログ

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

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

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



第25回世界コンピュータ将棋選手権1日目に
初出場した『きふわらべ』の記事はこちら↑☆
↑東方二次創作音楽
CD78サークル分買った
積みゲー1本ずつ1ステージだけ
遊んでいく記事は別ブログへ飛ぶ↑☆
秋葉原裏通りの潰れそうなオリジナル同人
ソフト店『さんげっと』の記事はこちら☆

[PR]

×

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

コメント

現在、新しいコメントを受け付けない設定になっています。

【将棋】めざせ世界コンピュータ将棋選手権☆(68) 電王戦も見つつも、きふわらべの改造を進めよう☆ww

2015-03-21 12:07

Ui_01MenuB#ReadLine_TuginoItteSusumu(...) この関数を変えよう☆ww
参照箇所は2箇所☆

  ・Ui_01Menu#Komaokuri_GUI(...)
  ・Ui_01MenuLoop#Saisei

その前に、 Ui_PnlMain が画面で、
Ui_PnlMain#Response で再描画が始まるんだが、
これを、ボタンを押したときに 直接呼び出すのではなく、
1つ 間に 何か仲介を かまそう☆w


Ui_PnlMain#Response の使用箇所は次の7つ☆
  ・KifuNarabeImpl#Response(...)
  ・Ui_PnlMain#timer1_Tick(...) <その1>
  ・Ui_PnlMain#timer1_Tick(...) <その2>
  ・Ui_PnlMain#Ui_PnlMain_Load
  ・Ui_PnlMain#Ui_PnlMain_MouseMove
  ・Ui_PnlMain#Ui_PnlMain_MouseDown
  ・Ui_PnlMain#Ui_PnlMain_MouseUp

おっ☆ これは単純に 1個 に統一できたんだぜ☆w
  ・KifuNarabeImpl#Response(...)

ふむ☆
次に、 Ui_PnlMain#Response(...) の引数の中には、 ResponseImpl response というのが
あるんだが、これを KifuNarabeImpl クラスのプロパティにしてしまいたいんだぜ☆

現状、引数を細かく渡しているんだが、

  どんっ!

と、大きなグループで渡したい☆ これは イメージで説明すると、


きめ細かなプログラムのイメージ図
  ・ . ・   ・・   ・
    ・  .・  ・・・   ・
   ・・ ・  ・・  ・ ・   精密で緻密☆!
  ・    ・    ・・  ・  だが手を付けにくい☆
   ・ ・・ ・・ ・  .  ・
  ・  .  ・    ・ ・

大きくまとめられたプログラムのイメージ図

    ● ・     ●
       ●         ・ 荒くてすっぽ抜けているが、
          ・    ●   手を付けやすい☆!
     ・        ・

という感じなんだぜ☆ 後者にしたいんだぜ☆ww
ここで問題なのは、

  マウスクリックや、通信、タイマーからの、指示の同時発生

なんだぜ☆ GUIが使われるようになりだした時代以降の
プログラムが複雑になる理由の1つに、マルチタスク がある☆

  父「部屋を掃除しろ」
  母「宿題をしろ」
  兄「寝ろ」

という指示が 同時に飛んできた 弟 は、どうすればいいだろうか☆?

部屋を掃除してから 宿題をし、寝る のがいいと わたしは思うんだが、
コンピューターの解答としては、 寝ながら掃除をしつつ宿題もする という
答えになるかもしれないんだぜ☆

順番に1つずつやるのを シングルタスク
同時進行でやるのを マルチタスク という☆



ここでわたしは、

  マルチタスクをなるべく禁止して、できるだけシングルタスク

にしたいんだぜ☆
なぜなら、さっき説明したとおり 緻密流 → かいつまみ流 にしたいからだぜ☆

かいつまみたいから、シングルタスクにする☆ww
緻密が嫌だから、シングルタスクにする☆ww



再掲しよう☆
Ui_PnlMain#Response の使用箇所は次の7つ☆
  ・KifuNarabeImpl#Response(...)      ←棋譜の自動再生中
  ・Ui_PnlMain#timer1_Tick(...) <その1>  ←タイマー
  ・Ui_PnlMain#timer1_Tick(...) <その2>  ←タイマー
  ・Ui_PnlMain#Ui_PnlMain_Load      ←.exeダブルクリック
  ・Ui_PnlMain#Ui_PnlMain_MouseMove   ←マウス操作
  ・Ui_PnlMain#Ui_PnlMain_MouseDown   ←マウス操作
  ・Ui_PnlMain#Ui_PnlMain_MouseUp    ←マウス操作

ということで、
  「棋譜の自動再生中」に「タイマー」が働きながら「マウス操作」もされる
と、父、母、兄 のマルチタスクになっているな☆

これを単純に いっしょくた に統合すると 弟 が爆発する可能性が高い☆
まず最初にやることは、

  父、母、兄 を シングルタスクに沿わせる(順番を決めてしゃべれ)

にすることだぜ☆ これを実現する方法の1つに 排他処理(はいたしょり) がある☆


排他処理とは、スネ夫の言葉を借りれば

  「このゲームは3人用なんだ☆ のび太はダメー」

で言い表せるように、 特権を持つ者と、持たざるもの に分ける制度なんだぜ☆


今回、そんな排他処理の中でも シンプルな手法の1つ、ミューテックス を
使ってみようと思うんだぜ☆

  「この弟は1人用なんだ☆ 母、兄はダメー」

という手法だぜ☆ ひとりずつ入ってください、みたいな
文化祭のオバケ屋敷の 1人用バージョン みたいな感覚だぜ☆

オバケ屋敷の出口に 受付がいて、 オバケ屋敷の中に今、客がいるかどうか
覚えておく☆
オバケ屋敷の入り口にも 受付がいて、入っていいか 出口の受付と連携を取るんだぜ☆


この仕組みで重要なのは、

  カウントを取る方ではなくて、
  待たせている客をどうするのか

の方なんだぜ☆

  「マウスクリックをしたんだぜ☆ でも何も起きないんだぜ☆! バーロー!」

となるのか、

  「タイマーは今回無視して、マウスクリックを優先しよう」

となるのか、

  「マウスクリックとタイマー、合体させて1人の客にしてしまおう」

とするのか、

  「棋譜再生が優先だろう。マウスクリックとタイマーは無視しよう」

とするのか、ルールを決めておく必要があるんだぜ☆


  (1)起動     の解決中は、他全部          は無視する☆
  (2)棋譜再生モードの解決中は、タイマー、マウスクリック は無視する☆
  (3)マウスクリックの解決中は、タイマー         は無視する☆
  (4)タイマー   の解決中は、次のタイマー       を無視する☆

という感じで良さそうだな☆


16:25

メモ: W050_UsiLoop#AtLoop_OnPosition(...) から KifuNarabeImpl を参照するには、
    どこだっけ☆ww

きふわらべ は、GUI を持っていなくて、
きふならべ は、GUI を持っているんだぜ☆

きふわらべ のメソッドの中から GUIのメソッドを参照しようとしている部分は
構造が怪しいんだぜ☆ww


17:30

将棋エンジン     には GUI情報 は要らなくて、
将棋エンジンも GUIも、 棋譜情報  を持っているんだぜ☆

共通部分は、その差を飲み込むんだぜ☆


17:50

ServerInterface オブジェクトを、将棋GUIが持っていて、
それを将棋サーバーだと思って使うように作っている☆

使用箇所を一覧しておくぜ☆
  ・Ui_01Menu#Makimodosi  ※[巻き戻し]ボタン
  ・Ui_01MenuB#ReadLine_TuginoItteSusumu  ※[コマ送り]や[再生]

うむ、実質 2箇所だけか☆



(スレッド1)再描画を指示 → テキストボックスに棋譜入力
(スレッド2)タイマー→ テキストボックスの棋譜読取→[コマ送り]等を指示 


棋譜の[巻き戻し]、[コマ送り]、[再生]を GUI がやっているんだが、
これを将棋サーバーに持って行きたいんだぜ☆



03:29

「棋譜パーサーA」という部品が、GUIと 将棋サーバー部の両方を兼ねていて
分割の障害になっているんだぜ☆

日曜日に直せるといいんだぜ~☆

微速微進☆ 寄り道 遅々前進☆w





拍手[0回]

PR

コメント

お名前
タイトル
文字色
メールアドレス
URL
コメント
パスワード Vodafone絵文字 i-mode絵文字 Ezweb絵文字

ブログ内検索

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