時乃工房-Windowsとアマグラマーな関係-

アクセスアップにオートリンクネット リンクが自動で増殖オートリンクの登録はこちら 節約内職情報検索局
ページランク向上リンク集
役立つリンク集 Web Links
SEO対策ディレクトリ型検索エンジン Su-Jine
メニュー
トップ
アマグラミング
C++編 目次
第8章
第10章
ソフトウェア開発製品
相互リンク

<勘違いだらけのアマグラミングな日々(C++編)>

第9章 アマグラマーはゲームを目指す

2006年9月13日

私のような中年アマグラマーがアマグラマーとなったきっかけはと云えば、ズバリ、TVゲームとの出会いであった。
しかして20年程前に小学生だった私の家には、当時爆発的な普及をみせたファ○リーコン○ューターなるものがいつまでたっても導入されること無く、代わりに新し物好きな親父が(お袋をだまして)購入したPC-88○1(無印!!)が鎮座していたのである。
パソコンゲームと呼ばれるものも存在はしていたが、小学生の私の小遣いで何とかなる代物でもなく、結果、無いものは作ってしまえ、の精神にのっとってプログラミングの世界に浸っていくことになるのであった。
なんてことはない、ゲーム作りは楽しいね、と云いたいのである。
プログラミングに関するネタの宝庫だしね。

そんな訳で、本章からWindowsOS上でゲームアプリケーションを造っていくことにしよう。
あくまで我流で・・・

<何もしないWindowのサンプル>さて、ゲームに必要なものは何を置いてもグラフィック画面(とも云えないが)、ってことで、まずはその下準備から入っていくことにする。

左の画像はその為のWindow枠で、一般的な表現を使わせて頂けば、ゲーム用スケルトンフレームとでもいおうか。
クリックして頂けば実寸で見ていただけるようにした。
それほどの価値があるとも思えないが・・・

内容的には、以前作ったWindow枠の設定をこちょこちょっといじっただけの簡単なものである。
改めてソースを公開するほどでもないと思うが、恒例に従って以下にリンクを貼り付けておく。

List.002-001
main_window.h
main_window.cpp
main_callback.h
main_callback.cpp
graphics_control.h
graphics_control.cpp
main_menu.h
main_menu.cpp
main_menu.rc
<ソースのダウンロード>

まぁ、ツールバーとステータスバーがゲームに必要とも思えないので、このWindow枠からは省くことにした。
従って、元ソースはList.001-009である。
基本的には"main_window.cpp"に手を加えて、メニュー関係の整理を"main_menu.rc"で行うといったところである・・・と思ったのだが・・・
とりあえず、背景色
これはWNDCLASSEX構造体であるwindow_class.hbrBackground黒色のブラシを指定してやればよい。
それだけ。

次にクライアントエリアの大きさ。
一般的なものがどの程度の広さかはよく知らないが、横幅640ドット×縦幅480ドットとすることにした。
しかし、これを適用するのには多少の問題をクリアしなければならない。
関数CreateWindowEX()の引数でウィンドウの位置と大きさを指示するものがあるが、これはあくまでウィンドウ全体の位置と大きさなのである。
結局、クライアント領域の大きさを最初から指示する方法が思いつかなかった。

では、最初がダメなら後で行うことにしようと考えた。
はてさて、そんな思惑の末に作ってみたのが関数SetClientArea()である。
詳細はソースのコメントを参照していただくこととして、これを何処で呼出すかだが、今回はWM_CREATEメッセージで処理してみることにした。
ツールバーとステータスバーを生成するときに利用した、アレ、である。

あとは、"main_menu.rc"内の不要な個所をコメントアウトしておしまい。
"main_menu.h"や"main_menu.cpp"に手を加えたほうが良いのかもしれないが、あまり沢山手を加えると思わぬところで間違えてしまうのが、我注意力の無さから容易に想像できるのでやめた(実は面倒くさいだけ)。

こうして出来上がったゲーム用スケルトンだが、実はまだ問題が残っている。
このウィンドウ、マウスでサイズを変更することが出来てしまうのだ。
一見、簡単に解決しそうな問題なのだが、アマチュアな私は解決に一週間もかけてしまったのである。

List.002-002
main_window.h
main_window.cpp
main_callback.h
main_callback.cpp
graphics_control.h
graphics_control.cpp
main_menu.h
main_menu.cpp
main_menu.rc
<ソースのダウンロード>

さて、何を変更したのであろうか。
なんの事は無い"main_window.cpp"内の関数CreateWindowEX()、4番目の引数を変更してやるだけ。
入門書のサンプルはちゃんと理解するまで読もうね、と云うただそれだけのことだったのである。
でも、WS_SYSMENUが終了の×アイコンの事だなんて、誰が想像出来ようか、いや私だけなんだろうなぁ、こんなところで詰まるのは。

そんなこんなでスケルトン作りは完了。
次はいよいよ、クライアントエリアへの書き込みを行ってみよう。

<前章> <目次>





<時乃工房>
Net Office Nakai
メビウスリング投稿掲示板には小説日記ゲームアニメコミック小学生中学生などの掲示板過去ログがあります。相互リンクも募集中。