粗い仕様に基づいてCUIベースのMENACEをクラスオブジェクトとして纏めてから、それをWin32ベースに移植しよう、というのが方針で、現在もそれは変わっておりません。

 

最初の予告を出してから、データ、クラスオブジェクト、プログラム(Win32を想定)にそれぞれ「何を、どこまでさせるか」考えながら、試行錯誤でデータ形、メンバー関数、インターフェース等をスクラップビルド(アイデアに基づいてプロトタイプを作り、矢張りだめだ、いやもっといい方法がある、ということで仕様変更を行う、という私流の煮詰め方)で作り込み、最終的な姿が見えてきたように思えるところまで来ました。

 

データ形だけでも、最初はそれほど構造体とサイズの違いが無いのでクラスでつくっちゃおうと思いましたが、途中から以下に述べる三層構造の在り様を見直し、矢張りデータだけの構造体に本日変更(朝3時に目が覚めて、考えに思いついた)しましたし、クラスオブジェクトでゲームを完結させる、という考えも改めてウィンドウズ(現在はCUI)プログラムに任せる、ということにしました。

 

     ウィンドウズ(現在はCUI)プログラム→ゲームの管理、人とのインターフェース

              /\

       メナスクラス(CMENACE)→下級の盤クラスを承継し、盤面の記憶と検索、判断機能を付加

           /      \

       盤クラス(CBOARD)→盤データに関わる基本的なゲーム進行機能を実装

        /            \

      盤データ(BOARD構造体)→盤データとCBOARDの為の一時データや評価用データを収納

 

①は構造体メンバーを付けたり、外したり、内容を変えたりしましたが、(テストプログラムを利用して)②と共にこんな感じかな、という安定したところまで来ています。

現在は③を頑張っている最中ですが、盤面データのDBはSTLのvectorを取り敢えず使い、完成して検索速度が遅ければlistで登録段階でソートしておいて、バイナリーサーチができないか、考えています。
 

今日はCUIに飽きたので、BCCFormとBCCSkeltonでGUIプログラムのスケルトンを作りました。我ながら、これは非常に開発が効率的で、

まず〇、×イメージやツールバーボタンをEZImageでつくり、

すぐにモードレスダイアログベースのスケルトンができました。(自分でも驚いた!のですが、EZImageは本来16x16と32x32のイメージしか扱えない筈でしたが、64x64の〇×イメージを読み込んだら上記の通りとなりました。ステータスバーの位置も「63, 63」と出ています。)

後はじっくりと上記「内臓」を作って中に入れるだけです。

(イメージはダイアログベースのMENACEスケルトンです。)