Files
deepMiner/include/World.h
fegger 42876c1a93 Add HP and SmartBot; refactor bots and World
Introduce health (hp) and damage handling to Robot/BaseRobot
interfaces. Add SmartBot implementation. Refactor bot mining and
movement to use new World APIs (mine, mineAllPositive,
sortPositiveValues). Simplify RandomBot, DigDeepBot, and SortBot
logic, rename/overhaul World rearrange/display, and fix several
indexing/logic bugs and minor cleanups.
2026-04-26 20:41:36 +02:00

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 positiveAverage ( int x, int y ) const;
int topPositiveSum ( int x, int y, int blocks ) const;
void sortPositiveValues ( 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;
};