Zanyatie_6_Vzaimodeystvie_obektov.ppt
- Количество слайдов: 9
Основы языка Pascal Взаимодействие объектов
Объединение неуправляемого и управляемого движения Шарик repeat neupr(x 2, y 2, hx, hy, r, yellow); if keypressed then upr(x 1, y 1, sh, vs, h, green); until ch=esc; Ракетка 2
Функции Функция – это вспомогательный алгоритм (подпрограмма), результатом работы которого является некоторое значение. Примеры: • вычисление , , • расчет значений по сложным формулам • ответ на вопрос (выполнены условия или нет? ) Отличия • в заголовке • в теле функции: хотя бы раз имени функции должно быть присвоено значение
Функции Особенности: • заголовок начинается словом function Max (a, b: integer): integer; • формальные параметры описываются так же, как и для процедур function qq( a, b: integer; x: real ): real; • в конце заголовка через двоеточие указывается тип результата function Max (a, b: integer): integer ; • функции располагаются ВЫШЕ основной программы
Функции Особенности: • можно объявлять и использовать локальные переменные function qq (a, b: integer): float; var x, y: float; begin. . . end; • значение, которое является результатом, записывается в переменную, имя которой совпадает с названием функции; объявлять ее НЕ НАДО: function Max (a, b: integer): integer; begin. . . Max : = a; end;
Столкновение шарика и ракетки Условие столкновения двух объектов: (xш, yш) (xр, yр) sh vs if ((xр < xш) and (xш < xр + sh)) and ((abs(yш + r - yр) <= 3) or (abs(yш - r - yр - vs) <= 3) then отскок; Здесь указаны условия отбивания от верхней и нижней грани ракетки, поэтому она должна быть узкой. 6
Проверка function proverka(x 1, y 1, x 2, y 2: integer): boolean; begin if ((x 1 < x 2) and (x 2 < x 1 + sh)) and ((abs(y 2 + r – y 1) <= 3) or (abs(y 2 – r – y 1 - vs) <= 3)) then proverka : = true else proverka : = false; end; repeat neupr(x 2, y 2, hx, hy, r, yellow); if keypressed then upr(x 1, y 1, sh, vs, h, green); if proverka(x 1, y 1, x 2, y 2) then hy: = -hy; until ch=esc; 7
Счёт //---Процедура счёт-------procedure count(x, y, n: integer; col: longint); var s: string; begin setfillstyle(1, black); bar(x, y, x + 50, y + 30); str(n, s); setcolor(col); Стираем предыдущий счёт settextstyle(0, 0, 5); outtextxy(x, y, s); end; //---В главной программе--if proverka(x 1, y 1, x 2, y 2) then begin n : = n + 1; count(10, n, red); end; 8
Задание 1. Соединить неуправляемое движение с управляемым. Шарик + ракетка. 2. Добавить условия отбивания шарика от ракетки. 3. Добавить 2 счёта. Отбитые шары и пропущенные. 4. Добавить Конец игры (Game over). 5. Игра «Лузы» . Подсчёт попаданий для каждой лузы. 6. Игра «Собери шарики» . Подсчет пропущенных и собранных шаров. Луза 1 Луза 2 Счёт1 Счёт2 14
Zanyatie_6_Vzaimodeystvie_obektov.ppt