Minesweeper2  V1.1.1 Game in C++ by Górka Mateusz
Field.hpp
Go to the documentation of this file.
1 #pragma once
2 
3 #include "FieldCode.hpp"
4 #include <cstdint>
5 #include <iostream>
6 using std::uint8_t;
7 
26 class Field {
27 private:
28  uint8_t code;
29 
30 public:
34  Field(): code(0x0){}
35 
40  Field( uint8_t v ){ this->val( v ); }
41 
47  { this->val( static_cast<uint8_t>( code ) ); }
48 
53  Field( const Field& field ): code(field.code){}
54 
58  ~Field() = default;
59 
60 public:
65  inline uint8_t& operator * ()
66  { return code; }
67 
72  inline uint8_t val() const
73  { return (uint8_t) code & 0x0F; }
74 
80  inline void val( const uint8_t value )
81  { code = value; code &= 0x0F; }
82 
83 public:
87  inline void flag()
88  { code &= 0x0F; code |= 0x10; }
89 
93  inline void unflag()
94  { code &= 0x0F; /*code |= 0x00; //hack */ }
95 
99  inline void uncover()
100  { code &= 0x0F; code |= 0x20; }
101 
102 public:
109  inline bool flagged() const
110  { return ( code & 0xF0 ) == 0x10; }
111 
112 
118  inline bool uncovered() const
119  { return ( code & 0xF0 ) == 0x20; }
120 
126  inline bool covered() const
127  { return ( code & 0xF0 ) == 0x00; }
128 
141  inline bool hidden() const
142  { return ( code & 0xF0 ) != 0x20; }
143 
149  inline bool mine() const
150  { return ( code & 0x0F ) == 0x09; }
151 
157  inline bool empty() const
158  { return ( code & 0x0F ) == 0x00; }
159 };
160 
161 
168 std::ostream& operator << ( std::ostream& strm, const Field& field );
Field::flag
void flag()
Set flag on the field.
Definition: Field.hpp:87
Field::hidden
bool hidden() const
todo Zamiania uncover, covered, hidden
Definition: Field.hpp:141
Field::covered
bool covered() const
Is field covered? (is covered)
Definition: Field.hpp:126
FieldCode
FieldCode
Codes of Fields.
Definition: FieldCode.hpp:8
Field::Field
Field()
Construct a new Field object.
Definition: Field.hpp:34
Field::Field
Field(const Field &field)
Copy constructor.
Definition: Field.hpp:53
Field::empty
bool empty() const
Is the field empty?
Definition: Field.hpp:157
Field::flagged
bool flagged() const
Is field flagged? ** flagged field is covered! **.
Definition: Field.hpp:109
Field::Field
Field(FieldCode code)
Construct a new Field object.
Definition: Field.hpp:46
Field::Field
Field(uint8_t v)
Construct a new Field object.
Definition: Field.hpp:40
operator<<
std::ostream & operator<<(std::ostream &strm, const Field &field)
Operator to display a field information.
Definition: Field.cpp:4
Field::uncovered
bool uncovered() const
Is field uncovered? (no covered, no flag)
Definition: Field.hpp:118
Field::unflag
void unflag()
Delete flag from the field.
Definition: Field.hpp:93
Field::val
uint8_t val() const
Return value of field.
Definition: Field.hpp:72
Field::~Field
~Field()=default
Destroy the Field object (default destructor)
Field::code
uint8_t code
Value of fields code.
Definition: Field.hpp:28
Field::operator*
uint8_t & operator*()
Operator of one side *.
Definition: Field.hpp:65
Field
Field of the board.
Definition: Field.hpp:26
Field::val
void val(const uint8_t value)
Set value of field and cover.
Definition: Field.hpp:80
Field::uncover
void uncover()
Uncover the field.
Definition: Field.hpp:99
Field::mine
bool mine() const
Is the mine?!
Definition: Field.hpp:149
FieldCode.hpp