void UpdateState() { StateIndex dstate = discretizeState(carState); ActionIndex a = piStar[dstate]; double continuousAction[2]; undiscretizeAction(a, continuousAction); simulate(carState, continuousAction, carState); carStateX += carState[STATE_VX]*DT; // display the car at position = carStateX, carState[STATE_Y] // with orientation = carState[STATE_THETA] UpdateCar(carStateX, carState[STATE_Y], carState[STATE_THETA]); }
void StartProgram(RenderWindow & window, Car & car, Physics & physics, const RectangleShape & ground) { Clock frameClock; int timeSinceLastFrame; while (window.isOpen()) { timeSinceLastFrame = frameClock.getElapsedTime().asMilliseconds(); ProcessEvents(window); if (timeSinceLastFrame >= TIME_PER_FRAME) { frameClock.restart(); ComputePhysics(physics); UpdateCar(car, physics); window.clear(Color::White); Draw(window, car, ground); window.display(); } } }