Основы языка Pascal
229.50K
Category: programmingprogramming

Взаимодействие объектов

1. Основы языка Pascal

Взаимодействие объектов

2.

Объединение неуправляемого и управляемого движения
Шарик
repeat
neupr(x2, y2, hx, hy, r, yellow);
if keypressed then
upr(x1, y1, sh, vs, h, green);
until ch=esc;
Ракетка
2

3.

Функции
Функция – это вспомогательный алгоритм (подпрограмма),
результатом работы которого является некоторое значение.
Примеры:
• вычисление sin x, cos x, x
• расчет значений по сложным формулам
• ответ на вопрос (выполнены условия или нет?)
Отличия
• в заголовке
• в теле функции: хотя бы раз имени функции должно быть
присвоено значение

4.

Функции
Особенности:
• заголовок начинается словом function
function Max (a, b: integer): integer;
• формальные параметры описываются так же, как и для
процедур
function qq( a, b: integer; x: real ): real;
• в конце заголовка через двоеточие указывается тип результата
function Max (a, b: integer): integer ;
• функции располагаются ВЫШЕ основной программы

5.

Функции
Особенности:
• можно объявлять и использовать локальные переменные
function qq (a, b: integer): float;
var x, y: float;
begin
...
end;
• значение, которое является результатом, записывается в
переменную, имя которой совпадает с названием функции;
объявлять ее НЕ НАДО:
function Max (a, b: integer): integer;
begin
...
Max := a;
end;

6.

Столкновение шарика и ракетки
Условие столкновения
двух объектов:
(xш,yш)
(xр,yр)
vs
sh
if ((xр < xш) and (xш < xр + sh)) and
((abs(yш + r - yр) <= 3) or (abs(yш - r - yр - vs) <= 3)
then отскок;
Здесь указаны условия отбивания от верхней и нижней
грани ракетки, поэтому она должна быть узкой.
6

7.

Проверка
function proverka(x1, y1, x2, y2: integer): boolean;
begin
if ((x1 < x2) and (x2 < x1 + sh)) and
((abs(y2 + r – y1) <= 3) or (abs(y2 – r – y1 - vs) <= 3))
then
proverka := true
else
proverka := false;
end;
repeat
neupr(x2, y2, hx, hy, r, yellow);
if keypressed then
upr(x1, y1, sh, vs, h, green);
if proverka(x1, y1, x2, y2) then hy:= -hy;
until ch=esc;
7

8.

Счёт
//---Процедура счёт-------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(x1, y1, x2, y2) then
begin
n := n + 1;
count(10, 10, n, red);
end;
8

9.

Задание
1. Соединить неуправляемое движение с
управляемым. Шарик + ракетка.
2. Добавить условия отбивания шарика
от ракетки.
3. Добавить 2 счёта. Отбитые шары и
пропущенные.
4. Добавить Конец игры (Game over).
5. Игра «Лузы». Подсчёт попаданий
для каждой лузы.
6. Игра «Собери шарики». Подсчет
пропущенных и собранных шаров.
Луза1
Луза2
Счёт1
Счёт2
14
English     Русский Rules