C++ DXライブラリ ゲーム開発 プログラミング講座

シューティングゲームを作る part2.関数化とボックスの描画

 

まとめ

  • DXライブラリの DrawBox() 関数の使い方を解説した.
  • 自機の描画の関数化を行った.
  • 自機の描画を行った.

はじめに

前回はこちら.
環境構築などを行っている.

自機を描画する

ボックスを描画する

Dxライブラリでボックスを描画するには,
DrawBox() 関数を使用する.

リファレンス
dxlib.xsrv.jp

引数は,リファレンスを参照すると

引数
x1 , y1 : 描画する四角形の左上の頂点座標
x2 , y2 : 描画する四角形の右下+1の頂点座標
Color  : 描画する四角形の色
FillFlag : 四角の中身を塗りつぶすか、のフラグ。TRUEで塗りつぶし、FALSEで塗りつぶさない

とのこと.

つまり, 0, 0 の位置に,
4, 4 サイズ の白いボックスを描画するには,

DrawBox( -2, -2, 2, 2, 0xfffffff, 1);

となる.
念の為解説を挟んでおく.

位置を指定する

描画位置が 0, 0, で,
サイズが 4, 4 なので,
最終的に描画されるボックスの頂点は,

  • x1 -2
  • y1 -2
  • x2 2
  • y2 2

となる.

図を参照.

f:id:gothlab:20210805020715j:plain

なので,それを順番に指定してやれば良い.

色を指定する

DrawBox() などに渡すカラーコードは,
0~255 で,これを 16 進数表記したものを使用する.

はじめは少々ややこしいかもしれないが,
0~ff の間,と考えれば簡単かもしれない.

16進数で,上位から ARGB (透明度,赤,緑,青)要素を表す.
つまり,

    • 0xFFFF0000
    • 0cFF00FF00
    • 0xFF0000FF
    • 0xFFFFFFFF
    • 0xFF000000

といった具合だ.

自機を描画する

サイズは,各辺 32 ピクセル.
位置は 320, 340 の位置が丁度よい.

色は 淡いブルー.
塗りつぶしなし.

とする.

なので,以下のようになる.

DrawBox( 320-16, 340-16, 320+16, 340+16, 0xff0088ff, 0);

自機の描画を関数化する

上記コードは少々煩雑なので,
自機の描画を関数化してしまう.

以下のようなコードで,自機を描画したい.

DrawPlayer( 320, 340 );

なので, DrawPlayer() 関数を作成してやる.

void DrawPlayer( float x, float y )
{
// 本体の表示
DrawBox(x-16, y-16, x+16, y+16, 0xff0088ff, 0);
}

といった具合だ.

関数,引数について理解が怪しい場合は,
入門サイトで再度復習してくるか,

どうせいずれ理解できるのでそのまま先へ進んでも良い.

完成コード

include "DxLib.h"
void DrawPlayer( float x, float y )
{
// 本体の表示
DrawBox(x-16, y-16, x+16, y+16, 0xff0088ff, 0);
}
// プログラムは WinMain から始まります
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
//int main()
{
ChangeWindowMode( true );
if( DxLib_Init() == -1 )     // DXライブラリ初期化処理
{
return -1 ;          // エラーが起きたら直ちに終了
}
DrawPlayer( 320, 340 );
WaitKey();
DxLib_End() ;               // DXライブラリ使用の終了処理
return 0 ;               // ソフトの終了 
}

以上で自機の描画が完成した.

おわりに

次回はゲームループの解説と,自機の移動を行う予定.

  • この記事を書いた人

GOTH

鹿児島県出身,吉祥寺在住の27歳.職業はゲーム会社でプログラマー.趣味はバイク,車,キャンプ,ガジェット,読書,そしてゲーム開発. サイトのテーマはプログラミングとガジェットでライフハック.たまに趣味に関する雑感や記録を残していく備忘録.ツイッターもやってます.
自己紹介
お問い合わせ

-C++, DXライブラリ, ゲーム開発, プログラミング講座