ページ 11

GetNowCount関数について質問です。

Posted: 2013年2月09日(土) 18:17
by AVC
現在ゲームを制作中なのですが、「Zキーを押すと画像が左に流れ、新しい画像が右から出てくる」というプログラムを組み、正常に動いたのですが、
リリースして.exeを起動し、Zキーを押すと動作が停止してしまいます。
また、「Zキーを押すと画像が右へ移動し、Xキーを押すと画像が左へ移動する」というプログラムをリリースした際には画像は問題なく動いたので、
おそらくこれはGetNowCount関数関係の部分で問題が起こっているのだと思います。

原因と思われるコード(Escでゲーム終了)

コード:

if( key[KEY_INPUT_Z] == 1 ){ b ++ ;}
if( key[KEY_INPUT_Z] != 1 ){ b = 0 ;}
if( key[KEY_INPUT_ESCAPE] == 1 ){ c ++ ;}
if( key[KEY_INPUT_ESCAPE] != 1 ){ c = 0 ;}

if( b == 1 )
{
	ClearDrawScreen() ;
	eehandle = LoadGraph("image/select2.png") ;
	bx = 640 ; 
	ax = bx - 640 ;

	DrawGraph( ax , 0 , ehandle , TRUE ) ;
	DrawGraph( bx , 0 , eehandle , TRUE ) ;

	while( bx != 0 )
	{
		ClearDrawScreen() ;

		time = GetNowCount() ;
		for(j = 0 ; j < 100000 ; j ++){ i ++ ; i -- ; }
		time = GetNowCount() - time ;
		ttime = ttime + time ;

		if(ttime >= 1)
		{
			ax -= 10 ;		bx -= 10 ;
			ttime = 0 ;
		}
		DrawGraph( ax , 0 , ehandle , TRUE ) ;
		DrawGraph( bx , 0 , eehandle , TRUE ) ;

		ScreenFlip() ;
	}
}
b,c→入力判定用(Escを押した場合はゲームが終了しました)
ehandle,eehandle→画像を格納するための変数
ax,bx→画像のx座標用変数
time,ttime→時間の経過を計る変数
i,j→雑用変数

備考
OS・・・Window7
コンパイラ・・・Microsoft Visual C++ 2010 Express
DXライブラリを使用しています。
プログラムに関しては去年の夏頃から始め、DXライブラリは去年の秋頃から勉強し始めました。
よろしければご教授お願いします。

Re: GetNowCount関数について質問です。

Posted: 2013年2月09日(土) 18:39
by h2so5
このコードって何をしているんでしょうか?
何もしていないループの時間を計る意味がわかりません。

コード:

        time = GetNowCount() ;
        for(j = 0 ; j < 100000 ; j ++){ i ++ ; i -- ; }
        time = GetNowCount() - time ;
いかにも最適化をすると不具合が起きそうなコードです。

Re: GetNowCount関数について質問です。

Posted: 2013年2月09日(土) 21:43
by AVC

コード:

time = GetNowCount() ;
ttime = ttime + time ;
とすることで正常に動作しました。
ありがとうございました。