Студопедия Главная Случайная страница Обратная связь

Разделы: Автомобили Астрономия Биология География Дом и сад Другие языки Другое Информатика История Культура Литература Логика Математика Медицина Металлургия Механика Образование Охрана труда Педагогика Политика Право Психология Религия Риторика Социология Спорт Строительство Технология Туризм Физика Философия Финансы Химия Черчение Экология Экономика Электроника

ТЕХНОЛОГИИ, МЕТОДЫ, СТРУКТУРЫ, ПРИНЦИПЫ ПОЛОЖЕННЫЕ В ОСНОВУ АЛГОРИТМА




Доверь свою работу кандидату наук!
Поможем с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой

Схема работа программы:

Рисунок 2.1 – Схема работы программы

Visual Studio 2010 позволяет программисту разрабатывать программы, которые могут выводить графику: схемы, чертежи, иллюстрации.

Программа выводит графику на поверхность объекта (формы или, как в нашем случае, компонента PictureBox). Поверхности объекта соответствует свойство Graphics. Для того чтобы вывести на поверхность объекта графический элемент (прямую линию, окружность, прямоугольник и т. д.), необходимо применить к свойству Graphics этого объекта соответствующий метод.

Перечень основных методов, которые потребуются при разработке файлового программного игрового приложения «Snake»:

void Graphics.DrawImage(Image image, int x, int y)

 

Метод DrawImage

Синтаксис:

Объект.DrawImage (Image image, int x, int y);

Где:

Объект — имя объекта (компонента), на поверхности которого выполняется вычерчивание, x, y — координаты x и y положения рисунка, image – картинка, которая будет прорисована.

Метод DrawImage рисует изображение, содержащееся в объекте, указанном параметром Image, сохраняя исходный размер изображеня в его источнике и перенося изображение в область объекта Graphics, верхний левый угол которой определяется параметрами x и y. Источник изображения может быть битовой матрицей, пиктограммой или метафайлом.

void Graphics.DrawString(String s, Font font, Brush brush, PointF point)

 

Метод DrawString

Синтаксис:

Объект.DrawString(String s, Font font, Brush brush, PointF point);

Где:

Объект — имя объекта (компонента), на поверхности которого выполняется рисование, s – строка для рисования, font – объект, определяющий формат текстовой строки, brush – объект, определяющий цвет и текстуру создаваемого текста, PointF – структура, задающая верхний левый угол создаваемого текста.

Метод DrawString рисует строку, содержащееся в параметре s, сохраняя исходный размер строки в его источнике и перенося ее в область объекта Graphics, формат строки определяется параметром font, цвет и текстура задается параметром brush, место рисования строки задается верхним левым углом, который описан в параметре point.

При разработке программы основным компонентом является Timer, который вызывает событие через определенные интервалы времени. Этот компонент предназначен для среды Windows Forms, в которой и разрабатывалось данное приложение.

Длина интервалов определяется свойством Interval, значение которого исчисляется в миллисекундах. Когда компонент включен, событие Tick вызывается через каждый интервал. В этом месте следует добавить выполняемый код. Ключевыми методами компонента Timer являются Start и Stop, которые включают и выключают таймер. При выключении таймера его параметры сбрасываются; приостановить компонент Timer нельзя.
На основе данного компонента и была реализована возможность поставить игру на паузу.

При разработке программы было решено отказаться от массивов, а вместо них использовать List<T> - класс. Данный класс представляет строго типизированный список объектов, доступных по индексу. Поддерживает методы для поиска по списку, выполнения сортировки и других операций со списками.

Класс List<T> является универсальным эквивалентом класса ArrayList. Он реализует универсальный интерфейс IList<T> с помощью массива, размер которого динамически увеличивается по мере необходимости.

Класс List<T> использует компаратор проверки на равенство и компаратор упорядочения.

Такие методы, как Contains, IndexOf, LastIndexOf и Remove, используют компаратор проверки на равенство для элементов списка. Компаратор проверки на равенство, используемый по умолчанию для типа T, определяется следующим образом. Если тип T реализует универсальный интерфейс IEquatable<T>, в качестве компаратора проверки на равенство используется метод Equals(T) этого интерфейса; в противном случае по умолчанию используется метод Object.Equals(Object).

Такие методы, как BinarySearch и Sort, используют компаратор упорядочения для элементов списка. Компаратор, используемый по умолчанию для типа T, определяется следующим образом. Если тип T реализует универсальный интерфейс IComparable<T>, в качестве компаратора по умолчанию используется метод CompareTo(T) этого интерфейса; в противном случае, если тип T реализует неуниверсальный интерфейс IComparable, в качестве компаратора по умолчанию используется метод CompareTo(Object) этого интерфейса. Если тип T не реализует ни один из интерфейсов, компаратор по умолчанию не определяется; в этом случае компаратор или делегат сравнения должен быть задан явным образом.

Сортировка списка List<T> is не гарантируется. Необходимо отсортировать List<T> до выполнения операций (таких, как BinarySearch), для которых требуется отсортированный список List<T>.

Доступ к элементам этой коллекции осуществляется с помощью целочисленного индекса. Индексы в этой коллекции начинаются с нуля.

Для очень больших List<T> объекты, можно увеличить максимальную емкость до 2 миллиарда элементов в системе путем установки обновления 64 (sp2) enabled атрибут gcAllowVeryLargeObjects элемент конфигурации true в такой среде выполнения.

Объект List<T> принимает null в качестве допустимого значения для ссылочных типов и разрешает дублирование элементов.

