〇〇秒ある動作をするプログラム

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

〇〇秒ある動作をするプログラム

#1

投稿記事 by かるた » 1年前

初めましてかるたと申します。
OSはwindows7でライブラリはdxライブラリを使用しています。言語はc++です。
現在、dxライブラリを使ってゲームを作成する練習をしています。
文字をある時間表示して、消すプログラムを考えています。
http://dxlib.o.oo7.jp/dxfunc.html
上のサイトの時間関係の関数からGetNowCount()を使って
例えば、
while (GetNowCount() - StartTime < 6000)
{

}
6秒間過ぎるまでループという処理を考えたとします。
この中にDrawFormatString(200, 200, GetColor(150, 200, 200), "hello.world");
というものを入れれば、「hello.world」という文字が6秒間表示されるのではないかと考え、実行しましたが、
6秒立った後に、文字が表示されてしまいました。
どうすれば、〇秒間文字が表示され、その後消えるプログラムが作れますか。

ちなみに、コードは、
#include "DxLib.h"

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
int StartTime;
ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK);


if (DxLib_Init() == -1) // DXライブラリ初期化処理
{
return -1; // エラーが起きたら直ちに終了
}
while (!ScreenFlip() && !ProcessMessage() && !ClearDrawScreen()) {
// 現在経過時間を得る
StartTime = GetNowCount();

// 計測開始から6秒が過ぎるまでループ
while (GetNowCount() - StartTime < 6000)
{
DrawFormatString(200, 200, GetColor(150, 200, 200), "hello.world");
}
}
WaitKey();

DxLib_End(); // DXライブラリ使用の終了処理

return 0; // ソフトの終了
}
です。よろしくお願いします。

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

Re: 〇〇秒ある動作をするプログラム

#2

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

ソースコードを提示する際は、BBCodeが有効な(無効にしない)状態で、
BBCodeのcodeタグの開始タグと終了タグの組(開始タグが先)で囲んでいただけると、
見やすくてありがたいです。
かるた さんが書きました:どうすれば、〇秒間文字が表示され、その後消えるプログラムが作れますか。
例えば、最初は文字を表示する状態になり、○秒経ったら文字を表示しない状態になるプログラムを作るといいと思います。

コード: 全て選択

#include "DxLib.h"

int WINAPI WinMain(HINSTANCE hInstance, HINSTANCE hPrevInstance, LPSTR lpCmdLine, int nCmdShow)
{
	int StartTime; 
	ChangeWindowMode(TRUE), DxLib_Init(), SetDrawScreen(DX_SCREEN_BACK);

	bool displayText = true; // 文字を表示するか
	StartTime = GetNowCount(); // プログラムの開始時刻

	while (!ScreenFlip() && !ProcessMessage() && !ClearDrawScreen()) {

		if (displayText)
		{
			DrawFormatString(200, 200, GetColor(150, 200, 200), "hello.world");
			if (GetNowCount() - StartTime >= 6000)
			{
				// 6秒経ったら文字を表示しなくする
				displayText = false;
			}
		}
	}
	WaitKey();

	DxLib_End();        // DXライブラリ使用の終了処理

	return 0;        // ソフトの終了
}
※DxLib_Init()が二重になっていたので、2個目を削除しました
複雑な問題?マシンの性能を上げてOpenMPで殴ればいい!(死亡フラグ)

かるた

Re: 〇〇秒ある動作をするプログラム

#3

投稿記事 by かるた » 1年前

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

お礼の回答とですいませんが、

コード: 全て選択

を試させてもらいます。

コード: 全て選択

#include<stdio.h>

int main(void)
{

	printf("hello world");
    return 0;
}

返信

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