Current section
Files
Jump to
Current section
Files
src/ale/src/controllers/ale_controller.hpp
/* *****************************************************************************
* A.L.E (Arcade Learning Environment)
* Copyright (c) 2009-2013 by Yavar Naddaf, Joel Veness, Marc G. Bellemare and
* the Reinforcement Learning and Artificial Intelligence Laboratory
* Released under the GNU General Public License; see License.txt for details.
*
* Based on: Stella -- "An Atari 2600 VCS Emulator"
* Copyright (c) 1995-2007 by Bradford W. Mott and the Stella team
*
* *****************************************************************************
* ale_controller.hpp
*
* Superclass defining a variety of controllers -- main loops interfacing with
* an agent in a particular way. This superclass handles work common to all
* controllers, e.g. loading ROM settings and constructing the environment
* wrapper.
**************************************************************************** */
#ifndef __ALE_CONTROLLER_HPP__
#define __ALE_CONTROLLER_HPP__
#include <memory>
#include "../emucore/OSystem.hxx"
#include "../emucore/m6502/src/System.hxx"
#include "../environment/stella_environment.hpp"
namespace ale {
class ALEController {
public:
ALEController(OSystem* osystem);
virtual ~ALEController() {}
/** Main loop. Returns once ALE terminates. */
virtual void run() = 0;
protected:
friend class ALEInterface;
/** Applies the given action to the environment (e.g. by emulating or resetting) */
reward_t applyActions(Action a, Action b);
/** Support for SDL display... available to all controllers. Simply call it from run(). */
void display();
protected:
OSystem* m_osystem;
std::unique_ptr<RomSettings> m_settings;
StellaEnvironment m_environment;
};
} // namespace ale
#endif // __ALE_CONTROLLER_HPP__