5秒後と10秒後に音を鳴らす

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
phelmi
記事: 18
登録日時: 9年前

5秒後と10秒後に音を鳴らす

#1

投稿記事 by phelmi » 9年前

皆さん初めまして。
yumson-17と申します。

早速、質問なんですが、
エンターが押されてから、5秒後と10秒後に効果音を鳴らすようなプログラムを考えているのですが、音が鳴りません。
自分で考えたプログラムは、

コード:

#include"DxLib.h"
int White = GetColor(255,255,255);
int Key[256];
int StartTime , Time;
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[]){
	char GetHitKeyStateAll_Key[256];
	GetHitKeyStateAll( GetHitKeyStateAll_Key );
	for(int i=0;i<256;i++){
		if(GetHitKeyStateAll_Key[i]==1) GetHitKeyStateAll_InputKey[i]++;
		else							GetHitKeyStateAll_InputKey[i]=0;
	}
	return 0;
}

int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
	ChangeWindowMode(TRUE);
	if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;
	int Sound1 = LoadSoundMem("test1.mp3");
	int Sound2 = LoadSoundMem("test2.mp3");
	while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
		if(Key[KEY_INPUT_RETURN]==1){
			StartTime = GetNowCount();
		}

		Time = GetNowCount() - StartTime;

		if(Time == 5000){
			PlaySoundMem( Sound1 , DX_PLAYTYPE_BACK );
		}
		if(Time == 10000){
			PlaySoundMem( Sound2 , DX_PLAYTYPE_BACK );
		}

		ScreenFlip();
	}
	DxLib_End();
	return 0;
}
エラーメッセージは何も出ていません。

よろしくお願いします。

アバター
Ciel
記事: 252
登録日時: 9年前

Re: 5秒後と10秒後に音を鳴らす

#2

投稿記事 by Ciel » 9年前

宣言 int GetNowCount( void ) ;

概略 ミリ秒単位の精度を持つカウンタの現在値を得る

引数 なし
戻り値 Windowsが起動してから経過時間をミリ秒単位であらわした値

解説  すぐ上に書いてありますが、Windows が起動してから経過 時間をミリ秒単位であらわした値が返ってきます。この関数の 存在意義は時間の計測にあります。特定の時間を取得する事は この関数では出来ません。


たまたま、5000か10000ミリ秒にぴったりなっていないのでは?
oui C'est la Vie♪

アバター
みけCAT
記事: 6246
登録日時: 9年前
住所: 千葉県
連絡を取る:

Re: 5秒後と10秒後に音を鳴らす

#3

投稿記事 by みけCAT » 9年前

経過時間が5秒と10秒ぴったりになることはまず考えられないでしょう。

コード:

#include"DxLib.h"
int White = GetColor(255,255,255);
int Key[256];
int StartTime , Time;
int GetHitKeyStateAll_2(int GetHitKeyStateAll_InputKey[]){
    char GetHitKeyStateAll_Key[256];
    GetHitKeyStateAll( GetHitKeyStateAll_Key );
    for(int i=0;i<256;i++){
        if(GetHitKeyStateAll_Key[i]==1) GetHitKeyStateAll_InputKey[i]++;
        else                            GetHitKeyStateAll_InputKey[i]=0;
    }
    return 0;
}
 
int WINAPI WinMain( HINSTANCE hInstance, HINSTANCE hPrevInstance,LPSTR lpCmdLine, int nCmdShow ){
    ChangeWindowMode(TRUE);
    if(DxLib_Init() == -1 || SetDrawScreen( DX_SCREEN_BACK )!=0) return -1;
    int Sound1 = LoadSoundMem("test1.mp3");
    int Sound2 = LoadSoundMem("test2.mp3");
	int playedflag=2;
    while(ProcessMessage()==0 && ClearDrawScreen()==0 && GetHitKeyStateAll_2(Key)==0 && Key[KEY_INPUT_ESCAPE]==0){
        if(Key[KEY_INPUT_RETURN]==1){
            StartTime = GetNowCount();
			playedflag=0;
        }
 
        Time = GetNowCount() - StartTime;
 
        if(Time >= 5000 && playedflag==0){
            PlaySoundMem( Sound1 , DX_PLAYTYPE_BACK );
			playedflag=1;
        }
        if(Time >= 10000 && playedflag==1){
            PlaySoundMem( Sound2 , DX_PLAYTYPE_BACK );
			playedflag=2;
        }
 
        ScreenFlip();
    }
    DxLib_End();
    return 0;
} 
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

phelmi
記事: 18
登録日時: 9年前

Re: 5秒後と10秒後に音を鳴らす

#4

投稿記事 by phelmi » 9年前

ありがとうございます。
解決できました。

閉鎖

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