Студопедия
Случайная страница | ТОМ-1 | ТОМ-2 | ТОМ-3
АрхитектураБиологияГеографияДругоеИностранные языки
ИнформатикаИсторияКультураЛитератураМатематика
МедицинаМеханикаОбразованиеОхрана трудаПедагогика
ПолитикаПравоПрограммированиеПсихологияРелигия
СоциологияСпортСтроительствоФизикаФилософия
ФинансыХимияЭкологияЭкономикаЭлектроника

В случайных местах

Введение | Глава 1 | Рисование узоров | Рисование поля для различных игр | Для построения графиков | В динамических приложениях | Перемещение картинок | События от мыши | Движение образа по удерживанию левой кнопки мыши | Код клавиши |


Читайте также:
  1. В период правления Павла I штаты прокуратуры (как в центре, так и на местах) были значительно сокращены.
  2. Важной формой участия граждан в осуществлении власти на местах является местное самоуправление.
  3. Воздействие случайных сигналов на линейные стационарные цепи
  4. Воздействие стационарных случайных сигналов на безынерционные нелинейные цепи
  5. Грязь, которая в этих местах цепко прилипает к мостовой, нарастал, как
  6. Два или более случайные величины, описывающих некоторое явление называют системой или комплексом случайных величин.

Постановка задачи. Требуется на поле в клеточку вывести определенное число растровых рисунков. Например, на поле 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 | Нарушение авторских прав


<== предыдущая страница | следующая страница ==>
Построение графиков элементарных функций| Движение двоичного образа по фоновой картинке

mybiblioteka.su - 2015-2024 год. (0.006 сек.)