
- •Занятие 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
- •Стандартный подход к работе с файлами
- •Описание файловой переменной
- •Открытие файлов
- •Запись в файл
- •Считывание из файла
- •Закрытие файла
- •Установка новой позиции в файле
- •Текстовые файлы
- •Конец файла
- •Стандартные подпрограммы для работы с файлами и каталогами
- •Пример работы с нетипизированными файлами
- •Пример работы с типизированными файлами
- •Пример работы с текстовыми файлами
- •Объектный подход к работе с файлами
- •Задания для самостоятельной работы
- •Контрольные вопросы
Задание для самостоятельной работы
Модифицируйте предыдущее задание так, чтобы жук не выходил за пределы некоторой ограниченной прямоугольником области.
Как совместить разные виды движения
Попробуем совместить случайное движение и управляемое движение. Для этого рассмотрим такую несложную игру. По экрану в горизонтальном направлении слева направо движутся летающие тарелки. Они появляются в случайных местах и движутся со случайными скоростями. Как только очередная летающая тарелка, двигаясь слева направо, выходит за пределы экрана, она снова появляется в начале экрана слева в случайной позиции и начинает двигаться со случайной скоростью. Таким образом, создается иллюзия непрерывного движения разных объектов. В нижней части экрана находится пушка, которая может перемещаться во всех направлениях: влево, вправо, вверх и вниз с помощью стрелок. Пушка может расстреливать летающие тарелки снарядами нажатием клавиши Enter.
Для создания этой игры нужно нарисовать персонажей: пушку, летающую тарелку и снаряд в редакторе Image Editor.
В форме для отображения персонажей игра будем использовать компоненты:
Pushka:TImage – пушка;
FLY1, FLY2 : TImage – летающие тарелки;
Snar:TImage – снаряд.
Для организации движения летающих тарелок будем использовать таймер Timer1:Ttimer со значением свойства Interval, равным примерно 60. Для организации движения снаряда будем использовать таймер Timer2:TTimer со значением свойства Interval, равным примерно 1. В начале игры Timer2 выключен, т.е. свойство Enabled равно false, все тарелки и снаряд не видимы, т.е. их свойство Visible равно false.
Программный код, реализующий движение и выстрелы пушки пишется на событие OnKeyDown формы и имеет следующий вид:
case key of
VK_UP: if Pushka.top -10 > 0 then Pushka.top:=Pushka.Top - 10;
VK_Down: if Pushka.top +10 +Pushka.Height < ClientHeight then
Pushka.top:=Pushka.Top + 10;
VK_Left: if Pushka.Left - 10 >0 then Pushka.Left :=Pushka.Left -10;
VK_Right: if Pushka.Left +10 +Pushka.Width <ClientWidth then
Pushka.Left :=Pushka.Left +10;
VK_Return: begin
Snar.Top:= Pushka.Top - Snar.Height;
Snar.Left:=Pushka.Left+20;
Snar.Visible:=true;
Timer2.Enabled:=true;
end;
end;
При нажатии на клавишу Enter задаются координаты снаряда, он становится видимым и включается Timer2, который управляет движением снаряда.
Программный код, реализующий движение летающих тарелок пишется на событие таймера Timer1. Если летающая тарелка еще не на экране (свойство visible равно false), ее следует запустить на экран, как бы в полет. Тарелка помещается в случайную позицию экрана, ее свойству visible присваивается значение true. Для задания скорости движения летающей тарелки используется свойство объекта tag. Это свойство есть почти у всех объектов, оно может использоваться для нужд программиста. Будем его использовать для хранения информации о скорости полета тарелки, которой то же присваивается случайное значение в пределах от 1 до 5.
Если тарелка уже на экране нужно сместить ее на значение скорости.
Программный код приведен ниже:
if not fly1.Visible then
with fly1 do
begin
{координаты тарелки}
top:=random(200)+1;
left:=0;
visible:=true;
{скорость тарелки }
tag:=random(10)+5;
end
else
{ полет }
if fly1.left+fly1.Width<Form1.Width then
fly1.left:= fly1.left+fly1.tag
else
fly1.visible:=false;
За движение снаряда отвечает обработчик события OnTimer второго таймера Timer2. Пока снаряд не выйдет за границу экрана или не столкнется с летающей тарелкой, смещать его на 10 пикселей. В противном случае сделать его невидимым и выключить таймер Timer2.
If Snar.top>0 then
Snar.Top:=Snar.top - 10
else
begin
Snar.Visible:=false;
Timer2.Enabled:=false;
end;
Для создания фона игры можно на событие OnPaint формы написать программный код, который будет рисовать звездное небо – звезды в случайных местах.