Студопедия

КАТЕГОРИИ:


Архитектура-(3434)Астрономия-(809)Биология-(7483)Биотехнологии-(1457)Военное дело-(14632)Высокие технологии-(1363)География-(913)Геология-(1438)Государство-(451)Демография-(1065)Дом-(47672)Журналистика и СМИ-(912)Изобретательство-(14524)Иностранные языки-(4268)Информатика-(17799)Искусство-(1338)История-(13644)Компьютеры-(11121)Косметика-(55)Кулинария-(373)Культура-(8427)Лингвистика-(374)Литература-(1642)Маркетинг-(23702)Математика-(16968)Машиностроение-(1700)Медицина-(12668)Менеджмент-(24684)Механика-(15423)Науковедение-(506)Образование-(11852)Охрана труда-(3308)Педагогика-(5571)Полиграфия-(1312)Политика-(7869)Право-(5454)Приборостроение-(1369)Программирование-(2801)Производство-(97182)Промышленность-(8706)Психология-(18388)Религия-(3217)Связь-(10668)Сельское хозяйство-(299)Социология-(6455)Спорт-(42831)Строительство-(4793)Торговля-(5050)Транспорт-(2929)Туризм-(1568)Физика-(3942)Философия-(17015)Финансы-(26596)Химия-(22929)Экология-(12095)Экономика-(9961)Электроника-(8441)Электротехника-(4623)Энергетика-(12629)Юриспруденция-(1492)Ядерная техника-(1748)

Практическая работа № 13 Перемещение рисунка




Begin

Листинг подпрограммы

 

procedure TForm1.FormCreate(Sender: TObject); var i, j: Integer;

Randomize;

for i:= 1 to size do {инициализация массива пикселов} for i:= 1 to size do

Points[i, j]:= 1 + Random (csize); {Минимально возможное значение элемента массива равно 1}

end;

procedure TForm1.Timer1Timer (Sender: TObject); var i, j: Integer;

c, l, r, u, d: Integer;

newPoints: array [1..size, 1..size] of Integer; begin

{Вычислить, какого цвета будет клетка на следующем шаге} for i:= 1 to size do

for j:= 1 to size do begin

c:= Points[i, j] + 1;{Вычисляется «следующий цвет» и запоминается в переменной с} if c > csize then c:= 1; {После последнего цвета идет первый}

{Вычисляются индексы для клеток, примыкающих к данной сверху, снизу, слева и справа. Края узора как бы «склеены» друг с другом}

u:= i – 1;

if u = 0 then u:= size;d:= i + 1;

if d > size then d:= 1;l:= j – 1;

if l = 0 then l:= size;r:= j + 1;

if r > size then r:= 1;

 

newPoints [i, j]:= Points [i, j]; {Если среди «соседей» цвет отсутствует, то клетка остается без изменений}

 

{Если хотя бы один из «соседей» имеет такой цвет, клетка перекрашивается} if (Points [u, j] = c) or (Points [d, j] = c) or (Points [i, l] = c) or (Points [i, r] = c)

 

then newPoints [i, j]:= c;

end;

c:= 320 div size; {Выбирается размер клетки так, чтобы узор занимал, по возможности, всю область рисования}

{Обновляется узор на экране} for i:= 1 to size do

for j:= 1 to size do begin

Points [i, j]:= newPoints [i, j];

{Настроить цвет контура прямоугольника и цвет закраски} PaintBox1.Canvas.Pen.Color:= Colors[Points[i, j]]; PaintBox1.Canvas.Brush.Color:= Colors[Points[i, j]]; {Выполнить рисование}

 

PaintBox1.Canvas.Rectangle (c*(i - 1), c*(j - 1), c*i – 1, c*j – 1);

{Параметры метода Rectangle подобраны так, чтобы между клетками оставался небольшой зазор. Чтобы клетки располагались вплотную друг к другу, заменить

 

(c*(i - 1), c*(j - 1), c*i – 1, c*j – 1) на (c*(i - 1), c*(j - 1), c*i, c*j } end;

 

end;


 


 

Цель работы -создать программу,в которой на поверхности окна перемещаетсяслучайным образом изображение веселой рожицы. Пользователь должен сделать щелчок кнопкой мыши по изображению. Программа должна завершить работу после того, как пользователь сделает 10 щелчков кнопкой мыши.

Начало игры осуществляется по нажатию на кнопку Ok.

Свойство WordWrap компонента Label – признак того, что слова, которые не помещаются в текущей строке, автоматически переносятся на следующую строку (значение свойства AutoSize должно быть False).

 

Рис. 56.

 

Листинг программы:

 

unit Unit1;

 




Поделиться с друзьями:


Дата добавления: 2017-02-01; Просмотров: 66; Нарушение авторских прав?; Мы поможем в написании вашей работы!


Нам важно ваше мнение! Был ли полезен опубликованный материал? Да | Нет



studopedia.su - Студопедия (2013 - 2024) год. Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав! Последнее добавление




Генерация страницы за: 0.007 сек.