from copy import deepcopy

class Quadrat:

    def __init__(self, v, m):
        """
        Constructora: inicialitza els atributs ``vertex`` i ``mida``
        de l'objecte ``self`` amb els valors de ``v`` (Punt2D) i ``m``
        (nombre) respectivament.
        """
        self.vèrtex = v
        self.mida = m

    def __str__(self):
        """
        Retorna un string en format: 'Quadrat(v, m)' on

        ``v`` és el valor de l'atribut ``vèrtex``, i
        ``m`` és el valor de l'atribut ``mida``.

        Per exemple:

        >>> from punt2D import Punt2D

        >>> p = Punt2D(3, 4)
        >>> q = Quadrat(p, 5)
        >>> str(q)
        'Quadrat(Punt2D(3, 4), 5)'
        """
        return 'Quadrat({}, {})'.format(self.vèrtex, self.mida)

    def té_dins(self, p):
        """
        Retorna True si el Punt2D p és interior al quadrat self i False
        altrament.

        Per exemple:

        >>> from punt2D import Punt2D

        >>> p1 = Punt2D(0, 0)
        >>> q = Quadrat(p1, 10)
        >>> p2 = Punt2D(5, 5)
        >>> q.té_dins(p2)
        True
        >>> p3 = Punt2D(-1, -1)
        >>> q.té_dins(p3)
        False
        """
        return self.vèrtex.x <= p.x <= self.vèrtex.x +self.mida and self.vèrtex.y <= p.y <= self.vèrtex.y +self.mida 

    def copy(self):
        return deepcopy(self)
