
- •Занятие 1. Введение Почему именно Delphi?
- •Что мы видим на экране
- •Контрольные вопросы:
- •Занятие 2. Мое первое приложение в Delphi Вывести текст в окне
- •Задания для самостоятельной работы
- •Кнопки. Какие они бывают и зачем они?
- •Задания для самостоятельной работы
- •Поле редактирования
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Занятие 3. Введение в язык программирования Pascal
- •Понятие алгоритма
- •Структура процедуры
- •Правила задания имен языка Pascal
- •Задания для самостоятельной работы
- •Тип данных
- •Числовой тип данных. Целые числа
- •Числовой тип данных. Вещественные числа
- •Описание данных
- •Задания для самостоятельной работы
- •Операции
- •Присвоение значения переменной. Оператор присваивания
- •Задания для самостоятельной работы
- •Задача «Простой калькулятор»
- •Встроенные функции
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Занятие 4. Разветвляющийся алгоритм
- •Логический тип данных
- •Описание данных логического типа
- •Логические выражения
- •Разветвляющийся алгоритм
- •Оператор if
- •Оператор выбора case
- •Задания для самостоятельной работы
- •Списки. Компоненты ListBox и ComboBox
- •Зависимые переключатели. Компоненты RadioButton, RadioGroup
- •Задание для самостоятельной работы
- •Добавление формы к проекту
- •Структура модуля Pascal
- •Как открыть форму
- •Задание для самостоятельной работы
- •Способность форм ссылаться друг на друга
- •Задание для самостоятельной работы
- •Просмотр форм и ассоциированных с ними модулей
- •Основные свойства, методы и события формы
- •Менеджер проектов
- •Опции пpоекта
- •Упpавление пpоектами
- •Компиляция и сборка проекта
- •Выполнение и отладка проекта
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Занятие 6. Начинаем рисовать
- •Рисование линий
- •Задание цвета
- •Рисование фигур
- •Свойства класса tBrush
- •Вывод текста
- •События формы OnPaint и OnResize
- •Задания для самостоятельной работы
- •Занятие 7. Циклы
- •Цикл со счетчиком: for
- •Цикл с предусловием: while
- •Цикл с постусловием: repeat..Until
- •Использование операторов Continue и Break в циклах
- •Задание случайных чисел. Функция Random. Процедура Randomize
- •Вложенные циклы
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Занятие 8. Массивы
- •Одномерные массивы
- •Двумерные массивы
- •Компонент tStringGrid
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Занятие 9. Строки и символы
- •Символьный тип данных
- •Строковый тип данных
- •Сравнение текстовой информации
- •Функции для работы с текстовой информацией
- •Задания для самостоятельной работы
- •Контрольные вопросы
- •Занятие 10. Работа с изображениями
- •Редактор Image Editor
- •Как отобразить рисунок в форме
- •Компонент Timer
- •Как заставить картинку двигаться
- •Случайное движение
- •Задание для самостоятельной работы.
- •Движение по закону
- •Задание для самостоятельной работы
- •Управляемое движение
- •Задание для самостоятельной работы
- •Как совместить разные виды движения
- •Задание для самостоятельной работы
- •Использование мыши
- •Занятие 11. Процедуры и функции
- •Описание и вызов процедуры
- •Описание и вызов функции
- •Где описывать процедуры(функции)
- •Передача параметров по ссылке и по значению
- •Контрольные вопросы
- •Задание для самостоятельной работы
- •Занятие12. Еще про компоненты Еще раз про списки
- •Функция MessageDlg
- •Задание для самостоятельной работы
- •Главное меню приложения. Компонент MainManu
- •Задание для самостоятельной работы
- •Кнопочная панель. Компонент ToolBar
- •Область редактирования. Компонент Memo
- •Контекстное меню. Компонент PopupMenu
- •Диалоговые окна Windows
- •Задание для самостоятельной работы
- •Занятие 13. Объектно-ориентированный подход (ооп) в программировании Основные понятия ооп
- •Основные принципы ооп
- •Тип данных запись (структура)
- •Задание для самостоятельной работы
- •Классы и объекты в Delphi
- •Задание для самостоятельной работы
- •Контрольные вопросы
- •Занятие 14. Работа с файлами
- •Общая технология работы с файлами в Delphi
- •Стандартный подход к работе с файлами
- •Описание файловой переменной
- •Открытие файлов
- •Запись в файл
- •Считывание из файла
- •Закрытие файла
- •Установка новой позиции в файле
- •Текстовые файлы
- •Конец файла
- •Стандартные подпрограммы для работы с файлами и каталогами
- •Пример работы с нетипизированными файлами
- •Пример работы с типизированными файлами
- •Пример работы с текстовыми файлами
- •Объектный подход к работе с файлами
- •Задания для самостоятельной работы
- •Контрольные вопросы
Задание для самостоятельной работы
В игре, описанной выше, написать программный код, который будет определять, достиг ли выстрел цели и если достиг увеличивать счет игры, который необходимо выводить на экран.
Используя элементы предыдущей игры создать игру «Ралли». По дороге навстречу машине игрока движутся другие машины. Машины появляются в случайных местах и движутся со случайными скоростями. Машина игрока может двигаться в двух направлениях влево и вправо. С помощью стрелок вверх и вниз можно соответственно увеличивать или уменьшать скорость машины. Цель игры: пробежать как можно больше километров, избегая столкновений со встречными машинами. Примерный вид экрана изображен на рисунке:
Машина игрока
Используя элементы предыдущей игры придумать сюжет игры самостоятельно.
Использование мыши
Для управления мышью можно использовать следующие события формы или элемента управления:
OnMouseDown – выполняется при нажатии на кнопку мыши, возможно в комбинации с управляющей клавишей Shift, Ctrl, и Alt.
OnMouseMove – выполняется при перемещении мыши;
OnMouseUp – выполняется при отпускании кнопки мыши.
Заголовок процедуры обработчика события OnMouseDown имеет следующий вид:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
Процедуре передается на вход 5 параметров:
Sender – указатель на объект-источник события
Button – позволяет определить какая кнопка мыши была нажата: левая, правая или средняя.
Shift – позволяет определить какая управляющая клавиша была нажата
X,Y – координаты, относительно клиентской части объекта Sender. Например, если это форма, то координаты точки, относительно окна, где нажали мышкой.
Процедуре обработки события OnMouseMove, как видно из заголовка
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState; X, Y: Integer);
передается 4 параметра, значения которых аналогичны.
Процедуре обработки события OnMouseUp, как видно из заголовка
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
передается 5 параметров, где X,Y это координаты, куда переместилась мышь.
Можно продемонстрировать использование управления мышкой на следующих примерах.
Пример 1. Например, при нажатии на мышку начинаем рисовать линию, при отпускании – завершаем рисование.
Для реализации этого упражнения будем использовать события мыши самой формы. Создадим либо в секции Interface или на верхнем уровне секции реализации переменную pr:
Var pr:Boolean;
Переменная pr – это признак того, что было нажатие мыши. Эта переменная необходима нам, чтобы код на событие OnMouseMove выполнялся только в случае, если было нажатие мыши. Начальное значение переменной pr, равное false, задается на событие формы OnCreate.
procedure TForm1.FormCreate(Sender: TObject);
begin
pr:=false;
end;
При нажатии мыши (событие OnMouseDown) необходимо включить флажок pr и перевести курсор в позицию, где была нажата мышь:
procedure TForm1.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
pr:=true;
Canvas.Moveto(x,y);
end;
При движении мыши (событие OnMouseMove) необходимо проверить было ли нажатие мыши, и если было, то провести линию в точку, куда переместилась мышь:
procedure TForm1.FormMouseMove(Sender: TObject; Shift: TShiftState; X,
Y: Integer);
begin
if pr then Canvas.Lineto(x,y);
end;
На событие OnMouseUp необходимо сбросить флажок pr в false:
procedure TForm1.FormMouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
pr:=false;
end;
Пример 2. Пусть в окне есть некоторый элемент, например картинка Image1: TImage, который необходимо переместить мышкой в другое место. Для того, чтобы перетащить объект, необходимо щелкать на самом объекте. Поэтому будем использовать все события мыши, связанные с самим объектом Image1.
В этом случае также необходимо завести переменную флажок, которая будет сигнализировать о том, что было нажатие мыши. При нажатии мыши на объекте будет выполняться его событие: Image1MouseDown, код которого приведен ниже:
procedure TForm1.Image1MouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
pr:=true;
end;
При отпускании мыши флажок сбрасывается:
procedure TForm1.Image1MouseUp(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
pr:=false;
end;
При перемещении мыши проверяется, было ли нажатие, если было, то необходимо сместить картинку:
procedure TForm1.Image1MouseMove(Sender: TObject; Shift: TShiftState;
X,Y: Integer);
begin
if pr then
begin
Image1.Top:=Image1.Top+y;
Image1.Left:=Image1.Left+x;
end;
end;
При этом X и Y это координаты смещения мышки относительно объекта.