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

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

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

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

C++

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

Q&A

解決済

2回答

5001閲覧

C++において一定の時間おきに処理を行いたい

muton

総合スコア31

Visual Studio

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

C++

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

0グッド

0クリップ

投稿2019/01/11 06:08

該当のソースコード

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 SetTimer(1, 100, NULL); 105 OnTimer(nIDEvent) 106 { 107 if (nIDEvent == 1) { 108 FILE * file; 109 file = fopen("save.csv", "a"); 110 fprintf(file, "%f,%f\n", car->_pos_X, car->_pos_Y); 111 fclose(file); 112 } 113 114 OnTimer(nIDEvent); 115 } 116 StopTimer()//必要なくなったらタイマーを止める!!! 117 { 118 KillTimer(1); // 1番目のタイマーを止める 119 } 120} 121void

課題

オープンソースコードのカーシュミレーションソフトにおいて車の位置座標の情報をある一定の時間おきに取得したいと考えています. そこで SetTimer(1, 100, NULL); OnTimer(nIDEvent) { if (nIDEvent == 1) { FILE * file; file = fopen("save.csv", "a"); fprintf(file, "%f,%f\n", car->_pos_X, car->_pos_Y); fclose(file); } OnTimer(nIDEvent); } StopTimer()//必要なくなったらタイマーを止める!!! { KillTimer(1); // 1番目のタイマーを止める } } の様にコードを書いたのですが,エラーが多数発生してしまいます.どうすれば良いでしょうか. 宜しくお願い致します.

発生しているエラー

重大度レベル コード 説明 プロジェクト ファイル 行 抑制状態 エラー (アクティブ) E0167 型 "int" の引数は型 "HWND" のパラメーターと互換性がありません ssggraphlib C:\Users\owner\Desktop\torcs-1.3.7\src\modules\graphic\ssggraph\grboard.cpp 381 エラー (アクティブ) E0165 関数呼び出しの引数が少なすぎます ssggraphlib C:\Users\owner\Desktop\torcs-1.3.7\src\modules\graphic\ssggraph\grboard.cpp 381 エラー (アクティブ) E0020 識別子 "OnTimer" が定義されていません ssggraphlib C:\Users\owner\Desktop\torcs-1.3.7\src\modules\graphic\ssggraph\grboard.cpp 382 エラー (アクティブ) E0020 識別子 "nIDEvent" が定義されていません ssggraphlib C:\Users\owner\Desktop\torcs-1.3.7\src\modules\graphic\ssggraph\grboard.cpp 382 エラー (アクティブ) E0065 ';' が必要です ssggraphlib C:\Users\owner\Desktop\torcs-1.3.7\src\modules\graphic\ssggraph\grboard.cpp 383 エラー C2660 'SetTimer': 関数に 3 個の引数を指定できません。 ssggraphlib c:\users\owner\desktop\torcs-1.3.7\src\modules\graphic\ssggraph\grboard.cpp 381 エラー C2065 'nIDEvent': 定義されていない識別子です。 ssggraphlib c:\users\owner\desktop\torcs-1.3.7\src\modules\graphic\ssggraph\grboard.cpp 382 エラー C3861 'OnTimer': 識別子が見つかりませんでした ssggraphlib c:\users\owner\desktop\torcs-1.3.7\src\modules\graphic\ssggraph\grboard.cpp 382 エラー C2059 構文エラー: 'if' ssggraphlib c:\users\owner\desktop\torcs-1.3.7\src\modules\graphic\ssggraph\grboard.cpp 384 エラー C2143 構文エラー: ';' が '{' の前にありません。 ssggraphlib c:\users\owner\desktop\torcs-1.3.7\src\modules\graphic\ssggraph\grboard.cpp 384 エラー C2065 'nIDEvent': 定義されていない識別子です。 ssggraphlib c:\users\owner\desktop\torcs-1.3.7\src\modules\graphic\ssggraph\grboard.cpp 391 エラー C3861 'OnTimer': 識別子が見つかりませんでした ssggraphlib c:\users\owner\desktop\torcs-1.3.7\src\modules\graphic\ssggraph\grboard.cpp 391 エラー C4430 型指定子がありません - int と仮定しました。メモ: C++ は int を既定値としてサポートしていません ssggraphlib c:\users\owner\desktop\torcs-1.3.7\src\modules\graphic\ssggraph\grboard.cpp 394 エラー C2660 'KillTimer': 関数に 1 個の引数を指定できません。 ssggraphlib c:\users\owner\desktop\torcs-1.3.7\src\modules\graphic\ssggraph\grboard.cpp 395 エラー C2059 構文エラー: '}' ssggraphlib c:\users\owner\desktop\torcs-1.3.7\src\modules\graphic\ssggraph\grboard.cpp 397 エラー C2143 構文エラー: ';' が '}' の前にありません。 ssggraphlib c:\users\owner\desktop\torcs-1.3.7\src\modules\graphic\ssggraph\grboard.cpp 397 エラー C2143 構文エラー: ';' が '{' の前にありません。 ssggraphlib c:\users\owner\desktop\torcs-1.3.7\src\modules\graphic\ssggraph\grboard.cpp 401 エラー C2447 '{': 対応する関数ヘッダーがありません (旧形式の仮引数リスト?) ssggraphlib c:\users\owner\desktop\torcs-1.3.7\src\modules\graphic\ssggraph\grboard.cpp 401

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

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

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

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

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

