ゲームを動かしたままフェードアウトさせたい

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
felnad

ゲームを動かしたままフェードアウトさせたい

#1

投稿記事 by felnad » 14年前

ゲームが動いてる状態でフェードアウトして次の処理に移行させたいのですが上手く出来ません。
↓の処理だと一瞬真っ暗になってすぐゲーム画面に戻ってしまうのですがどうすればいいでしょうか?

コード:

void gameend(){
	int i;
	SetDrawScreen( DX_SCREEN_BACK ) ;
	WaitTimer( 0 ) ;
		
	for( i = 0 ; i < 255 ; i+=3 ) // 
	{
		SetDrawBright( 255 - i , 255 - i , 255 - i ) ; 
		ScreenFlip() ;
	}
	SetDrawBright( 255 , 255 , 255 ) ; 
}

だんごさん
記事: 273
登録日時: 14年前

Re: ゲームを動かしたままフェードアウトさせたい

#2

投稿記事 by だんごさん » 14年前

この関数だと、ゲーム画面は動かないと思います。
この関数はwhile文等で繰返し呼び出されているのですよね?
もし動かしたいのなら、この関数が呼び出される毎にBrightの値を下げて行き
if文などで255まで行ったら元に戻してあげる感じではどうでしょうか?

この場合だと画面を描画する前に呼び出す必要はあります。
 Dango San

へにっくす

Re: ゲームを動かしたままフェードアウトさせたい

#3

投稿記事 by へにっくす » 14年前

felnad さんが書きました:ゲームが動いてる状態でフェードアウトして次の処理に移行させたいのですが上手く出来ません。
↓の処理だと一瞬真っ暗になってすぐゲーム画面に戻ってしまうのですがどうすればいいでしょうか?

コード:

void gameend(){
	int i;
	SetDrawScreen( DX_SCREEN_BACK ) ;
	WaitTimer( 0 ) ;
		
	for( i = 0 ; i < 255 ; i+=3 ) // 
	{
		SetDrawBright( 255 - i , 255 - i , 255 - i ) ; 
		ScreenFlip() ;
	}
	SetDrawBright( 255 , 255 , 255 ) ; 
}
当たり前でしょ、、
輝度の設定は、
「これから書く描画を、この明るさで書いてね♪」
という命令ですから、すでに描画されたものに対しては反映されません。
そこをもう一度考えましょう
以下のような感じ?

コード:

void gameend(){
	int i;
	SetDrawScreen( DX_SCREEN_BACK ) ;
	WaitTimer( 0 ) ;
		
	for( i = 0 ; i < 255 ; i+=3 ) // 
	{
		// メッセージ消化
		if ( 0 != ProcessMessage()  ) break;
		// 画面を初期化する
		ClearDrawScreen() ;
		// 輝度を設定する
		SetDrawBright( 255 - i , 255 - i , 255 - i ) ; 
		// フェードアウトさせたいプレイヤーを描画する
		// DrawBox( PlayerX , PlayerY ,PlayerX + 48 , PlayerY + 48 , GetColor( 255 , 0 , 0 ) , TRUE ) ;
		// 裏画面の内容を表画面に反映させる
		ScreenFlip() ;
	}
	// 輝度を元の設定にする
	SetDrawBright( 255 , 255 , 255 ) ; 
}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: ゲームを動かしたままフェードアウトさせたい

#4

投稿記事 by softya(ソフト屋) » 14年前

なにげに下記の条件に該当しているプログラムな気がします。

「補足資料.11章 書いてはいけない4つの処理」
http://dixq.net/g/h_11.html
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

へにっくす

Re: ゲームを動かしたままフェードアウトさせたい

#5

投稿記事 by へにっくす » 14年前

softya(ソフト屋) さんが書きました:なにげに下記の条件に該当しているプログラムな気がします。

「補足資料.11章 書いてはいけない4つの処理」
http://dixq.net/g/h_11.html
不適切な実装3. あちこちにDXライブラリ3大処理がある
に該当しますね。失礼しました…
DxLib_End()を呼ぶ直前に、gameend()を呼んでいる意識ですが
そんでもメインの他に3大処理があるのはいただけないですよねw

なのでfelnadさんも、気をつけましょう。

閉鎖

“C言語何でも質問掲示板” へ戻る