Особенности производительности

Делая выбор между классами List<T> и ArrayList, предлагающими сходные функциональные возможности, следует помнить, что класс List<T> в большинстве случаев обрабатывается быстрее и является типобезопасным. Если в качестве типа T класса List<T> используется ссылочный тип, оба класса действуют идентичным образом. Однако если в качестве типа T используется тип значений, необходимо принять во внимание особенности, связанные с реализацией и упаковкой.

Если в качестве типа T используется тип значений, компилятор генерирует реализацию класса List<T> специально для этого типа значений. Это означает, что элемент списка List<T> не требует упаковки перед его использованием, и после создания примерно 500 элементов списка объем памяти, сэкономленной за счет отказа от их упаковки, превысит объем памяти, используемой для генерации реализации класса.

Необходимо убедиться, что тип значений, используемый в качестве типа T, реализует универсальный интерфейс IEquatable<T>. В противном случае такие методы, как Contains, должны будут вызывать метод Object.Equals(Object), который осуществляет упаковку соответствующего элемента списка. Если тип значений реализует интерфейс IComparable и исходный код принадлежит вам, следует также реализовать универсальный интерфейс IComparable<T>, чтобы избежать упаковки элементов списка методами BinarySearch и Sort. Если исходный код принадлежит не вам, передайте объект IComparer<T> в методы BinarySearch и Sort.

Использование реализации класса List<T>, определяемой конкретным типом, является предпочтительным по сравнению с использованием класса ArrayList или самостоятельным составлением коллекции со строго типизированной оболочкой. Дело в том, что собственная реализация должна выполнять все функции, которые уже автоматически предоставляются в .NET Framework, и к тому же общеязыковая среда выполнения может использовать общие метаданные и код MSIL, что невозможно обеспечить в собственной реализации.

 

Программное приложение <Snake> написано на объектно-ориентированном языке C# и соответствует принципам концепции ООП:

Концепция ООП возникла в середине 80-х годов. Главная ее идея в том, что программное приложение, как и окружающий нас мир, должно состоять из объектов, обладающих собственными свойствами и поведением. ООП объединяет исполняемый код программы и ее данные в объекты, что упрощает создание сложных программных приложений. Например, можно организовать коллективную работу над проектом, где каждый участник создает собственный класс объектов, который становится доступным другим участникам проекта.

При объектно-ориентированном подходе программные задачи распределяются между объектами программы. Объекты обладают определенным набором свойств, методов и способностью реагировать на события (нажатие кнопок мыши, интервалы времени и т.д.). В отличие от процедурного программирования, где порядок выполнения операторов программы определяется порядком их следования и командами управления, в ООП порядок выполнения процедур и функций определяется, прежде всего, событиями.

Чтобы проект можно было считать объектно-ориентированным, объекты должны удовлетворять некоторым требованиям. Этими требованиями являются инкапсуляция, наследование и полиморфизм.

Инкапсуляция— означает, что объекты скрывают детали своей работы. Инкапсуляция позволяет разработчику объекта изменять внутренние принципы его функционирования, не оказывая никакого влияния на пользователя объекта. В VB этот принцип реализуется, в основном, за счет применения описаний Private и Public.

Наследование— означает, что новый объект можно определить на основе уже существующих объектов, при этом он будет содержать все свойства и методы родительского. Наследование полезно, когда требуется создать новый объект, обладающий дополнительными свойствами по сравнению со старым. Следует заметить, что VB не поддерживает наследования в строгом смысле этого понятия.

Полиморфизм— многие объекты могут иметь одноименные методы, которые могут выполнять разные действия для разных объектов. Например, оператор "+" для числовых величин выполняет сложение, а для текстовых — склеивание.

В ООП центральным является понятие класса. Класс – это шаблон, по которому создаются объекты определенного типа. Класс объединяет в себе данные и методы их обработки.

Объекты— это экземпляры определенного класса. Например, кнопки или текстовые поля, устанавливаемые на форме являются экземплярами соответствующих стандартных классов VB.

Создать собственный класс в VB можно с помощью модуля класса. Модуль класса состоит из элементов трех типов: свойств, методов, событий, оформляемых в виде описаний, процедур и функций внутри контейнера — модуля. У модуля класса нет собственного пользовательского интерфейса — формы, однако он может использовать контейнер формы, для чего должен содержать соответствующие методы.

Элементы управления— это объекты, используемые при разработке пользовательского интерфейса.

ООП характеризуется следующими принципами (по Алану Кею):

· все является объектом;

· вычисления осуществляются путем взаимодействия (обмена данными) между объектами, при котором один объект требует, чтобы другой объект выполнил некоторое действие; объекты взаимодействуют, посылая и получая сообщения; сообщение -- это запрос на выполнение действия, дополненный набором аргументов, которые могут понадобиться при выполнении действия;

· каждый объект имеет независимую память, которая состоит из других объектов;

· каждый объект является представителем класса, который выражает общие свойства объектов данного типа;

· в классе задается функциональность (поведение объекта); тем самым все объекты, которые являются экземплярами одного класса, могут выполнять одни и те же действия;

· классы организованы в единую древовидную структуру с общим корнем, называемую иерархией наследования; память и поведение, связанное с экземплярами определенного класса, автоматически доступны любому классу, расположенному ниже в иерархическом дереве.







Дата добавления: 2015-08-30; просмотров: 249. Нарушение авторских прав; Мы поможем в написании вашей работы!

Studopedia.info - Студопедия - 2014-2022 год . (0.022 сек.) русская версия | украинская версия