poniponiponiki

2019/01/11 06:13

発生しているエラーの修正方法がどれもまったくわからない状態、ということでよろしいですか?
guest

回答2

0

ベストアンサー

あなたが求めているものとはちがうかもだけど、スレッド起こしてやってみた:

C++

1/* 2 * 1秒おきに5回にゃぁと鳴く 3 */ 4#include <iostream> 5#include <thread> 6#include <chrono> 7 8int main() { 9 auto periodic_nyaa = 10 [](int sec, int rep) { 11 while ( rep-- ) { 12 std::this_thread::sleep_for(std::chrono::seconds(sec)); 13 std::cout << "nyaa..." << std::endl; 14 } 15 }; 16 17 std::thread thr(periodic_nyaa, 1, 5); 18 thr.join(); 19}

投稿2019/01/11 08:18

episteme

総合スコア16614

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

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

0

  • エラーの1,2行目

SetTimer(null, 1, 100, NULL);のように4引数で最初はhWND。

  • エラーの3,4行目

下の行番号で言ったとき2から12行はおそらく関数の宣言だったんだろうと思います。それを呼び出しのようにしてしまったのでは;は足りないし、nIDEventは定義されてないし、どうしようもないです。
これの影響で全体的に構文がおかしくなっており、構文エラーが多発してます。

  • エラーのどこか

下の13行目は;がない。

visual studioでここまで構文エラー起こせますか?

cpp

11 SetTimer(1, 100, NULL); 22 OnTimer(nIDEvent) 33 { 44 if (nIDEvent == 1) { 55 FILE * file; 66 file = fopen("save.csv", "a"); 77 fprintf(file, "%f,%f\n", car->_pos_X, car->_pos_Y); 88 fclose(file); 99 } 1010 1111 OnTimer(nIDEvent); 1212 } 1313 StopTimer()//必要なくなったらタイマーを止める!!! 1414 { 1515 KillTimer(1); // 1番目のタイマーを止める 1616 }

どうしたら、についての答えは、まずタイマ処理をゼロから書いてみることだと思います。位置がどうしたはその後の話。
もしくは、タイマイベント処理を書ける奴を連れてくるか。

投稿2019/01/11 06:34

papinianus

総合スコア12705

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

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

muton

2019/04/23 05:55

回答ありがとうございます。 タイマー処理とは具体的にどのように0から書けば良いでしょうか。 すみません手も足もでないので、教えて頂けると幸いです。
episteme

2019/04/23 11:30

三カ月ほっといて何をいまさら...
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問