Minesweeper2  V1.1.1 Game in C++ by Górka Mateusz
Vector2D.hpp
Go to the documentation of this file.
1 #pragma once
2 #include <iostream>
3 #include <stdlib.h>
8 template< typename T >
9 class Vector2D_t {
10 public:
11  T x;
12  T y;
13 
14 public:
20  Vector2D_t( const T& xx, const T& yy ): x(xx), y(yy){}
21 
25  Vector2D_t(): x(0), y(0){}
26 
31  Vector2D_t( const Vector2D_t& vec ): x(vec.x), y(vec.y){}
32 
36  ~Vector2D_t() = default;
37 
39 public:
45  inline Vector2D_t& operator += ( const Vector2D_t& vec )
46  { this->x += vec.x; this->y += vec.y; return *this; }
47 
53  inline Vector2D_t& operator -= ( const Vector2D_t& vec )
54  { this->x -= vec.x; this->y -= vec.y; return *this; }
55 
57 public:
63  inline Vector2D_t operator + ( const Vector2D_t& vec ) const {
64  Vector2D_t tmp = vec;
65  tmp += *this;
66  return tmp;
67  }
68 
74  inline Vector2D_t operator - ( const Vector2D_t& vec ) const {
75  Vector2D_t tmp = *this;
76  tmp -= vec;
77  return tmp;
78  }
79 
86  inline bool operator == ( const Vector2D_t& vec ) const
87  { return (vec.x == this->x && vec.y == this->y ); }
88 
89 public:
94  unsigned int area() const
95  { return x*y; }
96 
103  inline bool adj( const Vector2D_t& vec ) const
104  { return abs(this->x-vec.x)<2 && abs(this->y-vec.y)<2; }
105 
106 };
107 
108 
116 template< typename T >
117 std::ostream& operator << ( std::ostream& strm, const Vector2D_t<T>& vec ){
118  strm << "[" << vec.x << "; " << vec.y << "]";
119  return strm;
120 }
121 
122 
124 
Vector2D_t
2 dimension vector
Definition: Vector2D.hpp:9
Vector2D_t::Vector2D_t
Vector2D_t(const T &xx, const T &yy)
Construct a new Vector 2 D object.
Definition: Vector2D.hpp:20
Vector2D_t::operator-=
Vector2D_t & operator-=(const Vector2D_t &vec)
Operator -=.
Definition: Vector2D.hpp:53
Vector2D_t::area
unsigned int area() const
Area of rectangle extened on the vector.
Definition: Vector2D.hpp:94
Vector2D_t::x
T x
X coordinate of vectior.
Definition: Vector2D.hpp:11
Vector2D_t::adj
bool adj(const Vector2D_t &vec) const
Is points are adjoining?
Definition: Vector2D.hpp:103
Vector2D_t::Vector2D_t
Vector2D_t()
Construct a new Vector 2 D object.
Definition: Vector2D.hpp:25
operator<<
std::ostream & operator<<(std::ostream &strm, const Vector2D_t< T > &vec)
Display operator.
Definition: Vector2D.hpp:117
Vector2D_t::operator+
Vector2D_t operator+(const Vector2D_t &vec) const
operator + v2
Definition: Vector2D.hpp:63
Vector2D_t::operator==
bool operator==(const Vector2D_t &vec) const
Operator ==.
Definition: Vector2D.hpp:86
Vector2D_t::~Vector2D_t
~Vector2D_t()=default
Destroy the Vector 2 D object.
Vector2D_t::y
T y
Y coordinate of vectior.
Definition: Vector2D.hpp:12
Vector2D_t::operator+=
Vector2D_t & operator+=(const Vector2D_t &vec)
Operator +=.
Definition: Vector2D.hpp:45
Vector2D_t::Vector2D_t
Vector2D_t(const Vector2D_t &vec)
Construct a new Vector 2 D object.
Definition: Vector2D.hpp:31
Vector2D
Vector2D_t< short int > Vector2D
Vector2D typedef.
Definition: Vector2D.hpp:126
Vector2D_t::operator-
Vector2D_t operator-(const Vector2D_t &vec) const
Operator -.
Definition: Vector2D.hpp:74