我正在从一个游戏(SharedMemoryMapped)阅读数据,一切正常,我得到了一圈的时间(毫秒),得到秒=毫秒/1000 f,
之后,我跟踪汽车的位置,直到1.000f,这意味着结束,我需要将一些数据保存到文件中,但lapTimeInSeconds在循环结束时不断变化,直到我得到所需的值(分钟:秒:毫秒)
while (true) {
//........code........
// laptime
float lapTimeInSeconds = (float) ((float)graphic.iCurrentTime / 1000.0f);
printf("\rLAP: %.3f", lapTimeInSeconds);
// save
memcpy(&save_struct.lapTime_seconds, &lapTimeInSeconds, 4);
memcpy(&save_struct.normalizedCarPosition, &graphic.normalizedCarPosition, 4);
memcpy(&save_struct.gaz, &physics.gaz, 4);
memcpy(&save_struct.brake, &physics.brake, 4);
memcpy(&save_struct.speedKmh, &physics.speedKmh, 4);
memcpy(&save_struct.steerAngle, &physics.steerAngle, 4);
memcpy(&save_struct.gear, &physics.gear, 4);
memcpy(&save_struct.carCoordiantes, &graphic.carCoordiantes, sizeof(save_struct.carCoordiantes));
// write bytes into the file
fwrite(&save_struct, sizeof(SaveStruct), 1, saveFile);
if (graphic.normalizedCarPosition == 1) {
fclose(saveFile);
printf("\nFINAL LAP TIME: %.3f\n", lapTimeInSeconds); // HERE IS THE PROBLEM IT RESET TO 0.000 seconds, the VALUE GOT CHANGED AND SOMETIMES 0.654s
uint8_t seconds = (int) lapTimeInSeconds % 60;
uint8_t minutes = lapTimeInSeconds / 60;
uint16_t millisecond = (lapTimeInSeconds - ((minutes * 60) + seconds)) * 1000;
std::string final_file_name = "laps/lap-" + std::to_string(lapCount) + "-" + std::to_string(minutes) + "-" + std::to_string(seconds) + "-" + std::to_string(millisecond) + ".lap";
rename("laps/lap-not-completed.lap", final_file_name.c_str());
lapCount++;
saveFile = fopen("laps/lap-not-completed.lap", "wb");
}
}
文件名变为0分钟、0秒、659毫秒
- 如何使lapTimeInSeconds不改变,直到我保存文件?!
谢谢你。
1条答案
按热度按时间qpgpyjmq1#
问题是:赛车位置(1.000)意味着圈末,但时间在(0.996)被重置,所以我不得不改变条件。
@tadman谢谢你我改变了:
收件人: