T.Ishii's Software Library

HTML5 レトロ風ゲーム館

無料ブログはココログ

« デバッガが使えない!? | トップページ | コンソール表示は自前で »

ボード表示が可能に

今は、macOS版EdaxBoardをWindows版から移植開発中だ。移植内容としては、大きく分けて、Edaxを操作する内部処理系とGUI系があるのだが、今日は、GUI系の中でもボード表示関連の処理コードを作成した。

EdaxBoardのボード表示は、実は、MasterReversiのソレとは大きく異なる。

どう異なるのかというと、EdaxBoardのボード表示は、ある意味、至極、普通の作りになっている、という事になる。

具体的には、盤面だとか石だとかの画像ファイルをリソースとして持っていて、それらをメモリ上で合成し、その結果をウインドウに描画している感じになる。

上記を見た読者の中には、MasterReversiは違うのか? と、思った人もいるかもしれないのだが、MasterReversiのボード表示は全く異なる感じになっている。

何故なら、盤面だとか石だとかの画像ファイルはリソースとして持っておらず、それらについては、自前の専用の描画ルーチンでメモリ上に描画しているからだ。

と、言う事で、EdaxBoardのボード表示はMasterReversiと比べると、かなり安易な作りになっているので、今日の時点で、macOS版についても、ボード表示は可能になった。

なので、次は、リバーシ関連の内部処理を動作させて行けば、その結果をボード表示で確認できるので、移植作業も進んでいく事になる筈だ。

ちなみに、上記では、ボード表示は簡単に実現できた! みたいに書いているのだが、実際には、実装には、それなりに苦労した。

その理由は、作者的には、macOS向けのソフトも色々と開発してきているので、macOS向けソフトの画面描画方法というのは、知らない事はないのだが、実際のところとしては、あまり覚えてもいないからだ。

なので、今日は、ボード表示を実現するにあたって、どんな感じの処理コードを書けば良いのやら、と、AG-ムービーカッターのコントローラー部分の描画方法を参考にした。

何故、コントローラー部分なのか、というと、映像表示部分はOpenGL描画になっていて、EdaxBoardの描画にはOpenGLは使わない予定だからだ。

もっとも、うんうん、リバーシごときの盤面表示にOpenGLなんて使う訳ないよなあ、と、思った人は、常識的な考え方をしていると思われるのだが、実際の所、Windows版MasterReversiのボード表示にはDirect2D描画を使っている。

ただし、初版の頃には、普通にGDIで描画していたのだが、にも関わらず、途中からDirect2D描画に切り替えたのは何故だったのか、というと、石の回転アニメーションが、少なくともMirror-DTC経由で接続していた場合、滑らかに行われなかったからだ。

つまり、GDI描画というのは、実は、それなりに重かったので、途中から、より軽いDirect2D描画に切り替えた訳だ。

更に言えば、Android版のMasterReversiも、実は、盤面描画には、OpenGLを使っている。

何故、そんな事をしているのか、というと、やはり、石のアニメーションでは、普通の描画ではなく、OpenGLを使わないと、滑らかに描画する事ができなかったからだ。

と、言う事で、EdaxBoardのボード表示は、二重の意味で、MasterReversiのボード表示よりも手を抜いているのだが、石のアニメーションはないので、別に、OpenGLを使わなくても、描画が重い! という事はない。

もっとも、逆に、作者製ソフトでは、OpenGLを使わない描画処理は少ないので、普通の描画処理では、どんなコードを使っていたかなあ、というのを思い出すのは難しかった訳だ。

なので、過去に開発したソフトのコードを参照しつつ、コードを書いていったので、作業には、それなりの時間と労力が必要になった今日この頃だ。

« デバッガが使えない!? | トップページ | コンソール表示は自前で »

2026年10月
日 月 火 水 木 金 土
        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 29 30 31

広告

プライバシーポリシー

  • 当サイトでは、第三者配信による広告(Google Adsense)サービスを利用しています。

    Google を含む第三者配信事業者は、Cookie を使用して、ユーザーのウェブサイトでの閲覧履歴に基づく広告を配信します。 Google 広告 Cookie を使用することにより、Google や Google のパートナーは当サイトや他のサイトへのアクセス情報に基づく広告をユーザーに表示できます。

    収集された情報がGoogleによってどの様に使用されるか、収集される情報をユーザーが管理する方法については、以下のリンクを参照下さい。

    ポリシーと規約 - Google