From 6dd0f11fbf51c20667c39244888b3456f2af1b61 Mon Sep 17 00:00:00 2001 From: lolabird Date: Fri, 16 Feb 2024 20:27:31 -0700 Subject: [PATCH] Redefine upper and lower boundaries of contains method in init method --- .../Chapter-17-18-Exercises/rectangle.py | 45 ++++++++++++------- 1 file changed, 28 insertions(+), 17 deletions(-) diff --git a/thinkcspy/Chapter-17-18-Exercises/rectangle.py b/thinkcspy/Chapter-17-18-Exercises/rectangle.py index fc5dec8..4383467 100644 --- a/thinkcspy/Chapter-17-18-Exercises/rectangle.py +++ b/thinkcspy/Chapter-17-18-Exercises/rectangle.py @@ -6,6 +6,22 @@ class Rectangle: self.width = width self.height = height + self.lowerX = self.pos.getX() + self.upperX = self.lowerX + self.width + self.lowerY = self.pos.getY() + self.upperY = self.lowerY + self.height + + if self.lowerX == self.upperX or self.lowerY == self.upperY: + return "Error: Rectangle not defined." + + if self.lowerX > self.upperX: + self.lowerX = self.upperX + self.upperX = self.pos.getX() + + if self.lowerY > self.upperY: + self.lowerY = self.upperY + self.upperY = self.pos.getY() + def getWidth(self): return self.width @@ -29,25 +45,10 @@ class Rectangle: return self def contains(self, pnt): - lowerX = self.pos.getX() - upperX = lowerX + self.width - lowerY = self.pos.getY() - upperY = lowerY + self.height pntX = pnt.getX() pntY = pnt.getY() - if lowerX == upperX or lowerY == upperY: - return "Error: Rectangle not defined." - - if lowerX > upperX: - lowerX = upperX - upperX = self.pos.getX() - - if lowerY > upperY: - lowerY = upperY - upperY = self.pos.getY() - - if pntX > lowerX and pntX < upperX and pntY > lowerY and pntY < upperY: + if pntX > self.lowerX and pntX < self.upperX and pntY > self.lowerY and pntY < self.upperY: return True return False @@ -55,8 +56,18 @@ class Rectangle: def diagonal(self): pnt = Point(self.width, self.height) return pnt.distanceFromOrigin() + + def collission(self, pnt): + pntX = pnt.getX() + pntY = pnt.getY() + + if (pntX > self.lowerX and pntX < self.upperX) or (pntY > self.lowerY and pntY < self.upperY): + return True + + return False r = Rectangle(Point(-10, 5), 4, 30) #print(r) -print(r.diagonal()) +print(r.collission(Point(10, 25))) +print(r.contains(Point(10, 25))) \ No newline at end of file