added robot interface and robot base class

This commit is contained in:
2026-04-14 23:44:24 +02:00
parent d53986f907
commit b43f266973
6 changed files with 108 additions and 0 deletions
+28
View File
@@ -0,0 +1,28 @@
#pragma once
#include "Robot.h"
#include <string>
class BaseRobot : public Robot {
/* A robot base class that implements functions common to all robots. */
public:
BaseRobot ( std::string name, int startX, int startY );
void move ( int direction, const World &world ) override;
int decideNextMove ( const World &world ) const override;
void setPosition ( int x, int y ) override {
x_ = x;
y_ = y;
}
int getScore () const override { return score_; }
void addScore ( int points ) override { score_ += points; }
int getX () const override { return x_; }
int getY () const override { return y_; }
std::string getName () const override { return name_; }
protected:
int x_, y_, score_;
std::string name_;
};
+31
View File
@@ -0,0 +1,31 @@
#pragma once
#include <string>
#include <system_error>
#include <type_traits>
class World;
class Robot {
/* A virtual interface for a 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;
};
+9
View File
@@ -0,0 +1,9 @@
#pragma once
#include "../include/BaseRobot.h"
class SortBot : public BaseRobot {
public:
SortBot ( int startX, int startY );
int mine ( World &world ) override;
};
+3
View File
@@ -3,6 +3,9 @@
#include <vector>
class World {
/* A 3D grid world where robots can mine blocks.
Blocks have a value, some have special effects. */
public:
explicit World ( int x = 5, int y = 5, int z = 10 );