83 lines
2.4 KiB
Python
83 lines
2.4 KiB
Python
from random import randint
|
|
import turtle
|
|
|
|
class Point:
|
|
def __init__(self, x:int, y:int):
|
|
self.x = x
|
|
self.y = y
|
|
|
|
def display_point(self):
|
|
return (self.x, self.y)
|
|
|
|
|
|
class GuiPoint(Point):
|
|
def draw(self, canvas, size=5, color="red"):
|
|
canvas.penup()
|
|
canvas.goto(self.x, self.y)
|
|
canvas.pendown()
|
|
canvas.dot(size, color)
|
|
|
|
|
|
class Rectangle:
|
|
def __init__(self, point1:Point, point2:Point):
|
|
self.point1 = point1
|
|
self.point2 = point2
|
|
|
|
def point_in_rectangle(self, point):
|
|
if self.point1.x < point.x and \
|
|
point.y < self.point2.y:
|
|
return True
|
|
else:
|
|
return False
|
|
|
|
def display_rectangle_coordinates(self):
|
|
print(f"Rectangle Coord: {self.point1.display_point()}, {self.point2.display_point()}")
|
|
|
|
def get_area(self):
|
|
return round(self.point2.x - self.point1.x) * (self.point2.y - self.point1.y)
|
|
|
|
class GuiRectangle(Rectangle):
|
|
|
|
def draw(self, canvas):
|
|
canvas.penup()
|
|
canvas.goto(self.point1.x, self.point1.y)
|
|
canvas.pendown()
|
|
canvas.forward(self.point2.x - self.point1.x)
|
|
canvas.left(90)
|
|
canvas.forward(self.point2.y - self.point1.y)
|
|
canvas.left(90)
|
|
canvas.forward(self.point2.x - self.point1.x)
|
|
canvas.left(90)
|
|
canvas.forward(self.point2.y - self.point1.y)
|
|
|
|
|
|
def main():
|
|
myturtle = turtle.Turtle()
|
|
|
|
gui_rectangle = GuiRectangle(Point(randint(0, 400), randint(0, 400)), \
|
|
Point(randint(10, 400), randint(10, 400))
|
|
)
|
|
gui_rectangle.display_rectangle_coordinates()
|
|
|
|
user_point = GuiPoint(float(input("Enter X: ")), \
|
|
float(input("Enter Y: "))
|
|
)
|
|
|
|
print(f"Your point is in the rectangle: {gui_rectangle.point_in_rectangle(user_point)}")
|
|
|
|
user_area = round(float(input("Guess the rectangle area: ")))
|
|
|
|
if gui_rectangle.get_area() > user_area:
|
|
print(f"Your guess of {user_area} was off by: {gui_rectangle.get_area() - user_area}")
|
|
else:
|
|
print(f"Your guess of {user_area} was off by: {user_area - gui_rectangle.get_area()}")
|
|
|
|
print(gui_rectangle.get_area())
|
|
|
|
gui_rectangle.draw(myturtle)
|
|
user_point.draw(myturtle)
|
|
turtle.done()
|
|
|
|
if __name__ == "__main__":
|
|
main()
|