Хорошо! Хорошо!:  0
Плохо! Плохо!:  0
Страница 1 из 2 12 ПоследняяПоследняя
Показано с 1 по 10 из 17

Тема: Rect

  1. #1

    По умолчанию Rect

    Код:
    #===============================================================================
    # 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
    Последний раз редактировалось Equilibrium Keeper; 16.07.2011 в 11:53.

  2. #2

    По умолчанию

    Кто-нибудь видит необходимость в переопределении аттрибутов x, y, width, height с тем, чтобы они принимали значения с точкой?

  3. #3
    Мастер Форума Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    8,279
    Записей в дневнике
    2
    Репутация: 87 Добавить или отнять репутацию

    По умолчанию

    Это ты уже переписал или стандарт?

  4. #4

    По умолчанию

    Это я ДОписал. Стандартный включает в себя всего один метод:
    Код:
    set(x, y, width, height) 
    Одновременно устанавливает все параметры.

  5. #5
    Мастер Форума Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    8,279
    Записей в дневнике
    2
    Репутация: 87 Добавить или отнять репутацию

    По умолчанию

    Мне кажется все что нужно уже дописал.

  6. #6

    По умолчанию

    Зря! Нет предела совершенству!

  7. #7
    Мастер Форума Аватар для Рольф
    Информация о пользователе
    Регистрация
    14.04.2008
    Адрес
    Южно- Сахалинск/Пенза
    Сообщений
    8,279
    Записей в дневнике
    2
    Репутация: 87 Добавить или отнять репутацию

    По умолчанию

    У меня нет идей. Хотя есть одна, может она не кому не понравиться. Удалить одну сторону. Мне кажется бредовая идея.

  8. #8

    По умолчанию

    Это уже Triangle. Рольф, ты не забывай - это абстрактный прямоугольник, у которого есть координаты X, Y, ширина и высота. НЕ графический. С графикой вообще нужно отдельно подумать - как ее рисовать. Вот в методе draw_rect твое удаление стороны и имеет шанс на реализацию (на самом деле, идея не такая уж бредовая, но нужно будет подумать. как ее красиво реализовать).

  9. #9
    Маститый Аватар для Злодей
    Информация о пользователе
    Регистрация
    28.05.2010
    Адрес
    Краснодар
    Сообщений
    1,496
    Записей в дневнике
    7
    Репутация: 60 Добавить или отнять репутацию

    По умолчанию

    Вай... а зачем было создавать столько отдельных тем??? Не проще ли было сделать всё в одной? О__О


    Спойлер 1:


  10. #10

    По умолчанию

    Ты пошутил? ~90000 строк кода в одной теме?

Страница 1 из 2 12 ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Социальные закладки

Социальные закладки

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •