Задание к лабораторной работе. 4.2.1 Создать звездное небо, звезды мерцают

4.2.1 Создать звездное небо, звезды мерцают. Включение эффекта «Мерцание» создается с помощью кнопок: таймер запускается и отключается. При срабатывании прерывания от таймера будет происходить мерцание. Звезды расположены в таблице в местах, которые при сквозном подсчете являются квадратом некоторого числа. Условием этого является: if frac(sqrt(k))=0. Цвет неба – черный, а звезды – белые.

План разработки программы:

1) Разместить на форме экземпляры компонентов DrawGrid, Timer и три кнопки в соответствии с рисунком 4.1.

2) Выделить объект DrawGrid 1, установить свойства

DefaultColWidth – 3;

DefaultRowHeight 3;

DefaultDrawing - false;

GridLineWidth 0;

ColCount 175;

RowCount 105;

BorderStyle BsNone.

3) Выделить компонент Timer и установить значение свойства interval равным 100;

4) Активизировать кнопку start и в обработчик события записать команду:

timer1.Enabled:=true;

происходит включение таймера – звезды мерцают.

5) Активизировать кнопку stop и в обработчик события записать команду:

timer1.Enabled:=false;

происходит отключение таймера, звезды перестают мерцать.

6) Активизировать кнопку «Закрыть» и в обработчик события OnClick вставить строку:

close;

7) Активизировать таймер и в обработчик события записать следующие команды:

DrawGrid1.Canvas.Brush.Color:=clBlack; {макаем кисть в черную краску}

for i:=0 to 174 do

for j:=0 to 104 do

begin

area:= DrawGrid1.CellRect(j,i); {выделяем ячейку}

drawGrid1.Canvas.FillRect(area);{закрашиваем небо}

end;

k:=-1;

DrawGrid1.Canvas.Brush.Color:=clWhite;

for i:=0 to 174 do

for j:=0 to 104 do

begin

inc(k);

if frac(sqrt(k))=0 then {условие того, что ячейка

является звездочкой}

begin

area:= DrawGrid1.CellRect(j,i);

{присваивается области area

положение текущей ячейки}

drawGrid1.Canvas.FillRect(area);{закрашиваем звездочку

белым цветом}

end;

end;

Примечание: при вызове функции CellRect, определяющей прямоугольник этой ячейки, сначала указывается индекс столбца, а затем – индекс строки. Закрашивание всегда происходит текущим цветом кисти. Кисть - Canvas.Brush.Color.

Рисунок. 4.1

4.2.2 В целочисленной матрице А(5,5) поменять местами второй и четвертый столбец. Решить двумя способами: используя свойство Cellsи свойство Rows.

План разработки программы:

1) со страницы Additional поместить два компонента StringGrid и со страницы Standard поместить три компонента Button в соответствии с рисунком 4.2;

2) задать свойствам компонентов StringGrid следующие значения

ColCount - 5;

RowCount - 5;

FixedCols – 0;.

FixedRows – 0;

Options – goEditing – true;

3) для компонентов Button1, Button2, Button3 задать значения свойства Caption так, как показано на рисунке;

4) активизировать кнопку Start1.З задача будет решаться при помощи свойства Cells. Создать следующий обработчик события OnClick

var i,j:integer;

begin

for j:=0 to 4 do

if (j<>1)and (j<>3) then

for i:=0 to 4 do

StringGrid2.Cells[j,i]:=StringGrid1.Cells[j,i];

for i:=0 to 4 do

begin

StringGrid2.Cells[1,i]:=StringGrid1.Cells[3,i];

StringGrid2.Cells[3,i]:=StringGrid1.Cells[1,i];

end;

end;

5) активизировать кнопку Start2. З задача будет решаться при помощи свойства Cols. Создать следующий обработчик события OnClick:

begin

stringgrid2.Cols[0]:=stringgrid1.Cols[0];

stringgrid2.Cols[1]:=stringgrid1.Cols[3];

stringgrid2.Cols[2]:=stringgrid1.Cols[2];

stringgrid2.Cols[3]:=stringgrid1.Cols[1];

