Код:#=============================================================================== # Rect # Класс, отвечающий за прямоугольник. #=============================================================================== class Rect #----------------------------------------------------------------------------- # Предоставляет индексированный доступ на чтение к аттрибутам прямоугольника # 0 - Координата X левого верхнего угла прямоугольника. # 1 - Координата Y левого верхнего угла прямоугольника. # 2 - Ширина прямоугольника. # 3 - Высота прямоугольника. #----------------------------------------------------------------------------- def [](index) result = 0 case index when 0; result = self.x when 1; result = self.y when 2; result = self.width when 3; result = self.height end return result end #----------------------------------------------------------------------------- # Предоставляет индексированный доступ на запись к аттрибутам прямоугольника # index :integer # 0 - Координата X левого верхнего угла прямоугольника. # 1 - Координата Y левого верхнего угла прямоугольника. # 2 - Ширина прямоугольника. # 3 - Высота прямоугольника. # value :integer #----------------------------------------------------------------------------- def []=(index, value) case index when 0; self.x = value when 1; self.y = value when 2; self.width = value when 3; self.height = value end end #----------------------------------------------------------------------------- # Очищает все значения прямоугольника #----------------------------------------------------------------------------- def clear self.x = 0 self.y = 0 self.width = 0 self.height = 0 end #----------------------------------------------------------------------------- # Определяет пуст ли прямоугольник # Возвращает :bool - true, если площадь <= 0 и false в противном случае #----------------------------------------------------------------------------- def empty? return (width <= 0 || height <= 0) end #----------------------------------------------------------------------------- # Вычисляет периметер прямоугольника # Возвращает :integer #----------------------------------------------------------------------------- def perimeter return 2 * width + 2 * height end #----------------------------------------------------------------------------- # Вычисляет площадь прямоугольника # Возвращает :integer #----------------------------------------------------------------------------- def square return width * height end #----------------------------------------------------------------------------- # Преобразует прямоугольник в одномерный массив # Возвращает :[i, i, i, i] - [x, y, ширина, высота] #----------------------------------------------------------------------------- def to_a return [self.x, self.y, self.width, self.height] end #----------------------------------------------------------------------------- end
Социальные закладки