Читайте также:
|
|
Постановка задачи. Требуется на поле в клеточку вывести определенное число растровых рисунков. Например, на поле 5 х 5 выведите 6 одинаковых рисунков в случайном месте. Примерный вид картинки приведен на рис. 13.
Реализация. В стандартном графическом редакторе Paint нарисуйте два или три небольших рисунка размером, например, 30 на 30 пикселей. Сохраните их в папке «Рисунки», в ней же сохраните проект. Допустим, наш рисунок сохранен в файле ris.bmp.
Рис.13. Растровый рисунок на поле
Опишем глобальные переменные.
const n=5;
x0=10;
y0=10;
Type Tpole=array[1..n,1..n] of integer;
var a:TPole;
bit1:TBitmap;
dx,dy:integer;
Напишем процедуру сlear для заполнения массива нулями и процедуру zapoln для заполнения массива m единицами.
procedure clear(var b:TPole);
var i,j:integer;
begin
for i:=1 to n do
for j:=1 to n do
b[i,j]:=0;
end;
procedure zapoln(var b:TPole; m:integer);
// m – число единичек в массиве b
var i,j,k:integer;
begin
for i:=1 to m do
begin
repeat
k:=1+random(n);
j:=1+random(n);
until b[k,j]=0;
b[k,j]:=1;
end;
end;
Процедура copy_ris копирует растровый рисунок в клетку поля, именно в ту клетку, которой соответствует ненулевой элемент массива.
procedure copy_ris;
var i,j,x,y:integer;
begin
for i:=1 to n do
for j:=1 to n do
begin
x:=x0+(j-1)*dx;
y:=y0+(i-1)*dy;
case a[i,j] of
1:Form1.Canvas.Draw(x+6,y+8,bit1);
end;
end;
end;
В процедуре FormCreate создаем растровый рисунок (переменная bit 1) и загружаем в выделенную память его двоичное представление из файла. Не забудьте инициировать событие формы OnPaint, а в нем выбрать строку FormCreate.
procedure TForm1.FormCreate(Sender: TObject);
begin
randomize;
bit1:=TBitmap.Create; // Создание переменной bit1,
// присвоение ей адреса в динамической памяти
Bit1.LoadFromFile('ris.bmp'); // Загрузка двоичного
// образа из файла по выделенному адресу
Bit1.Transparent:=true; // Значение true делает область
// вывода рисунка на форму прозрачной
dx:=40;
dy:=40;
DrawPole (n, dx, x0, y0); // Поле состоит из квадратиков
clear(a);
zapoln(a,6);
copy_ris;
end;
Задание 1. Нарисуйте второй рисунок, поставьте ему в соответствие элемент массива, равный 2. Также выведите его на поле в случайные клетки.
Задание 2. Проект «Угадай, сколько гепардов» на тренировку памяти. Положите на форму таймер и окно редактора TEdit. Через 3 сек. закрасьте всех гепардов (для этого можно снова вызвать процедуру DrawPole), и программа должна напечатать вопрос «Сколько было гепардов?» Ответ пишите в окне редактора. Организуйте проверку: угадал или не угадал.
Дата добавления: 2015-08-20; просмотров: 90 | Нарушение авторских прав
<== предыдущая страница | | | следующая страница ==> |
Построение графиков элементарных функций | | | Движение двоичного образа по фоновой картинке |