• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:C言語でゲームのスタミナ計算って可能?(初心者))

C言語でゲームのスタミナ計算が可能?初心者向け

このQ&Aのポイント
  • C言語のプログラムでゲームのスタミナの計算をしてみたい方へ
  • お使いのゲーム『ラブライブのスクフェス』で、LPの残りから全回復までの時間を計算するプログラムを作りたいですが、時間を計算する方法がわかりません。
  • LPの上限値から現在値を引いた残りのLPを表示できるようになりましたが、後は時間を計算する方法が分からないです。C言語のプログラム作成に不慣れな方でもわかりやすいように説明していただけると助かります。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

> (restlp / 6) 分で回復(上限値に到達)するんじゃ ないんですか? ごめんマチガイ。 1回復するのにlp分かかるんだから、restlp回復するのには restlp*lp 分。 これを60で割った商Qと余りRで Q時間R分。

noname#262896
質問者

お礼

おかげさまでプログラム作ることが出来ました。カウントダウンは出来ませんでしたが満足しております。 アドバイスありがとうございます。

noname#262896
質問者

補足

ありがとうございます。秒表示はしておりませんが分までの表示はすることができました。 出来たのが↓↓ #include <stdio.h> #include <stdlib.h> int main(void) { int lp, lpmax, nowlp, restlp, time ; /*lp; 6分で1回復 lpmax;あなたのLPの上限値 nowlp;あなたの現在のLP restlp;上限時から現在値を引いた残りのLP*/ lp = 6; /*LP(スタミナ)が1回復するのにかかる時間 6分*/ printf("ラブライブ!スクフェスのLPと回復時間を表示するプログラムです。\n秒表示には対応していません。\n"); printf("\n"); printf("あなたの上限のLPを入力してね。\n"); /*上限のLP(スタミナ)を入力*/ printf("\n"); scanf_s("%d", &lpmax); printf("\n"); printf("あなたの現在のLPを入力してね。\n"); /*今現在のLP(スタミナ)を入力*/ printf("\n"); scanf_s("%d", &nowlp); printf("\n"); restlp = lpmax - nowlp; /*残りのLP(スタミナ)を上限のLPから今現在のLPを引いて計算*/ printf("今から全回復までのLPは%dだよ!\n", restlp); printf("\n"); time = lp*restlp; /*LP1回復するのに6分掛かるので残りのLPを掛けて残り時間(分)を計算*/ div_t d; d = div(time, 60); /*時間分から一時間(60分)を割り時間を出し、余りを分で表示する*/ printf("あなたのLPが全回復するまでおよそ%d時間%d分掛かるよ!\n", d.quot, d.rem); printf("\n"); printf("穂乃果が応援してるよ!!\n"); return 0; 正しく表示することが出来ました。 表示された時間からカウントダウン表示するにはどのようにすれば良いのでしょうか? 分かれば教えて下さい。よろしくお願いします。

その他の回答 (4)

  • Wap58
  • ベストアンサー率33% (29/87)
回答No.5

// 環境依存で使い分けて下さい // time.hは他に良い使い方があると思う #include <stdio.h> #include <unistd.h> /* UNIX,sleep() */ // #include <windows.h> /* DOS,Sleep() */ // #include <time.h> /* time.hを使うなら */ int main(void){ // int sec_1 = restlp * lp * 60; int sec_1 = 20 * 6 * 60; int tim_1; // int rim_1; time_t tm; /* time.h */ do{ fflush(stdout); /* DOSなら必要無し */ //////// time.h //////// // rim_1 = time(&tm); // while(time(&tm) < rim_1+1){} //////// time.h //////// tim_1 = sec_1 / 3600; printf(" 残り %d時間 %d分 %d秒 \r", tim_1,(sec_1-tim_1*3600)/60,sec_1%60); sec_1--; sleep(1); /* UNIX */ // Sleep(1000); /* DOS */ }while(0 < sec_1); return 0; }

回答No.4

> 表示された時間からカウントダウン表示するにはどのようにすれば良いのでしょうか? time() 関数で現在時刻を得られます。これによってアプリケーションを起動したときの時刻:T0 と 任意の時刻 T1 との差 d をとれば時間経過(秒)がわかります。restlp - d*(1秒あたりの回復量) が現在の restlp ですから回復時間に換算できます。

noname#262896
質問者

お礼

アドバイスありがとうございます。カウントダウン試してみたのですが上手く行かず秒表示はない状態で作りました。

  • Wap58
  • ベストアンサー率33% (29/87)
回答No.2

int min_1,tim_1; min_1 = restlp * lp % 60; tim_1 = restlp * lp / 60; printf("残り時間 %d 時間 %d 分です。\n",(tim_1)? tim_1 : 0,min_1);

noname#262896
質問者

お礼

回答有り難うございます!

noname#262896
質問者

補足

助かりました。プログラムを作ることができました。 お礼申し上げます。

回答No.1

(restlp / 6) 分で回復(上限値に到達)するんじゃ ないんですか?

noname#262896
質問者

お礼

はい。それは把握しております。 回答有り難うございます!

関連するQ&A