1 #ifndef TILE_HH 2 #define TILE_HH 3 4 class Tile { 5 6 bool _real; 7 int _mark_val; 8 9 short _number; 10 short _match; 11 short _row; 12 short _col; 13 short _lev; 14 15 short _coverage; 16 short _blocked; 17 18 public: 19 20 Tile(); 21 Tile(short r, short c, short l); 22 number() const23 short number() const { return _number; } match() const24 short match() const { return _match; } row() const25 short row() const { return _row; } col() const26 short col() const { return _col; } lev() const27 short lev() const { return _lev; } 28 assign(short no,short m)29 void assign(short no, short m) { _number = no; _match = m; } 30 void reset(bool is_real); 31 void reset_blockage(); 32 make_real()33 void make_real() { _real = true; } make_unreal()34 void make_unreal() { _real = false; } 35 real() const36 bool real() const { return _real; } open() const37 bool open() const { return !_blocked && !_coverage; } obscured() const38 bool obscured() const { return _coverage >= 4; } 39 set_level_blockage(bool b)40 void set_level_blockage(bool b) { _blocked = b; } block_upper()41 void block_upper() { _coverage++; } unblock_upper()42 void unblock_upper() { _coverage--; } 43 mark()44 void mark() { _mark_val = 1; } unmark()45 void unmark() { _mark_val = 0; } marked() const46 bool marked() const { return _mark_val != 0; } 47 set_mark_val(int m)48 void set_mark_val(int m) { _mark_val = m; } mark_val() const49 int mark_val() const { return _mark_val; } 50 51 }; 52 53 54 inline void reset_blockage()55Tile::reset_blockage() 56 { 57 _mark_val = 0; 58 _coverage = 0; 59 _blocked = 0; 60 } 61 62 inline void reset(bool is_real)63Tile::reset(bool is_real) 64 { 65 _real = is_real; 66 reset_blockage(); 67 } 68 69 #endif 70