text: #pragma once
  
  #include "Experiment.h"
  
  namespace ex {
  	class ExMountainCar : public Experiment {
  	private:
  		float _velocity;
  		float _position;
  		
  		float _prevVelocity;
  
  		float _prevFitness;
  
  		float _prevHeight;
  
  		sf::VertexArray _hills;
  		sf::Texture _car;
  
  		float _reward;
  
  	public:
  		const float _pixelsPerMeter = 128.0f;
  		const float _rewardDecay = 0.01f;
  
  		ExMountainCar()
  			: _velocity(0.0f), _position(-0.5f), _prevFitness(0.0f), _prevVelocity(0.0f), _prevHeight(0.0f)
  		{}
  
  		float runStep(Agent &agent, float dt) override;
  
  		void initializeVisualization() override;
  		void visualize(sf::RenderTarget &rt) const override;
  
  		int getNumInputs() const override {
  			return 2;
  		}
  
  		int getNumOutputs() const override {
  			return 1;
  		}
  	};
  }