今まで、ガチでDXライブラリを使ったことがありませんでした。
Cを始めた動機がゲームプログラムではなく、商業アプリを作成したかったからです。
なにより、ここに来たときはC初心者であり、while文とかfor文のお勉強をしていたので
DXライブラリが理解できませんでした。合掌。
それから月日は経ち、WINAPIとC++を使えるようになって、目的の商業アプリも作成しました。
次はアンタ、ここに出入りしてるんだからDXライブラリつかわねーと。
ってことで、今日一日、新ゲームプログラミングの館を読んで、初雪降らせましたよ!!冬だからね!!
#include "DxLib.h"
#include
class snowclass{
private:
int Handle;
float x;
float y;
float a;
float acc;
float nMaxPos;
public:
snowclass(); //コンストラクタ初期設定
void DrawSnow(); //雪の描写
void SetStatus(); //X軸,Y軸の設定
};
//コンストラクタ
snowclass::snowclass(){
RECT rc;
//画像読み込み
Handle = LoadGraph( "画像/snow01.png" );
//透明度の初期設定
a = 255;
//X軸初期位置設定
GetWindowCRect(&rc);
x = rand() % ((rc.right - rc.left) - 10);
//Y軸初期化
this->y = 0;
/* 加速度設定 */
this->acc = (rand() % 100 * 0.01 + 0.5);
//最大落下位置設定
this->nMaxPos = rand() % ((rc.bottom - rc.top) -10) - 10;
}
//X軸とy軸の設定
void snowclass::SetStatus(){
RECT rc;
//Y軸を加速させていく
this->y += acc;
//フェードアウトする準備
if(nMaxPos-50 a );
DrawRotaGraph( x, y, 0.5, 0, Handle, TRUE );
SetDrawBlendMode( DX_BLENDMODE_NOBLEND, 0 );
}
int WINAPI WinMain(HINSTANCE,HINSTANCE,LPSTR,int){
ChangeWindowMode(TRUE);
DxLib_Init();
SetDrawScreen( DX_SCREEN_BACK ); //ウィンドウモード変更と初期化と裏画面設定
int i = 0,n;
snowclass sc[100];
time_t now;
srand(time(&now));
// while(裏画面を表画面に反映, メッセージ処理, 画面クリア)
while( ScreenFlip()==0 && ProcessMessage()==0 && ClearDrawScreen()==0 ){
//雪の描写タイミングを調整
if(i < 200){
if(rand() % 10 == 7){
i++;
}
}
for(n = 0;n < i; n++){
sc[n].SetStatus();
sc[n].DrawSnow();
}
ScreenFlip(); //裏画面を表画面に反映
}
DxLib_End(); // DXライブラリ終了処理
return 0;
}
絵心は母親の胎内に忘れてきちゃったもんで、困っております。ファイアーエムブレムみたいな戦術RPG作りたいっす。
2年越しですがやっと、ここのコミニュティの本来の目的に到達しました。
よろしくね。