VC++ 2008でフレームワークを作成
ということで(何が「ということ」なんだろ?(^^ゞ)、サンデープログラムの即興ではありますが、VC++にいままで設計したフレームワークをポーティングしてみました。
【開発環境】
[プラットフォーム]
・Windows XP SP3
[コンパイル環境]
・Microsoft VC++ 2008 Express Edition SP1β
・Microsoft DirectX SDK (March 2008)
【実行方法】
「Release\SampleActionWin.exe」を実行します。
上述の開発環境のため、ランタイムが必要になると思います。
この辺りでしょうか。
「Microsoft Visual C++ 2008 再頒布可能パッケージ」
ちなみにWindows Vista SP1ではランタイムが不要でした。
また、Windows 2000位古いOSになると、GDI+のランタイムも必要になるかと思います。
(Javaで記載したサンプルソースのリソースをそのまま使いたかったので、BMPを使いたくない理由からGDI+を使ったリソース管理にしました)
プログラムはデータリソースとして、プログラムのフォルダにある、「Resouece」フォルダ下のデータを読み込みます。
掲載するプログラムのReleaseの下にそのまま置いてあるので特に変更は不要ですが、もしもプログラムを別のフォルダに移動する場合にはこのフォルダも一緒に移動させてください。このデータがないとプログラムは正常に実行できません。
【操作方法と終了方法】
[操作]
・カーソルキーの上下で上下に移動、Zキーでショットです。
・ジョイスティックに対応しています。
ショットは俗に言うmmsystem.hの"JOY_BUTTON1"に当たるボタンになります。
[終了]
・Windowsのプログラムの終了同様に「Alt + F4」キーの押下。
・「ESC」キーの押下。
【その他】
・このプログラムはプログラムのフォルダにある「SampleActionGame.ini」を読み込みます。
セクションは以下のとおりとなります。
----
[Display]
FullScreen=モード
ScreenSize=スクリーンサイズ
----
FullScreenキー:0でウィンドウ、1でフルスクリーン
ScreenSizeキー:W,Hでサイズを設定します。
ScreenSizeは実行するコンピュータのDirectShowでサポートされるスクリーンサイズとなります。
掲載する設定では「800,600」となっています。もしも起動しない場合は、「640,480」(VGA)等が適切と思います。
・サウンドにはMCIを使用しています。(Javaのフレームワークを手っ取り早く移植してみたかったため)
MCIはサウンドドライバ(とOS)にかなり依存するので、音源の再生がコンピュータによりまちまちです。
BGMのループ再生はWindows Vistaではかなりいい感じの再生でしたが、
XPでは少し納得いかない再生処理とかしました。(MCI内部のスレッドとサウンドドライバの問題です。多分)
・フルスクリーンにおいて、デバイスロストを処理していません。
DirectXのその辺の仕組みが大嫌いなので、即興では組みませんでした。
もしもフルスクリーンで実行した場合によるVRAMの破壊は保障できませんのでご了承ください。
(とはいっても、壁紙やアイコン程度がログオフまで死ぬ程度ですかね)
【ソースファイル】
最近掲載していたプログラムで説明が省かれていましたが、『この実行は自己責任』にてお願いいたします。
■ サンプルソース (2008.06.09)
一気に作ったソースを挙げても、ソースを読む方がどんなコードなんだ?となりそうなので、読む方の指標となるスキル位は挙げておいた方がいいかもしれませんね。
【ソースを読む方の対象スキル(○○が分かる方)】
・C++(当たり前ですね)
・C++のSTL(主にコンテナ)
・Windows SDKのウィンドウ操作(主にメッセージループ)
・Windows SDKのGDIとGDI+操作(デバイスコンテキストとビットマップ)
・Windows SDKのスレッド操作(プリエンプティブなデータ処理による排他制御込み)
・DirectX(のDirect Show)
・Windows SDKのMCI(これが一番簡単なスキルですね)
こんなでしょうか。これがこのソースを読むためのスキルです。
◇ ◇ ◇
今回はいつもと違って、「ちょっと即興でサクッと演(や)ってみた。」という感じなので、いつものような長々とした設計については説明しませんw
(というより、いままでこのブログでニュートラルに設計したものをC++言語で実装しただけですが(^^ゞ)
加えて言い訳するとしたら、これはいままでの超高級言語での簡単コーディングと違って、それなりにマニアックな内容を即興で作ってみたという事と、流石にVC++のカテゴリーでこのサンプルを一から説明していると、私のやりたいことが飽和してしまうから…というところですね。(^^ゞ
とは言っても、「動かない」とか「この辺りの仕組みが知りたい」等の何かがあれば、コメントに書いていただければ、分かる範囲で進めていけるかも知れません。私でも分からないことは一緒に進めて行きましょう!(´▽`)ノ
◇ ◇ ◇
とまぁこんな感じですが、これ位が『無料の』(←ココこだわるなぁ~w)VC++ 2008ですぐにできるので、Sample Action GameをVC++に移植するのは簡単なんだろうなぁ~とか思いました。
(一瞬PSPとかGP2Xに移植してみたいなぁ~とか思いましたがwww)
しかしBGMができない限り、あのゲームは有名ポータルサイトにもどこにも日の目を見ないだろうなぁ~とも思いました。(サンプルで作ったので、タイトルもアレだしw)
【2008/10/30追記】
この日記の3ヵ月後に、これよりも高度なサンプルを本ブログに掲載しました。
本日記のソースよりも勉強になるかと思います。
【開発環境】
[プラットフォーム]
・Windows XP SP3
[コンパイル環境]
・Microsoft VC++ 2008 Express Edition SP1β
・Microsoft DirectX SDK (March 2008)
【実行方法】
「Release\SampleActionWin.exe」を実行します。
上述の開発環境のため、ランタイムが必要になると思います。
この辺りでしょうか。
「Microsoft Visual C++ 2008 再頒布可能パッケージ」
ちなみにWindows Vista SP1ではランタイムが不要でした。
また、Windows 2000位古いOSになると、GDI+のランタイムも必要になるかと思います。
(Javaで記載したサンプルソースのリソースをそのまま使いたかったので、BMPを使いたくない理由からGDI+を使ったリソース管理にしました)
プログラムはデータリソースとして、プログラムのフォルダにある、「Resouece」フォルダ下のデータを読み込みます。
掲載するプログラムのReleaseの下にそのまま置いてあるので特に変更は不要ですが、もしもプログラムを別のフォルダに移動する場合にはこのフォルダも一緒に移動させてください。このデータがないとプログラムは正常に実行できません。
【操作方法と終了方法】
[操作]
・カーソルキーの上下で上下に移動、Zキーでショットです。
・ジョイスティックに対応しています。
ショットは俗に言うmmsystem.hの"JOY_BUTTON1"に当たるボタンになります。
[終了]
・Windowsのプログラムの終了同様に「Alt + F4」キーの押下。
・「ESC」キーの押下。
【その他】
・このプログラムはプログラムのフォルダにある「SampleActionGame.ini」を読み込みます。
セクションは以下のとおりとなります。
----
[Display]
FullScreen=モード
ScreenSize=スクリーンサイズ
----
FullScreenキー:0でウィンドウ、1でフルスクリーン
ScreenSizeキー:W,Hでサイズを設定します。
ScreenSizeは実行するコンピュータのDirectShowでサポートされるスクリーンサイズとなります。
掲載する設定では「800,600」となっています。もしも起動しない場合は、「640,480」(VGA)等が適切と思います。
・サウンドにはMCIを使用しています。(Javaのフレームワークを手っ取り早く移植してみたかったため)
MCIはサウンドドライバ(とOS)にかなり依存するので、音源の再生がコンピュータによりまちまちです。
BGMのループ再生はWindows Vistaではかなりいい感じの再生でしたが、
XPでは少し納得いかない再生処理とかしました。(MCI内部のスレッドとサウンドドライバの問題です。多分)
・フルスクリーンにおいて、デバイスロストを処理していません。
DirectXのその辺の仕組みが大嫌いなので、即興では組みませんでした。
もしもフルスクリーンで実行した場合によるVRAMの破壊は保障できませんのでご了承ください。
(とはいっても、壁紙やアイコン程度がログオフまで死ぬ程度ですかね)
【ソースファイル】
最近掲載していたプログラムで説明が省かれていましたが、『この実行は自己責任』にてお願いいたします。
■ サンプルソース (2008.06.09)
一気に作ったソースを挙げても、ソースを読む方がどんなコードなんだ?となりそうなので、読む方の指標となるスキル位は挙げておいた方がいいかもしれませんね。
【ソースを読む方の対象スキル(○○が分かる方)】
・C++(当たり前ですね)
・C++のSTL(主にコンテナ)
・Windows SDKのウィンドウ操作(主にメッセージループ)
・Windows SDKのGDIとGDI+操作(デバイスコンテキストとビットマップ)
・Windows SDKのスレッド操作(プリエンプティブなデータ処理による排他制御込み)
・DirectX(のDirect Show)
・Windows SDKのMCI(これが一番簡単なスキルですね)
こんなでしょうか。これがこのソースを読むためのスキルです。
◇ ◇ ◇
今回はいつもと違って、「ちょっと即興でサクッと演(や)ってみた。」という感じなので、いつものような長々とした設計については説明しませんw
(というより、いままでこのブログでニュートラルに設計したものをC++言語で実装しただけですが(^^ゞ)
加えて言い訳するとしたら、これはいままでの超高級言語での簡単コーディングと違って、それなりにマニアックな内容を即興で作ってみたという事と、流石にVC++のカテゴリーでこのサンプルを一から説明していると、私のやりたいことが飽和してしまうから…というところですね。(^^ゞ
とは言っても、「動かない」とか「この辺りの仕組みが知りたい」等の何かがあれば、コメントに書いていただければ、分かる範囲で進めていけるかも知れません。私でも分からないことは一緒に進めて行きましょう!(´▽`)ノ
◇ ◇ ◇
とまぁこんな感じですが、これ位が『無料の』(←ココこだわるなぁ~w)VC++ 2008ですぐにできるので、Sample Action GameをVC++に移植するのは簡単なんだろうなぁ~とか思いました。
(一瞬PSPとかGP2Xに移植してみたいなぁ~とか思いましたがwww)
しかしBGMができない限り、あのゲームは有名ポータルサイトにもどこにも日の目を見ないだろうなぁ~とも思いました。(サンプルで作ったので、タイトルもアレだしw)
【2008/10/30追記】
この日記の3ヵ月後に、これよりも高度なサンプルを本ブログに掲載しました。
本日記のソースよりも勉強になるかと思います。
コメント
コメントの投稿
« 昔のゲームの想い出 [0056] 「エイリアンシンドローム」 [セガ] [1987] [アーケード] l Home l Visual C++ 2008 Express Edition(゜∀゜)イイ!! »