初めてのDXライブラリで初雪

taketoshi
記事: 222
登録日時: 14年前
住所: 日本国

初めてのDXライブラリで初雪

投稿記事 by taketoshi » 13年前

このサイトに来て二年が経過しようとしていますが。
今まで、ガチでDXライブラリを使ったことがありませんでした。
Cを始めた動機がゲームプログラムではなく、商業アプリを作成したかったからです。

なにより、ここに来たときはC初心者であり、while文とかfor文のお勉強をしていたので
DXライブラリが理解できませんでした。合掌。
それから月日は経ち、WINAPIとC++を使えるようになって、目的の商業アプリも作成しました。


次はアンタ、ここに出入りしてるんだからDXライブラリつかわねーと。
ってことで、今日一日、新ゲームプログラミングの館を読んで、初雪降らせましたよ!!冬だからね!!

CODE:

#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年越しですがやっと、ここのコミニュティの本来の目的に到達しました。
よろしくね。
添付ファイル
snow1.jpg
snow1.jpg (21.74 KiB) 閲覧数: 139 回

コメントはまだありません。