- •Оглавление
- •Введение
- •Глава 1
- •Использование компонентов общего назначения: tLabel, tButton, tEdit, tShape, tTimer, tPanel
- •1.1.1. Проект «Калькулятор»
- •1.1.2. Проект «Таймер»
- •1.1.3. Проект «Светофор»
- •1.1.4. Проект «Движение шарика tShape с отражением»
- •Глава 2
- •2.1. Класс tCanvas, его свойства и методы
- •2.1.1. Рисование узоров
- •2.1.2. Рисование поля для различных игр
- •2.1.3. Рисование координатной сетки
- •2.1.4. Построение графиков элементарных функций
- •2.2. Класс tBitmap и работа с растровыми рисунками
- •2.2.1. Рисование на поле растрового рисунка
- •2.2.2. Движение двоичного образа по фоновой картинке
- •2.3. Компонент tImage и его использование
- •2.3.1. Проект «Движение компонента tImage»
- •2.3.2. Перемещение картинок
- •2.3.3. Проект «Движение компонента tImage
- •Глава 3
- •3.1. События от мыши
- •3.1.1. Проект «Попади в мишень»
- •3.1.2. Проект «Снежинки»
- •3.1.3. Проект «Крестики-нолики»
- •3.1.4. Движение образа по удерживанию левой кнопки мыши
- •3.1.5. Проект «Жизнь клеток»
- •3.2. События от клавиатуры
- •3.2.1. Код клавиши
- •3.2.2. Управляемое движение образа
- •3.2.3. Совмещение управляемого и неуправляемого движений.
- •Глава 4
- •4.1. Проект «Простейший графический редактор»
- •Глава 5
- •5.1. Создание кнопок
- •5.1.1. Проект «Лохотрон»
- •5.1.2. Игра «Пятнадцать»
- •5.2. Создание компонентов tImage
- •5.2.1. Проект «Угадай картинку»
- •5.2.2. Проект «Собери картинку»
- •Глава 6
- •6.1. Компоненты tStringGrid и tDrawGrid
- •6.1.1. Сортировка массива
- •6.1.2. Проект «Таблица успеваемости»
- •6.1.3. Система предварительной продажи билетов
- •6.1.4. Проект «Таблица рисунков»
- •6.1.5. Рисование в таблице tDrawGrid
- •6.2. Компоненты tListBox, tCombobox ,
- •6.2.1. Прорисовка изображений в списке tListBox
- •6.2.2. Проект «Зоомагазин»
- •6.2.3. Проект «Шуточная игра»
- •6.2.4. Проект «Редактирование списка вопросов»
- •Глава 7
- •7.1. Тест «Знаете ли вы загадки?»
- •7.2. Проект «Исторические даты»
- •Глава 8
- •8.1. Компоненты tOpenDialog, tSaveDialog – диалоги
- •8.1.1. Просмотр текстовых файлов
- •8.2. Добавление и удаление записей в файл и из файла
- •8.2.1. Проект «Журнал группы»
- •8.3. Файлы для проекта «Судоку»
- •Глава 9
- •9.1. Просмотр видеофильма с использованием
- •9.2. Простейшая мультипликация
- •Глава 10
- •10.1. Пример использования try… except
- •Глава 11
- •11.1. Оформление проекта
- •11.1.1. Проект «Бегущая строка»
- •11.1.2. Проект «Титры»
- •11.1.3. Общие рекомендации по оформлению
- •11.2. Рекомендации для отчета по проекту
- •11.3. Темы проектов
- •11.3.1. Головоломка «Сквэрворд»
- •11.3.2. Задача «Путешествие по маршруту»
- •11.3.3. Головоломка «Ходом коня»
- •11.3.4. Задача «Извилистый путь»
- •11.3.5. Головоломка «Фишки на поле»
- •Список литературы
- •630058, Новосибирск, ул. Русская, 35
9.2. Простейшая мультипликация
Постановка задачи. Создайте программу для показа кадров баннера, чтобы получился мультфильм (рис. 51).
Рис. 51. Мультфильм «Танцующий пират»
Реализация. Создайте несколько рисунков (в данном примере шесть), отличающихся друг от друга, как в мультфильмах. Сохраните их в одном bmp-файле (рисунки следуют один за другим по горизонтали, как показано на рис. 52).
Рис. 52. Баннер для мультфильма
Положите на форму таймер и кнопку для запуска. Ниже полностью приведен код всех процедур программы.
const
filmfile = 'Пираты1.bmp';
n_kadr = 6;
var
film : TBitMap;
wkadr, hkadr, ckadr : integer;
rectkadr, rectscr : TRect;
procedure TForm1.FormCreate(Sender: TObject);
begin
film := TBitMap.Create;
film.LoadFromFile(filmfile);
wkadr := round(film.Width / n_kadr);
hkadr := film.Height;
film.Transparent := true;
film.TransparentColor:=film.Canvas.Pixels[1,1];
rectscr := bounds(100, 100, wkadr, hkadr);
ckadr := 0;
Timer1.Interval := 150;
Timer1.Enabled := false;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
begin
rectkadr := bounds(wkadr*ckadr, 0, wkadr, hkadr);
Form1.Canvas.CopyRect(rectscr, film.Canvas, rectkadr);
ckadr := ckadr + 1;
if ckadr = n_kadr then
ckadr := 0;
end;
procedure TForm1.BitBtn1Click(Sender: TObject);
begin
timer1.Enabled := true;
end;
Глава 10
Обработка ошибок времени выполнения программы
10.1. Пример использования try… except
Постановка задачи. Демонстрация обработки исключения (ошибки времени выполнения программы) при помощи инструкции try ... except.
Реализация. Для примера введем два числа: расстояние и время. Требуется вычислить скорость. Положите на форму несколько надписей, как показано на рис. 53, два поля TEdit для ввода чисел и кнопку «Вычислить».
Рис. 53. Пример использования try… except
При вводе чисел могут быть сделаны следующие ошибки:
не задано время;
дробная часть числа отделена точкой, а не запятой;
набраны не цифры.
На следующей странице приведен код обработчика кнопки «Вычислить» с учетом возможных ошибок.
procedure TForm1.Button1Click(Sender: TObject);
var
s : real; // путь
t : real; // время
v : real; // скорость
begin
Label6.Caption := ''; // очищаем поле результата
try
{ Инструкции, которые могут вызвать исключение (ошибку)
StrToFloat – функция, которая преобразует строку символов в вещественное число }
s := StrToFloat(Edit1.Text);
t := StrToFloat(Edit2.Text);
v := s/t;
except
on EZeroDivide do // Деление на ноль
begin
ShowMessage(' Время не может быть равно нулю!');
exit;
end;
on EConvertError do // Невозможно преобразовать строку
// символов в число
begin
ShowMessage('Путь и время должны быть заданы числом' + #13 + 'При записи дробного числа используйте запятую');
exit;
end;
end;
Label6.caption:=FloatToStr(v)+' м/с'; // Вывод результата расчета
end;