5.キャラクターの描画(表示)と変数 |
キャラクターを画面に描画(表示)するプログラム(C++サンプルプログラムソース) |
|
#include "DxLib.h"
//グローバル変数はここで宣言する
int g_X=0; //X座標
int g_Y=0; //Y座標
// WinMain関数
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow )
{
// DXライブラリ初期化処理
if( DxLib_Init()==-1) return-1;
// 描画先画面を裏画面にする
SetDrawScreen(DX_SCREEN_BACK); //作業画面に設定
//ローカル変数はここで宣言する
int P=LoadGraph("Player.png"); //画像の識別コード入れる変数
//メインループ
while(ProcessMessage()==0)
{
//キャラの描画
ClsDrawScreen() ; //作業画面をクリアする
DrawGraph(g_X,g_Y,P,TRUE); //作業画面に書き込む
ScreenFlip(); //作業画面をモニターに表示する
// ESCキーが押されたらループから抜ける
if(CheckHitKey(KEY_INPUT_ESCAPE)==1)break;
}
//終了処理
DxLib_End();
return 0;
} |
 |
上をコピーして、一度実行してみましょう。ESCキーで終了できます。
するとBCC Developerで作ったフォルダ \testの下にDebugフォルダ ができていると思います。
左の画像をダウンロードして、出来た*.exeファイルのあるフォルダに画像を入れましょう。 |
|
|
SetDrawScreen(DX_SCREEN_BACK);
描画をバックグランドに設定する。
描画作業を隠すために必要です。隠さないと画像がちらつきます。
ここは変更する必要はありません。 |
while(ProcessMessage()==0)
{
//この「{」 と 「}」の中をぐるぐる回る。ESCキーが押されたらこのループから出る
if(CheckHitKey(KEY_INPUT_ESCAPE)==1)break;
}
ここも変更する必要はありません。 |
ClsDrawScreen() ;で、描画作業領域をクリアします。
SetDrawScreen(DX_SCREEN_BACK); でバックグラウンドに設定されているので、
バックグラウンドの画像をクリアします。
DrawGraph(X,Y,P,TRUE); で、描き込みます。
ここでも、バックグラウンドに設定されているので、バックグラウンドに描画される。
ScreenFlip(); で、バックグラウンド画面を実際に表示される画面に表示します。
ClsDrawScreen() ; と ScreenFlip(); は変更する必要はありません。
ClsDrawScreen() ; と ScreenFlip(); の間に表示したいキャラを設定します。 |
int P=LoadGraph("Player.bmp"); で、Player.bmpをメモリに読み込みます。
Pに、メモリにあるPlayer.bmpを呼び出すための識別コードが入ります。
このPが変数です。
Pが認識コードではなく、Pの中に認識コードが入っています。
DrawGraph(X,Y,P,TRUE);
X座標Y座標にコードネーム(P)の画像を透明化をON(TRUE)で表示。
|
変数 |
変数を覚えれば、C++の基本的な部分の半分は終わりです。
変数を使うには、宣言を覚えなければなりません。
|
変数の宣言 |
変数は、使う前に「つかうよ〜」と宣言しなければなりません。
int X;
この文章が、変数Xの宣言です。
[型] [区切り] [変数名] [;]
と順番に書きます。
[型]
変数の種類を決めます。特に使用目的がない限りintをお勧めします。(下記参照)
[区切り]
半角スペースやTAB・ENTER(改行)。ENTER(改行)はなるべく使わないようにしましょう。
[変数名]
半角英数と「_」(アンダーバー)が使えます。
数字を最初にすることはできません。( [ X1 正 ] [ 1X 誤 ] )
[;]
文章の終わり。
これで変数が使えるようになりました。
|
変数と代入 |
|
変数ができましたので、変数に数字を入れることができます。
X=1;
これでXに1と言う数字が入りました。
[変数] [代入演算子] [パラメータ] [;]
と書きます。
[代入演算子]
代入する命令です。ここでは「=」だけ解説します。
[左] [=] [右]
[右] を [左]に代入します。
代入演算子はたくさんありますが、「=」だけでプログラムは組めます。
(演算子は、制御文で詳しく解説します)
[パラメータ]
[変数] [=] [パラメータ] [;]
見てわかるように、[パラメータ]を[変数]に代入します。
X=Y;
のように変数も代入できます。
[変数A] [=] [変数B]
[変数B]を[変数A]に代入します。
|
初期値 |
最初に入れる数字(定数)の事を初期値と呼びます。
C++では、変数の宣言と同時に初期値を設定することが推奨されています。
上の例では
int X=1;
と書きます。
|
型 |
型について 。よく使う物を表にしました。
型 |
とれる値の範囲
解説 |
型記載名 |
char
文字型 |
約±127 1文字 |
c |
int(イント)
整数型 |
約±2147483647 整数 |
n |
double(ダブル)
倍精度実数型 |
±10E-307〜±10E+308
小数点が使える |
d |
他にも色々な型があります。利用条件によって使い分けましょう。
|
難しい話 流し読みゾーン |
ローカル変数とグローバル変数 |
ローカル変数は、宣言された関数内だけで使えます。
関数の外に出ると、その変数はメモリから消えます 。
グローバル変数は、 プログラムが終わるまでずっと使える変数 です。
関数を自分で作るには、グローバル変数がすごく便利になります。
クラスを覚えるまで、グローバル変数を使う機会が多いと思います。
しかし、なるべく使わないようにしましょう。プログラムのメンテナンスが難しくなります。
メンテナンスを容易にするため、グローバル変数とローカル変数を区別しましょう。
先頭に「g_」を付けることをお勧めします。
#include "DxLib.h"
int WINAPI WinMain(){int X=0; }
int X=0; はローカル変数です。
WinMain()関数内で宣言されているからです 。
グローバル変数を使うには
#include "DxLib.h"
int g_X=0;
int WINAPI WinMain(){ }
と 関数の外で宣言します 。
|
静的変数と自動変数(static) |
普通に
int X=0;
と宣言すると自動変数になります。
静的変数は、文の前に static と書くだけです。
static int X;
と宣言します。
関数の外に出ても、その 変数はメモリから消えません 。
しかし、グローバル変数と違い、 宣言された関数外から読み書きできません 。
最初に出てくるソースの X は、int型動的ローカル変数と言えます。
|
変数名(コーディングスタイル) |
コーディングスタイル
コーディング(コードを書く)スタイル(文章の表現形式)
コードを書く表現形式ってことです。
お花の「**流」のようにいくつもあります。
数字を使って、安易な名前をつけるのはやめましょう。
[例] hensuu1 hensuu2 ・・・
変数は、半角小文字を「_」(アンダーバー)で区切ることが多く使われています。
[例]
最初に出てくるソースの X は、 n_player_position_x と書けばわかりやすいです。
nは、上の表にある型記載名です。
小文字nを記載していると、ほとんどの人はその変数がint型だとわかります。
n_player_position_x は、ぱっと見ただけで、
int型のプレイヤー位置(ポジション)のX座標を表す変数だとわかるのです。
しかし、intなどの型を理解しておかなければならない場合などは少ないようで、
省略することが推奨されています。ですので一般的には
g_player_position_x
と書くのが一番よいでしょう。
g_はグローバル変数を意味します。
わかりにくい変数にすると、プログラムを作る途中で挫折する可能性が非常に大きくなります。
自分で作ったプログラムがだんだんややこしくなるからです。
もし、3ヶ月で完成させるプログラムであれば、最初のほうで作った変数がXだとわけがわからなくなります。
このことを覚えていると、自分のソースが読みやすい以外に、
他人のソースも読みやすくなります 。
|
便利ツール |
翻訳サービスを使いましょう。
OCN|翻訳サービス
@nifty 翻訳
これを使うと変数を作るのが楽です。
他に、他人のソースを読んだり、改造するときにも役立ちます。
少しだけ英語の勉強にもなります。
もう一つ大変なのは、長い変数名を毎回キー入力しなければいけない事です。
もうひとつエディタを用意して、変数をコピー&ペーストして使うのはどうでしょう。
BCC Developer から Jmエディタをダウンロードできます。
軽い動作で使いやすいエディタです。
このエディタに作った変数や関数を集めて起動していれば、いつでもコピーできて、入力間違いも少なくなりますし、長い変数名にしても苦になりません。
まあいえば、プログラムを組むとき、
BCC Developer以外に、翻訳ページとJmエディタも同時に起動しておけば、楽にプログラミングができるわけです。
|
BCC Developerの機能を使いましょう |
 |
左の置き換えで、一気にすべての変数の名前を変更できます。
[例]
変数名に数字を使ってないとします。
新しく作った変数を X1・Y1・G1という名前にします。
その日の最後に3個の変数を置き換えて、X1を g_player_position_x にします。
検索も、簡単に出来ます。
他人のソースを読むのにも翻訳サービスを使うと楽です。
他人のソースを参考にすることが出来ます。
一番楽なのは、英語を覚えることです。
プログラムの最新情報も、英語のページにあります。
プログラムを書く一番の早道は英語を覚えることかもしれません。
次のページに、変数名を変更したプログラムを書きます。 |
|