CellViz  1.0
board.h
Go to the documentation of this file.
1 //
2 // Created by velocitatem on 10/2/24.
3 //
4 #ifndef BOARD_H
5 #define BOARD_H
6 
7 #include <vector>
8 #include "cells.h"
9 
10 class DiscreteAutomaton;
12 class CellularAutomaton;
13 
14 using namespace std;
15 
16 enum BoardType {
19 };
20 
21 class Board {
22 public:
23  Board();
24  Board(int width, int height, BoardType type, int population = 0);
25  // copy constructor
26  Board(const Board &board);
27  ~Board();
28 
29  void add_cell(CellularAutomaton *cell);
30  void set_grid(vector<vector<DiscreteAutomaton*>> & grid);
31  void set_continuum(vector<ContinuousAutomaton*> & continuous);
32  CellularAutomaton* get_cell(int x, int y) const;
33  vector<ContinuousAutomaton*> get_continuous();
34  vector<vector<DiscreteAutomaton*>> get_grid();
35  int get_current_population();
36  int get_width();
37  int get_height();
38  void render();
39  // copy assignment
40  Board operator=(const Board &board); // RULE OF 3
41 
42 
43 private:
44  int width;
45  int height;
49 
50  vector<vector<DiscreteAutomaton*>> grid;
51  vector<ContinuousAutomaton*> continuous;
52 };
53 
54 #endif // BOARD_H
BoardType
Definition: board.h:16
@ CONTINUOUS
Definition: board.h:18
@ GRID
Definition: board.h:17
Definition: board.h:21
vector< ContinuousAutomaton * > continuous
Definition: board.h:51
int population
Definition: board.h:47
int current_population
Definition: board.h:48
int width
Definition: board.h:44
BoardType type
Definition: board.h:46
int height
Definition: board.h:45
vector< vector< DiscreteAutomaton * > > grid
Definition: board.h:50
Definition: cells.h:18
Definition: cells.h:44
Represents a type of cellular automaton called DiscreteAutomaton.
Definition: cells.h:27