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

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

ただいまの
回答率

90.43%

  • C++

    3934questions

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

  • Visual Studio

    2088questions

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

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

解決済

回答 2

投稿

  • 評価
  • クリップ 0
  • VIEW 137

muton

score 14

該当のソースコード

cGrBoard::grDispCarBoard1(tCarElt *car, tSituation *s)
{
    int  x, x2, y;
    const int BUFSIZE=256;
    char buf[BUFSIZE];
    float *clr;
    int dy, dy2, dx;

    x = 10;
    x2 = 110;
    dy = GfuiFontHeight(GFUI_FONT_MEDIUM_C);
    dy2 = GfuiFontHeight(GFUI_FONT_SMALL_C);
    y = Winy + Winh - dy - 5;
    snprintf(buf, BUFSIZE, "%d/%d - %s", car->_pos, s->_ncars, car->_name);
    dx = GfuiFontWidth(GFUI_FONT_MEDIUM_C, buf);
    dx = MAX(dx, (x2-x));

    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA) ;
    glBegin(GL_QUADS);
    glColor4f(0.1, 0.1, 0.1, 0.8);
    glVertex2f(x-5, y + dy);
    glVertex2f(x+dx+5, y + dy);
    glVertex2f(x+dx+5, y-5 - dy2 * 12 /* lines */);
    glVertex2f(x-5, y-5 - dy2 * 12 /* lines */);
    glEnd();
    glDisable(GL_BLEND);

    GfuiPrintString(buf, grCarInfo[car->index].iconColor, GFUI_FONT_MEDIUM_C, x, y, GFUI_ALIGN_HL_VB);
    y -= dy;

    dy = GfuiFontHeight(GFUI_FONT_SMALL_C);

    GfuiPrintString("Fuel:", grWhite, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB);
    if (car->_fuel < 5.0) {
        clr = grRed;
    } else {
        clr = grWhite;
    }
    snprintf(buf, BUFSIZE, "%.1f l", car->_fuel);
    GfuiPrintString(buf, clr, GFUI_FONT_SMALL_C, x2, y, GFUI_ALIGN_HR_VB);
    y -= dy;

    if (car->_state & RM_CAR_STATE_BROKEN) {
        clr = grRed;
    } else {
        clr = grWhite;
    }

    GfuiPrintString("Damage:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB);
    snprintf(buf, BUFSIZE, "%d", car->_dammage);
    GfuiPrintString(buf, clr, GFUI_FONT_SMALL_C, x2, y, GFUI_ALIGN_HR_VB);
    y -= dy;
    clr = grWhite;

    GfuiPrintString("Laps:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB);
    snprintf(buf, BUFSIZE, "%d / %d", car->_laps, s->_totLaps);
    GfuiPrintString(buf, clr, GFUI_FONT_SMALL_C, x2, y, GFUI_ALIGN_HR_VB);
    y -= dy;

    GfuiPrintString("Total:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB);
    grWriteTime(clr, GFUI_FONT_SMALL_C, x2, y, s->currentTime, 0);
    y -= dy;

    GfuiPrintString("Curr:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB);
    if (!car->_commitBestLapTime) {
        clr = grRed;
    }
    grWriteTime(clr, GFUI_FONT_SMALL_C, x2, y, car->_curLapTime, 0);
    y -= dy;
    clr = grWhite;

    GfuiPrintString("Last:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB);
    grWriteTime(clr, GFUI_FONT_SMALL_C, x2, y, car->_lastLapTime, 0);
    y -= dy;

    GfuiPrintString("Best:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB);
    grWriteTime(clr, GFUI_FONT_SMALL_C, x2, y, car->_bestLapTime, 0);
    y -= dy;

    GfuiPrintString("Penalty:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB);
    grWriteTime(clr, GFUI_FONT_SMALL_C, x2, y, car->_penaltyTime, 0);
    y -= dy;

    GfuiPrintString("Top Speed:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB);
    snprintf(buf, BUFSIZE, "%d", (int)(car->_topSpeed * 3.6));
    GfuiPrintString(buf, clr, GFUI_FONT_SMALL_C, x2, y, GFUI_ALIGN_HR_VB);
    y -= dy;

    GfuiPrintString("_pos_X:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB);
    snprintf(buf, BUFSIZE, "%d", (int)(car->_pos_X));
    GfuiPrintString(buf, clr, GFUI_FONT_SMALL_C, x2, y, GFUI_ALIGN_HR_VB);
    y -= dy;

    GfuiPrintString("_pos_Y:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB);
    snprintf(buf, BUFSIZE, "%d", (int)(car->_pos_Y));
    GfuiPrintString(buf, clr, GFUI_FONT_SMALL_C, x2, y, GFUI_ALIGN_HR_VB);
    y -= dy;

    GfuiPrintString("_pos_Z:", clr, GFUI_FONT_SMALL_C, x, y, GFUI_ALIGN_HL_VB);
    snprintf(buf, BUFSIZE, "%d", (int)(car->_pos_Z));
    GfuiPrintString(buf, clr, GFUI_FONT_SMALL_C, x2, y, GFUI_ALIGN_HR_VB);

    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番目のタイマーを止める 
    }
}
void

課題

オープンソースコードのカーシュミレーションソフトにおいて車の位置座標の情報をある一定の時間おきに取得したいと考えています.
そこで
    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

    

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • poniponiponiki

    2019/01/11 15:13

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

    キャンセル

回答 2

checkベストアンサー

0

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

/*
 * 1秒おきに5回にゃぁと鳴く
 */
#include <iostream>
#include <thread>
#include <chrono>

int main() {
  auto periodic_nyaa = 
    [](int sec, int rep) {
      while ( rep-- ) {
        std::this_thread::sleep_for(std::chrono::seconds(sec));
        std::cout << "nyaa..." << std::endl;
      }
    };

  std::thread thr(periodic_nyaa, 1, 5);
  thr.join();
}

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

0

  • エラーの1,2行目
    SetTimer(null, 1, 100, NULL);のように4引数で最初はhWND。
  • エラーの3,4行目
    下の行番号で言ったとき2から12行はおそらく関数の宣言だったんだろうと思います。それを呼び出しのようにしてしまったのでは;は足りないし、nIDEventは定義されてないし、どうしようもないです。
    これの影響で全体的に構文がおかしくなっており、構文エラーが多発してます。
  • エラーのどこか
    下の13行目は;がない。

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

1    SetTimer(1, 100, NULL); 
2    OnTimer(nIDEvent)
3    {
4        if (nIDEvent == 1) { 
5            FILE * file;
6            file = fopen("save.csv", "a");
7            fprintf(file, "%f,%f\n", car->_pos_X, car->_pos_Y);
8            fclose(file);
9        }
10
11        OnTimer(nIDEvent);
12    }
13    StopTimer()//必要なくなったらタイマーを止める!!! 
14    {
15        KillTimer(1);    // 1番目のタイマーを止める 
16    }

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

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

同じタグがついた質問を見る

  • C++

    3934questions

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

  • Visual Studio

    2088questions

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