grid.h 1.24 KB
Newer Older
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
/**
\file grid.h
\date 24/04/2021
\author Merwane Bouri
\version 1
\brief Grid

Cette classe représente un réseau de cellules.

        **/

#ifndef GRID_H
#define GRID_H

#include <iostream>
#include <vector>

#include "coord.hpp"

using namespace std;

22
23
// TODO : documenter

24
25
class Structure;

26
27
28
29
30
31
32
33
34
35
36
class Grid{
    int nb_rows;
    int nb_col;
    std::vector<unsigned int> matrix;
public:
    Grid(size_t l,size_t c);
    Grid(const Grid& g);

    size_t get_rows() const {return nb_rows;}
    size_t get_col() const{return nb_col;}

37
    void set_cell(Coord pos, unsigned int state)
38
    {
39
40
        int i = pos.x;
        int j = pos.y;
41
42
43
44
        matrix[((i%nb_rows + nb_rows)%nb_rows)*nb_col
               +((j%nb_col+nb_col)%nb_col)]
            =state;
    }
45
46
47
    unsigned int get_state(Coord pos)const{
        int i = pos.x;
        int j = pos.y;
48
49
50
51
        return matrix[((i%nb_rows + nb_rows)%nb_rows)*nb_col
                      +((j%nb_col+nb_col)%nb_col)];
    }
    Grid& operator=(const Grid& g);
52
53
54

    //! \brief Retourne une structure représentant le contenu non-nul de la Grid (les cellules d'état != 0), pour un enregistrement dans un fichier par exemple.
    Structure to_structure() const;
55
56
57
58
};
ostream& operator<<(ostream& f, const Grid& g);

#endif // GRID_H