アクションゲームを作るための最低限必要なことを書きました。ESCで終了。 |
//4.詳しい解説 このままBCCにコピーして実行できます
#include "DxLib.h" // DXライブラリを使うために絶対必要 一番上に書く
int WINAPI WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance, //メイン関数
LPSTR lpCmdLine, int nCmdShow ) //メイン関数のつづき 絶対必要
{ //関数の始まり (メイン関数の始まり)絶対必要
//DXライブラリの設定
if(DxLib_Init()==-1)return -1; //DXライブラリを使うために絶対必要 DX関数を使う前に書く
SetDrawScreen(DX_SCREEN_BACK); //アクションゲームに必須
//メインループ
while(ProcessMessage()==0) //アクションゲームに必須
{ //ループの始まり while()に必須
//キャラの描画
ClsDrawScreen() ; //アクションゲームに必須
DrawString(160,240,"C++プログラミング 開始",GetColor(255,255,255));
ScreenFlip(); //アクションゲームに必須
if(CheckHitKey(KEY_INPUT_ESCAPE)==1)break;//while()に必須
} //ループの終わり while()に必須
DxLib_End(); //DXライブラリを使ったら絶対必要 return 0;の手前に書く
return 0; //プログラムの最後に絶対必要 関数外に出る メイン関数の最後に書く
} // 関数の終わり (メイン関数の終わり)絶対必要
|
解説 |
見てわかるとおり、ほとんどが絶対必要で変更の必要がありません。
変更の必要がないので、きちっと理解する必要もありません。
順番は重要です。
プログラミングしている部分は
DrawString(160,240,"C++プログラミング 開始",GetColor(255,255,255));
だけと言って過言ではありません。
他は、ライブラリの初期設定とプログラムの終了処理です。 |
C++の解説 |
・C++は、左から右へ、上から下へ順番に処理されていきます。
#include "DxLib.h"
int WINAPI WinMain( )
if(DxLib_Init()==-1)return -1;
・
・
と順番に処理されていきます。
・” ”の中以外はすべて半角英数と半角記号。(//は下記参照)
・大文字・小文字の区別がある。
・基本的には、文章の終わりに「;」を付ける。
例外もあります。
if( ){ } や main( ){ } などすべての関数には、文章の終わり記号「;」が付きません。
・C++ソースは、メモ帳でも開く事のできるただのテキストファイルです。
詳しくは
初心者C++
をごらんください。
|
自由度 |
C++の文法には自由度があります。下のソースは前のページのソースとまったく同じプログラムになります。
自由度が高いからこそ、わかりやすいソースが作れるのですが、
逆に解りにくいソースを作ることも可能です。
言葉でも、きれいに話せる人と汚い言葉をしゃべる人がいます。
Cは特に、文法以外に話し方のマナーを覚える事も大切です。
一般的に、 擬似ツリー(階層構造)のように書くことが推奨されています 。
簡単なことです。TABを入れるのです。
マナーを覚えることで、他人のソースが大変読みやすくなります。 |
無秩序サンプルソース |
//テスト このままBCCにコピーして実行できます
#include "DxLib.h"
int WINAPI WinMain(
HINSTANCE hInstance, HINSTANCE hPrevInstance
, LPSTR lpCmdLine, int nCmdShow
)
{if(DxLib_Init()== -1 ) return -1
;DrawString(
200, 240 ,"これでも動くのです",GetColor (255,255, 255
) );
WaitKey();DxLib_End();return 0;}//テスト
|
解説 |
//4.詳しい解説
// のあとに何を書いてもコンパイルから無視されます。
プログラムにはまったく影響を及ぼしません。
しかし、大変重要な意味を持っています。(ここは大切)
プログラムを組んで1年間ほったらかしていると、そのプログラムを見てすぐ理解できるでしょうか?。
自信がないでしょう;;。
あかの他人が見ても何をするプログラムかわかるぐらいのコメントを書きましょう。
アマチュアプログラマをするにしても、他人と一緒に一つの大きなプロジェクトに一度は参加したいものです。
自分のため、他人のために、コメントはていねいに。
多く書けばよい訳ではありません。見やすくです。
|
DXライブラリ関数の簡単な解説 流し読みゾーン |
#include "DxLib.h"
最初のほうに書いた DXライブラリを使うための設定の2つ目 です。
このプログラムは、DXライブラリを含んでいる と宣言しています。
簡単に言えば、「DXライブラリを使いますよ〜」と、コンパイラに教えてあげています。
ここでは、
GetColor()
DrawString()
がDXライブラリ内の関数です。
使う前に宣言しないといけません。なので、一番上に書きましょう。
#includeはインクルードと呼ばれます。
他のライブラリの関数を使うのであれば、他のライブラリもインクルードしなければなりません。 |
|
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
メイン関数です。 最初に呼び出される関数。
関数内も左から右へ、上から下へ順番に処理されていきます。
細かいことは今の所無視していいでしょう。
この関数の実態は
int WINAPI WinMain( )
{
// ここにプログラムを入れる
}
です。 |
|
if(DxLib_Init()==-1)return -1;
DXライブラリの初期化。DXライブラリを使うために絶対必要。
メイン関数内でDXライブラリを使う前に書きましょう。
この文章を変える必要はありません。
詳しくは、後に説明する機会もあるでしょう。 |
|
DxLib_End();
DXライブラリの終了処理。DXライブラリを正常に終了するために必要。
もうDXライブラリを使わなくなれば書きましょう。
この文章を変える必要はありません。説明の必要さえありません。 |
|
return 0;
戻り値「0」で、関数から抜け出します。
この場合 WinMain( ) 関数から抜け出します。
簡単に言えば、プログラムを終了するということです。
メイン関数の最後に書きましょう。
int WINAPI WinMain( )
{
//ここにプログラムを入れる
return 0;
} // return0; でここに出てきます。
戻り値「0」で、プログラムが正常に終了したことを意味します。 |
|
DxLib_End();
return 0;
この二つは、セットになっています。
セットになっていますのでコメントは
//終了処理
DxLib_End();
return 0;
でいいでしょう。コメントを書きすぎるのも、プログラムを読みにくくします。
DxLib_End(); を実行した後、すぐ return 0; を実行することで、正常にプログラムを終了できます。
この文章を変更する必要はありません。
|
アクションゲーム用(シューティングゲーム用) 初歩的テンプレート |
// テンプレート-----------------------------------------
#include "DxLib.h"
// グローバルゾーン -------------------------------------------
//------------------------------------------------------------
int WINAPI WinMain( HINSTANCE hInstance,HINSTANCE hPrevInstance,
LPSTR lpCmdLine, int nCmdShow )
{
//DXライブラリの設定
if(DxLib_Init()==-1)return -1;
SetDrawScreen(DX_SCREEN_BACK);
// ローカルゾーン----------------------------------------------
//------------------------------------------------------------
//メインループ-------------------------------------------------
while(ProcessMessage()==0)
{
//キャラの描画
ClsDrawScreen() ;
//描画ゾーン
ScreenFlip();
if(CheckHitKey(KEY_INPUT_ESCAPE)==1)break;
}
//------------------------------------------------------------
DxLib_End();
return 0;
}
//関数ゾーン(グローバル関数・メンバ関数)--------------------------
//-------------------------------------------------------------
|