ウィンドウ作成はゲーム作成の第一歩

ゲームを作るにはまずウィンドウを作らないといけません。

Windowsでアプリケーションを作るときは、すべてウィンドウを作成する必要があります。
このページを見ているブラウザも、ワードやエクセルなどのソフトも全てウィンドウを作りそれに対して何かしらのアクションをすることで成り立っています。

というわけで、まずはウィンドウを作ってみます。
とりあえず、下のソースコードをサラッと見て、ページ下部の説明を読んでみてください。

スポンサーリンク

サンプルプログラム

ソースファイル名:invader.cpp

ウィンドウの作成は自動でできる

初めてのゲーム作成でいきなりこんなソースコードが出てきたら挫折しそうですね…
でも、安心してください
実は、このソースは、VisualStudio が自動で作成したソースコードになります。
(※関数間のスペースは補正しています)
VisualStudio を使ったウィンドウの作成手順は、こちらのページで説明しています。

Visual Studio Community 2015 Win32 プロジェクトの作成

必要な個所にコードを追加していく

ゲーム作成に限らず、ウィンドウを使ったアプリを作るときは、このソースコードをベースに必要な箇所だけ自分でプログラムを追記していきます。

いきなりこの難解なコードを理解しようなんて思わないでくださいね。
全部理解しながら作っていたらいつまで経ってもゲームが作れませんから…
必要な個所だけ理解するようにしましょう。

まず必要な点は以下の3つだけです。

  1. メッセージループ
  2. ウィンドウプロシージャー
  3. ウィンドウハンドル

では、順番に説明していきます。

メッセージループ

ウィンドウズのアプリケーションは、メッセージと呼ばれる命令を受けることで様々な動作を実現しています。 これはとても重要なので覚えておいてください。

例えば、ウィンドウが開いた時には、

「ウィンドウを作りました」

というメッセージがウィンドウに対して送られます。
他には、マウスを左クリックした時は、

「 ( x, y ) 座標で左クリックされました」

というメッセージが送られます。
ウィンドウに送られるこれらのメッセージを待ち構えて捕まる部分がメッセージループです。
サンプルプログラムの wWinMain 関数にある

という部分がそれにあたります。
while で無限ループしてメッセージが来るのを常にチェックしています。
while ループ

では、実際にメッセージがきた時にどうなるのかをご説明します。

ウィンドウプロシージャー

ウィンドウにメッセージがきたら、メッセージループで処理されます。
そして、処理されたメッセージは、ウィンドウプロシージャーと呼ばれる場所に届きます。

ウィンドウプロシージャーは、各メッセージに対する動作を行う関数です。
画面の描画もキーボード操作もマウス操作も全てウィンドウプロシージャーにメッセージが来て処理されます。

ウィンドウズアプリは、これらのメッセージに対してアクションをさせることで作り上げていきます。
つまり、これから作るアプリは、全てウィンドウプロシージャーの中に記述すればいいということです。

ウィンドウプロシージャーは、以下の部分になります。

この WndProc 関数がウィンドウプロシージャーとなります。
ウィンドウに送られてくるメッセージは、第二引数の message に入っています。
そして、各メッセージに対する動作を作る為、switch で分岐させています。

引数の wParam, lParam は、各メッセージに付加する引数です。
マウスクリックをした時に送られてい来る、WM_LBUTTONDOWN というメッセージでは座標、 ウィンドウのサイズが変わった時に送られる WM_SIZE ではウィンドウのサイズなど、メッセージごとに異なるパラメーターが入ってきます。

もう一つ、第一引数に hWnd という変数があります。
これは一体何なのでしょうか?

ウィンドウハンドル

hWnd はウィンドウハンドルと呼ばれるものです。
ウィンドウハンドルとは、自分のウィンドウを判別するための値だと思ってください。

ウィンドウズは、ウィンドウの複数形ですよね。
その名の通り、PC上ではたくさんのウィンドウが開いています。
そんなたくさんのウィンドウの中で、自分のウィンドウに的確に情報を送るために使用するのがウィンドウハンドルです。

まだ使い道がよく判らないと思いますが、アプリケーションを開発する時は、様々な場所でウィンドウハンドルは必要になります。
とても重要な物だという事だけでも覚えておいてください。

最後に流れをおさらい

最後にウィンドウズアプリケーションの動作の流れをおさらいします。

プログラムが開始すると wWinMain から開始します。

_wWinMainの最後でメッセージループに突入します。

ひたすらウィンドウに対するメッセージを待ち続けます。
↓ ↑
メッセージが来たら、WndProc関数が実行されます。

以上がウィンドウズアプリケーションの流れです。

プログラムを実行してみる

説明が長くなりましたが、早速実行してみましょう。
実行すると下のように真っ白なウィンドウが一つ開いてくるはずです。

ウィンドウの初期化画面

次からは、これをベースにゲームを作っていきます。

スポンサーリンク