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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

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

Q&A

解決済

1回答

1248閲覧

C++においてx座標を一定の時間おきに出力したい

muton

総合スコア31

Visual Studio

Microsoft Visual StudioはMicrosoftによる統合開発環境(IDE)です。多種多様なプログラミング言語に対応しています。

C++

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

0グッド

0クリップ

投稿2019/01/09 09:46

編集2019/01/11 04:56

該当のソースコード

C++

1cGrBoard::grDispCarBoard1(tCarElt *car, tSituation *s) 2{ 3 int x, x2, y; 4 const int BUFSIZE=256; 5 char buf[BUFSIZE]; 6 float *clr; 7 int dy, dy2, dx; 8 9 x = 10; 10 x2 = 110; 11 dy = GfuiFontHeight(GFUI_FONT_MEDIUM_C); 12 dy2 = GfuiFontHeight(GFUI_FONT_SMALL_C); 13 y = Winy + Winh - dy - 5; 14 snprintf(buf, BUFSIZE, "%d/%d - %s", car->_pos, s->_ncars, car->_name); 15 dx = GfuiFontWidth(GFUI_FONT_MEDIUM_C, buf); 16 dx = MAX(dx, (x2-x)); 17 18 glEnable(GL_BLEND); 19 glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) ; 20 glBegin(GL_QUADS); 21 glColor4f(0.1, 0.1, 0.1, 0.8); 22 glVertex2f(x-5, y + dy); 23 glVertex2f(x+dx+5, y + dy); 24 glVertex2f(x+dx+5, y-5 - dy2 * 12 /* lines */); 25 glVertex2f(x-5, y-5 - dy2 * 12 /* lines */); 26 glEnd(); 27 glDisable(GL_BLEND); 28 29 GfuiPrintString(buf, grCarInfo[car->index].iconColor, GFUI_FONT_MEDIUM_C, x, y, GFUI_ALIGN_HL_VB); 30 y -= dy; 31 32 dy = GfuiFontHeight(GFUI_FONT_SMALL_C); 33 34 GfuiPrintString("Fuel:", grWhite, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB); 35 if (car->_fuel < 5.0) { 36 clr = grRed; 37 } else { 38 clr = grWhite; 39 } 40 snprintf(buf, BUFSIZE, "%.1f l", car->_fuel); 41 GfuiPrintString(buf, clr, GFUI_FONT_SMALL_C, x2, y, GFUI_ALIGN_HR_VB); 42 y -= dy; 43 44 if (car->_state & RM_CAR_STATE_BROKEN) { 45 clr = grRed; 46 } else { 47 clr = grWhite; 48 } 49 50 GfuiPrintString("Damage:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB); 51 snprintf(buf, BUFSIZE, "%d", car->_dammage); 52 GfuiPrintString(buf, clr, GFUI_FONT_SMALL_C, x2, y, GFUI_ALIGN_HR_VB); 53 y -= dy; 54 clr = grWhite; 55 56 GfuiPrintString("Laps:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB); 57 snprintf(buf, BUFSIZE, "%d / %d", car->_laps, s->_totLaps); 58 GfuiPrintString(buf, clr, GFUI_FONT_SMALL_C, x2, y, GFUI_ALIGN_HR_VB); 59 y -= dy; 60 61 GfuiPrintString("Total:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB); 62 grWriteTime(clr, GFUI_FONT_SMALL_C, x2, y, s->currentTime, 0); 63 y -= dy; 64 65 GfuiPrintString("Curr:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB); 66 if (!car->_commitBestLapTime) { 67 clr = grRed; 68 } 69 grWriteTime(clr, GFUI_FONT_SMALL_C, x2, y, car->_curLapTime, 0); 70 y -= dy; 71 clr = grWhite; 72 73 GfuiPrintString("Last:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB); 74 grWriteTime(clr, GFUI_FONT_SMALL_C, x2, y, car->_lastLapTime, 0); 75 y -= dy; 76 77 GfuiPrintString("Best:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB); 78 grWriteTime(clr, GFUI_FONT_SMALL_C, x2, y, car->_bestLapTime, 0); 79 y -= dy; 80 81 GfuiPrintString("Penalty:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB); 82 grWriteTime(clr, GFUI_FONT_SMALL_C, x2, y, car->_penaltyTime, 0); 83 y -= dy; 84 85 GfuiPrintString("Top Speed:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB); 86 snprintf(buf, BUFSIZE, "%d", (int)(car->_topSpeed * 3.6)); 87 GfuiPrintString(buf, clr, GFUI_FONT_SMALL_C, x2, y, GFUI_ALIGN_HR_VB); 88 y -= dy; 89 90 GfuiPrintString("_pos_X:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB); 91 snprintf(buf, BUFSIZE, "%d", (int)(car->_pos_X)); 92 GfuiPrintString(buf, clr, GFUI_FONT_SMALL_C, x2, y, GFUI_ALIGN_HR_VB); 93 y -= dy; 94 95 GfuiPrintString("_pos_Y:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB); 96 snprintf(buf, BUFSIZE, "%d", (int)(car->_pos_Y)); 97 GfuiPrintString(buf, clr, GFUI_FONT_SMALL_C, x2, y, GFUI_ALIGN_HR_VB); 98 y -= dy; 99 100 GfuiPrintString("_pos_Z:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB); 101 snprintf(buf, BUFSIZE, "%d", (int)(car->_pos_Z)); 102 GfuiPrintString(buf, clr, GFUI_FONT_SMALL_C, x2, y, GFUI_ALIGN_HR_VB); 103 104 FILE *file; 105 file = fopen("save.csv", "a"); 106 fprintf(file, "%f,%f\n", car->_pos_X, car->_pos_Y); 107 fclose(file); 108} 109void

課題

オープンソースコードのカーシュミレーションソフトにおいて車の位置座標の情報をある一定の時間おきに取得したいと考えています. x座標を一定の時間おきに出力するにはどうすれば良いでしょうか. 宜しくお願い致します.

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

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

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

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

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

guest

回答1

0

ベストアンサー

file = fopen("test.txt", "w");

で、そのファイルは削除され、新規作成されます
なので、このオープンはプログラムの最初一回だけ実行し、fcloseもプログラム終了時に一回だけ実行するようにしましょう

投稿2019/01/09 09:52

y_waiwai

総合スコア87719

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

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

muton

2019/01/09 10:28

回答ありがとうございます. file = fopen("test.txt", "a"); とモードを追加書き込みにすることで表示される数字が一つではなくなりました. 問題があといくつかあり ・数字がカンマでくぎられていない ・ある一定の時間おきに出力できるようにしたい 恐縮ですが,ご教授お願い致します.
y_waiwai

2019/01/09 10:31

数字の出力のあとにカンマつければいい "%d," 時間読んできて出す時間になったら出すようにすればいい
muton

2019/01/09 11:26

回答ありがとうございます. "%d,"をしてもカンマで区切ることはできませんでしたが, fprintf(file, "%d"\n, car->_pos_X); とすることで改行することで見やすくなりました. 時間読んできて出す時間になったら出すとは具体的にどのようにすれば良いでしょうか. 宜しくお願い致します.
y_waiwai

2019/01/09 11:33

30分毎に出すなら21:00になるのを待って出す。出したら時間を2130にしてそれまで待つ、と、この繰り返しをすればよろしい
muton

2019/01/11 04:58

回答ありがとうございます. 現在のコードでは0.01秒程度の間隔で座標が出力されています. 1秒程度の間隔で座標を出力させたいのです. 時間を2130にしてそれまで待つとはどのようにすれば良いのでしょうか 宜しくお願い致します.
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問