Отображение движения шариков с применением средств графического отображения (класс TImage) и компонента класса “TTimer”

Страницы работы

Содержание работы

Министерство образования Российской Федерации

Государственное образовательное учреждение

Высшего профессионального образования

«Сибирский государственный индустриальный университет»

КАФЕДРА ИНФОРМАЦИОННЫХ ТЕХНОЛОГИЙ В МЕТАЛЛУРГИИ

Пояснительная записка к курсовой работе

Выполнил: ст. гр. ИСП-06

Семахина О.И.

Проверил: Кожемяченко В.И.

Новокузнецк

2007

Задание:   Дана квадратная область, из центра которой происходит колебательное движение шариков. Каждый шарик характеризуется цветом, размером, азимутом и скоростью движения. При достижении шариком границы области, он начинает двигаться к центру; при достижении центра – к границам области. Провести отображение движения шариков. Предусмотреть возможность изменения их параметров, а также добавление и удаление шариков без остановки процесса движения.

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

Выделение классов. Для решения задачи опишем класс TBall, характеризующие отдельно взятый шарик. В классе должны быть описаны цвет шарика, радиус шарика, азимут шарика, скорость шарика, координаты шарика, а также процедуры Show, Hide и Move.

TBall = class

color: TColor;     

radius: integer;   

az: integer;       

V: integer;         

x,y: integer;    

Canvas: TCanvas;   

direction : boolean; 

dx, dy : integer;   

constructor Create(NewColor: TColor; NewRadius, NewAz, NewV: integer; NewCanvas: TCanvas);

destructor Destroy; override;

procedure Show;

procedure Hide;

procedure Move;

end;

где:  color – цвет шарика;

radius – радиус шарика, целое, от 10 до 30;

az – азимут шарика, целое, от 0˚ до 360˚;

V – скорость шарика, целое, от 1 до 100;

x,y – координаты шарика;

dx, dy – приращение координат шарика;

Выделение перечня наиболее важных структур данных. Наиболее важными структурами данных при работе программы является информация, хранящаяся в экземплярах класса TBall.

Построение алгоритма реализации.

Движение шариков происходит от центра к краю поверхности рисования и обратно. Управляет движением следующий фрагмент кода:

Hide;

if (x+radius > 2*x_c) or (y+radius > 2*y_c) or (x-radius < 0) or           (y-radius < 0) or (x=x_c) and (y=y_c) then

begin

dx := -dx;   // меняем направление

dy := -dy;

end;

x := x + dx*round(v*cos(Pi/180*az));

y := y + dy*round(v*sin(Pi/180*az));

Show;

Координаты x и y определяются соответственно по формулам

 и , где az – азимут в градусах.

При работе программы могут возникнуть следующие события: добавление, изменение и удаление шарика, запуск/остановка системы, загрузка и сохранение файла, а также событие при срабатывании таймера. В программе используется компонент TActionList, таким образом каждому событию соответствует своя процедура, а компонентам на форме присвоен свой Action.

Обоснование выбора визуальных компонентов. Для отображения текущего состояния программы и управления ее поведением используются следующие компоненты:

  • компонент класса TListBox для отображения списка шариков, а также для выбора конкретного шарика для изменения его параметров или удаления. Для данной задачи этот компонент удобен, т.к. обеспечивает не только отображение названия шарика, но и хранит сам объект;
  • компонент класса TImage используется как поверхность рисования для графического отображения задачи;
  • компоненты класса TButton используются для активации действий по добавлению, изменению и удалению шариков;
  • компонент класса TMainMenu используется для активации тех же самых действий, только из строки меню;
  • компонент класса TToolBar используется для активации этих же действий управления программой, только с панели инструментов;
  • компонент класса TStatusBar используется для вывода параметров текущего шарика в списке;
  • компоненты класса TEdit используются в диалоговых окнах для получения информации от пользователя;
  • компоненты класса TSaveDialog используются в диалоговом окне сохранения файла;
  • компоненты класса TOpenDialog используются в диалоговом окне открытия файла;
  • компоненты класса TColorDialog используются в диалоговом окне выбора цвета;

Структура диалогов приведена на рисунке. При добавлении/редактировании шарика требуется ввести название шарика, его радиус, азимут и скорость. Также можно выбрать цвет шарика. При вводе числовых значений могут возникнуть следующие ошибки:

·  введение последовательности символов, которое невозможно интерпретировать как целое число. Отображается сообщение об ошибке;

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

·  строка названия оставлена пустой. Отображается сообщение об ошибке.

Распознавание ошибочных ситуаций производится в момент попытки закрытия формы. Для этого используется конструкция вида

if ModalResult = mrOK then

try

...

except

...

end;

При выборе действий сохранить или загрузить из главного меню или из панели управления появляются диалоговое окно Windows «Сохранить как»  и диалоговое окно Windows «Открыть»  соответственно.

Инструкции по использованию программы. После запуска программы появляется основная форма. Ее изображение представлено на рисунке. Список шариков пуст, поэтому требуется добавить хотя бы один шарик. Отображение процесса начнется при нажатии «Пуск», остановится при нажатии «Стоп». При выборе шарика из списка его можно удалить или изменить его параметры. Для сохранения текущего состояния системы – «Сохранить», для загрузки – «Загрузить».

Основное окно программы

      

Диалоговые окна

При вводе некорректных данных

Диалоговые окна загрузки и сохранения

Похожие материалы

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