stringgrid2.Cols[4]:=stringgrid1.Cols[4];

end;

6) активизировать кнопку Clear для очистки второй таблицы. Создать следующий обработчик события OnClick:

var i,j:integer;

begin

for i:=0 to 4 do

for j:=0 to 4 do

StringGrid2.Cells[j,i]:=' ';

7) активизировать кнопку Close, как в предыдущих заданиях.

8) сохранить проект в папке StringGrid: File – Save All. Запустить проект на выполнение.

Рисунок 4.2

Контрольные вопросы

4.3.1 Перечислить основные свойства компонента DrawGrid.

4.3.2 Что означает флаг goEditing?

4.3.3 Какие следует выполнить действия, чтобы на этапе выполнения программы можно было редактировать ячейки?

4.3.4 Как происходит обращение к ячейке, расположенной на пересечении строки i и столбца j?

4.3.5 Какую следует выполнить команду, что «обмакнуть кисть в белую краску»?

Варианты заданий

1. В задании «Звездное небо», изменяя функцию, получить разные узоры.

2. Используя компонент DrawGrid, вывести мерцающую надпись.

3. Используя компонент DrawGrid, создать фейерверк.

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

5. Дан массив, в котором хранятся данные о расписании поездов: номер поезда, название (откуда-куда, например, Орел-Курск), время прибытия на станцию, время отправления (часы, минуты). Будем считать, что все поезда приходят каждый день. По данному времени определить, какие из поездов стоят сейчас на станции (время вводить с клавиатуры).

6. Дан массив, в котором хранятся данные о полете самолетов: название пункта назначения рейса, номер рейса, тип самолета. Вывести на экран номера рейсов и типы самолетов, вылетающих в пункт назначения, название которого совпало с названием, введенным с клавиатуры. Если таких рейсов нет, выдать на дисплей соответствующее сообщение.

7. Дан массив, в котором хранятся сведения о товарах: название товара, название магазина, в котором продается товар, стоимость товара в тенге. Вывести на экран информацию о товарах, продающихся в магазине, название которого введено с клавиатуры. Если такого магазина нет, выдать соответствующее сообщение.

8. Дан массив, в котором хранятся сведения о плательщиках и получателях: расчетный счет плательщика, имя плательщика, расчетный счет получателя, имя получателя, перечисляемая сумма. Вывести на экран информации о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры. Если такого расчетного счета нет, выдать соответствующее сообщение.

9. Даны сведения: фамилия, имя, знак зодиака, дата рождения (массив из трех чисел). Вывести информацию о человеке, чья фамилия введена с клавиатуры.

10. Даны сведения: фамилия, имя, знак зодиака, дата рождения (массив из трех чисел). Вывести информацию о людях, родившихся под знаком, название которого введено с клавиатуры.

11. Даны сведения: фамилия, имя, знак зодиака, дата рождения (массив из трех чисел). Вывести информацию о людях, родившихся в месяц, название которого введено с клавиатуры.

12. Дан массив, в котором хранятся сведения о товарах: название товара, название магазина, в котором продается товар, стоимость товара в тенге. Вывести на экран информацию о товаре, название которого введено с клавиатуры. Если таких товаров нет, выдать соответствующее сообщение.

13. Дан массив, в котором хранятся сведения о товарах: название товара, название магазина, в котором продается товар, стоимость товара в тенге. Вывести на экран информацию о товарах, продающихся в магазине, название которого введено с клавиатуры. Если такого магазина нет, выдать соответствующее сообщение.

14. Дан массив, в котором хранятся сведения о плательщиках и получателях: расчетный счет плательщика, имя плательщика, расчетный счет получателя, имя получателя, перечисляемая сумма. Вывести на экран информации о сумме, снятой с расчетного счета плательщика, введенного с клавиатуры. Если такого расчетного счета нет, выдать соответствующее сообщение.

15. Дан массив данных о работающих в фирме: фамилия, имя, отчество, адрес (улица, дом, квартира) и дата поступления на работу (месяц, год).во второй массив записать только данные тех из них, кто на сегодняшний день проработал уже не менее 5 лет.


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: