Files
deepMiner/include/World.h
T

52 lines
1.4 KiB
C++

#pragma once
#include <vector>
#include <memory>
class Robot;
/* A 3-D grid world where robots mine positive-value blocks and trigger effects. */
class World {
public:
explicit World ( int x = 5, int y = 5, int z = 10 );
int getSizeX () const { return _sizeX; }
int getSizeY () const { return _sizeY; }
int getSizeZ () const { return _sizeZ; }
int getValue ( int x, int y, int z ) const;
void setValue ( int x, int y, int z, int value );
void setColumn ( int x, int y, const std::vector<int>& values );
std::vector<int> getColumn ( int x, int y ) const;
void clear ();
int getSurfaceLevel ( int x, int y ) const;
int getSurfaceValue ( int x, int y ) const;
bool hasPositiveValues () const;
int remainingPositiveSum () const;
int mine ( int x, int y );
int checkEffects ( int x, int y );
int mineAllPositive ( int x, int y );
double posiveAverage ( int x, int y ) const;
int topPositiveSum ( int x, int y, int blocks ) const;
void sortPositiveValuesInColumnAscending ( int x, int y );
void rearrange ();
void display () const;
void display ( const std::vector<std::unique_ptr<Robot>>& robots) const;
private:
int sizeX_ = 5;
int sizeY_ = 5;
int sizeZ_ = 10;
std::vector<std::vector<std::vector<int>>> grid_;
void init();
void validateXY ( int x, int y ) const;
void validateZ ( int z ) const;
};