質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

Q&A

解決済

1回答

3844閲覧

2Dゲームで制限時間を作成したい

maguro2020

総合スコア34

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

DXライブラリ

DXライブラリとは、DirectXを使ったWindowsソフトの開発に必ず付いて回るDirectXやWindows関連のプログラムを使い易くまとめた形で利用できるようにしたC++言語用のゲームライブラリです。

0グッド

0クリップ

投稿2022/03/21 05:54

概要
現在、DXライブラリを使用して2Dゲームの作成を行っております。
ゲーム内に制限時間を表示する機能を追加したいと思い、関数を作成しているのですが、なかなかうまく表示できません。
以下の関数のコードで不適切な点がございましたら、ご指摘いただけると幸いです。
以下はコードとなります。

コード

C/C++

1// 残り時間を計算する関数 2// 以下の関数は修正中のものです 3void DrawGameTime() { 4 int i, a = 0, White, time; 5 White = GetColor(255, 255, 255); // 白色の値を取得 6 7 // 時間を取得と全体の時間の設定 8 time = GetNowCount(); 9 while (GetNowCount() - time < 60000) { 10 DrawFormatString(WINDOW_WIDTH / 2, 10, White, "残り時間:%d", 11 (60000 - (GetNowCount() - time)) / 1000); 12 } 13}

発生している課題
残り時間を表示(60秒)することはできている(以下にコードを記載します)のですが、その表示を1秒ずつ減らす処理がうまくできません。
もし関数の処理について、何かご存じの方がいらっしゃいましたらアドバイスをいただけると幸いです。
以下は60秒の表示だけをする処理です。

C/C++

1// 残り時間を計算する関数 2void DrawGameTime() { 3 int i, a = 0, White, time; 4 White = GetColor(255, 255, 255); // 白色の値を取得 5 6 // 時間を取得と全体の時間の設定 7 time = GetNowCount(); 8 DrawFormatString(WINDOW_WIDTH / 2, 10, White, "残り時間:%d", 9 (60000 - (GetNowCount() - time)) / 1000); 10}

補足
上記のコードではDXライブラリを使用することを前提として作成しております。
C言語もしくはC++の記述方法で特にDXライブラリの機能を使わなくてもできる、ということであれば、関数名などを教えていただけると幸いです。自分でも検索をしているのですが、timeやclockがうまく使えず、なんとかGetNowCount()で作成できないかを試しております。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

DxLibを使っているなら、一連の処理が大きなloopで囲まれていて、その中で描画を繰り返しているでしょう。
ならばコレ↓ではいかがです?

C++

1... 2int time = GetNowCount(); 3大きなloop { 4 ... 5 DrawFormatString(WINDOW_WIDTH / 2, 10, White, "残り時間:%d", 6 (60000 - (GetNowCount() - time)) / 1000); 7}

投稿2022/03/21 06:47

episteme

総合スコア16614

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maguro2020

2022/03/21 07:09

ご回答いただきありがとうございます。 epistemeさんのアドバイスのおかげで、なぜ自分のコードがよくないのかがわかりました。 本当にありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問