- •Общие замечания
- •6. Написать программу, которая вычисляет скорость (км/час), с'которой бегун пробежал дистанцию. Рекомендуемый вид формы приведен на рис. 1.3. Количество минут задается целым числом, секунд — дробным.
- •17. Напишите программу "Электронные часы", на поверхности формы которой отображается текущее время (рис. 1.14).
- •18. Напишите программу "Электронные часы", в окне которой отображается текущее время и дата (рис. 1.15).
- •Графика
- •23. Напишите программу, которая на поверхности формы рису ет олимпийский флаг (рис. 1.19).
- •24. Напишите программу, которая на поверхности формы рисует флаг Российской Федерации. .
- •25. Напишите профамму, в диалоговом окне которой, в точке щелчка кнопкой мыши, вычерчивается контур пятиконечной звезды (рис. 1.20).
- •29. Напишите программу, которая на поверхности формы вычерчивает график функции, например 2 sin(X) e*/5. Вид окна во время работы профаммы приведен на рис. 1.25.
- •33. Напишите программу, по поверхности окна которой перемещается графический объект, например кораблик (рис. 1.30). Вид окна программы приведен на рис. 1.31.
- •34. Напишите программу, которая на поверхность формы выво дит изображение идущих часов с часовой, минутной и секунд ной стрелками. Окно и форма приложения приведены на рис. 1.32.
- •35. Напишите программу, которая в диалоговом окне выводит изображение идущих часов с часовой, минутной и секундной стрелками (рис. 1.33).
- •36. Напишите программу, по поверхности формы которой дви жется изображение (рис. 1.34). Изображение перемещающегося объекта и фоновый рисунок (рис. 1.35) должны загружаться из файла.
- •40. Напишите программу, используя которую можно просмот реть иллюстрации, находящиеся в одном из каталогов компью тера. Вид окна программы приведен на рис. 1.40.
- •Мультимедиа
- •45. Напишите программу, используя которую можно прослу шать звуковые файлы Windows. Рекомендуемый вид диалогового окна программы приведен на рис. 1.46.
- •Игры и полезные программы
- •55. Напишите программу "Собери картинку" — аналог игры "15", в которой игрок будет перемещать не цифры, а фрагменты кар тинки (рис. 1.59).
- •62. Напишите программу тестирования, в которой выбор пра вильного ответа осуществляется при помощи переключателя (рис. 1.69).
- •Базы данных
- •68. Напишите программу, используя которую можно подгото вить и распечатать накладную. Рекомендуемый вид формы про граммы приведен на рис. 1.77.
33. Напишите программу, по поверхности окна которой перемещается графический объект, например кораблик (рис. 1.30). Вид окна программы приведен на рис. 1.31.
Рис. 1.30. Кораблик
Рис. 1.31. Простая мультипликация — кораблик, плывущий по морю
unit ship_;interfaceuses Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ExtCtrls;type TForml = class(TForm) Timerl: TTimer; procedure TimerlTimer(Sender: TObject); procedure FormPaint(Sender: TObject); procedure FormCreate(Sender: TObject); private { Private declarations ) public I Public declarations } end;var Forml: TForml;implementation{$R *.DFM} x,y: integer; // координаты корабля (базовой точки)// вычерчивает на поверхности формы кораблик // или стирает его procedure Parohod(x,y: integer; mode: boolean); // x,y — координаты базовой точки кораблика // mode: True — нарисовать, False — стереть const / Базовые точки кораблика находятся в узлах сетки, шаг которой определяет размер кораблика ) dx = 5; // шаг сетки по X dy = 5; // шаг сетки по У var // корпус и надстройку будем рисовать // при помощи метода Polygon pi: array[1..7]of TPoint; // координаты точек корпуса р2: array[1..8]of TPoint; // координаты точек надстройки pc,bc: TColor; // текущей цвет карандаша и кистиbegin if not mode then begin // стереть Forml.Canvas.Brush.Color := clNavy; Forml.Canvas.Pen.Color : = ClNavy; Forml.Canvas.Rectangle(x,y+l,x+17*dx,y-10*dy); Forml.Canvas.Brush.Color := clNavy; // небо if y-10*dy < 80 then begin // конец мачты на фоне неба Forml.Canvas.Pen.Color := clSkyBlue; Forml.Canvas.Brush.Color := ClSkyBlue; Forml.Canvas.Rectangle(x,y-10*dy,x+17*dx,80); end; exit; end; // рисуем with Forml.Canvas do begin pc := Pen.Color; // сохраним текущий цвет карандаша be := Brush.Color; // и кисти Pen.Color := clBlack; // установим нужный цвет Brush.Color := clWhite; // рисуем . . . // корпус pl[i]-х = х; Pl [1] -У = y; pl[2] .х = х; Pl [2].Y = y-2 *dy, pi[3].х =x+10*dx; Pl [3] .Y - y-2 *dy, pl[4] .X =x+ll*dx; pl [4].Y = y-3 +dy, pl[5] .X =x+17*dx; pl [5].Y = y-3 *dy, р1[б] .X =x+14*dx; Pl [6] .Y = y; pl[7].X =x; Pl [7].Y ¦ У'' Polygon(pl); // надстройка p2[l].X := x+3*dx; p2[l].Y := y-2*dy; p2[2].X := x+4*dx; p2[2].Y := y-3*dy; р2[3].Х = x+4*dx; p2[3].Y = y-4*dy; р2[4] .X = x+13*dx; p2[4].Y = y-4*dy; р2[5].Х = x+13*dx; p2[5].Y = y-3*dy; р2[6].Х = x+ll*dx; p2[6].Y = y-3*dy; р2[7].Х = x+10*dx; p2[7].Y = y-2*dy; р2[8].Х = x+3*dx; p2[8].Y = y-2*dy; Polygon(p2); MoveTo(x+5*dx,y-3*dy) ; LineTo(x+9*dx,y-3*dy); // капитанский мостик Rectangle(x+8*dx,y-4*dy,x+ll*dx,y-5*dy); // труба Rectangle(x+7*dx,y-4*dy,x+8*dx,y-7*dy) ; // иллюминаторы Ellipse(x+ll*dx,y-2*dy,x+12*dx,y-l*dy) ; Ellipse(x+13*dx,y-2*dy,x+14*dx,y-l*dy); // мачта MoveTo(x+10*dx,y-5*dy); LineTo(x+10*dx,y-10*dy); // оснастка • Pen.Color := clwhite; MoveTo(x+17*dx,y-3*dy); LineTo(x+10*dx,y-10*dy) ; LineTo(x,y-2*dy) ; Pen.Color := pc; // восстановим старый цвет карандаша end; end;// обработка сигнала таймера procedure TForml.TimerlTimer(Sender: TObject); begin Parohod(x,y, False); // стереть рисунок if x < Forml.ClientWidth then x := x+2 else begin // новый рейс x := 0; у :- Random(50) + 100; end; Parohod(x,y,True); // нарисовать в новой точке end; procedure TForml.FormPaint(Sender: TObject); begin // небо Canvas.Brush.Color := clSkyBlue; Canvas.Pen.Color := clSkyBlue; Canvas.Rectangle(0,0,ClientWidth, 80) ; end;procedure TForml.FormCreate(Sender: TObj ect); begin x:=0; y:=80; // исходное положение парохода Forml.Color:=clNavy; // цвет моря Timerl.Interval := 50; // сигнал таймера каждые 50 мсек end;end.
