【ゲーム製作入門】C/C++でブロック崩しを作る②【DXライブラリ】
書き手:肥田野
プログラミング初心者向けに、簡単なゲームの制作を通してC/C++の基本を解説していきます。
当サークルに所属しない方でも参考にしていただければ幸いです。
この記事では前回の内容と、while文の役割を理解していることを前提に進めていきます。
今回解説するコードです。
#include "DxLib.h" int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){ ChangeWindowMode(TRUE); if( DxLib_Init() == -1 )return -1 ; SetDrawScreen(DX_SCREEN_BACK); int x = 40,y = 40; //↓追加 int vecX = 1,vecY = 1; //追加ここまで while(ProcessMessage() != -1){ int startTime = GetNowCount(); ScreenFlip(); ClearDrawScreen(); DrawCircle(x,y,20,GetColor(255,255,255),TRUE); //↓追加 if(x>640)vecX = -1; if(x<0)vecX = 1; if(y<0)vecY = 1; if(y>480)vecY = -1; x += 5*vecX; y += 5*vecY; //追加ここまで if(CheckHitKey(KEY_INPUT_ESCAPE) == 1)break; int endTime = GetNowCount(); WaitTimer(1000/60-(endTime-startTime)); } DxLib_End() ; return 0 ; }
追加したコードを中心に解説します。
int vecX = 1,vecY = 1;
球が動く方向を二つの変数で表現しています。
vecXは+1で右、-1で左に、vecYは+1で下に、-1で上に進ませます。
if(x>640)vecX = -1;……
球が跳ね返る条件文です。
ChangeWindowMode()でウィンドウサイズにした場合、デフォルトでは画面サイズは640×480になります。
x += 5*vecX; y += 5*vecY;
球の座標を動かしています。
「5」という数字は適当につけたので、ゲームの難易度に合わせて変化させたいですね。
vecXとvecYを0にすれば、球の動きを停止させることもできます。
今回は短めですが、このゲームの基盤となる部分なので確実に理解できるようにしましょう。
次回はプレイヤー(バー?)を実装してみます。