f45f73cb27
Move UML PDF to doc/ and update .gitignore. Normalize includes, whitespace and function signatures across headers/sources and add concise class/function documentation. Fix RandomBot so the mine limit is computed once and simplify DigDeepBot/SortBot mining logic. Tidy World/Game initialization, error handling, and minor const/var clarifications for readability and correctness
32 lines
843 B
C++
32 lines
843 B
C++
#pragma once
|
|
|
|
#include <string>
|
|
#include <system_error>
|
|
#include <type_traits>
|
|
|
|
class World;
|
|
|
|
/* Virtual interface implemented by all robot types. */
|
|
class Robot {
|
|
public:
|
|
virtual ~Robot () = default;
|
|
Robot ( const Robot & ) = default;
|
|
Robot &operator= ( const Robot & ) = default;
|
|
Robot ( Robot && ) = default;
|
|
Robot &operator= ( Robot && ) = default;
|
|
|
|
virtual void move ( int direction, const World &world ) = 0;
|
|
virtual int mine ( World &world ) = 0;
|
|
virtual int decideNextMove ( const World &world ) const = 0;
|
|
|
|
virtual void setPosition ( int x, int y ) = 0;
|
|
virtual int getScore () const = 0;
|
|
virtual void addScore ( int points ) = 0;
|
|
virtual int getX () const = 0;
|
|
virtual int getY () const = 0;
|
|
virtual std::string getName () const = 0;
|
|
|
|
protected:
|
|
Robot () = default;
|
|
};
|