Часть III. Практическое применение Arduino
Листинг 25.11
//****************** движение объекта-цифры
void go_object()
{
for(int i=0;i{
if(FIGURA[i][0]>0)
{
TV.set_cursor(FIGURA[i][1]*4,FIGURA[i][2]*6);
TV.print(" ");
if(FIGURA[i][2]{
FIGURA[i][2]++;
TV.set_cursor(FIGURA[i][1]*4,FIGURA[i][2]*6);
TV.print(FIGURA[i][0]);
}
else
{
TV.tone(294,200);
change_balls(FIGURA[i][0]*(-1));
FIGURA[i][0]=0;
GAME1.count_objects--;
}
}
}
}
25.6.4. Проверка столкновения "игрока"
и объектов-цифр
При перемещении символа "игрока" по экрану необходимо проверять его столкно-
вения с объектами-цифрами. Для этого используем функцию
collision()
. После
установки символа, соответствующего "игроку", проверяем элементы массива
FIGURA
на соответствие координат объектов-цифр координатам символа "игрока".
При совпадении координат выполняем следующие действия:
1.
Уничтожается объект-цифра из массива
FIGURA
(запись
0
в
FIGURA[[i][0]
).
2.
Уменьшается на 1 счетчик количества объектов-цифр (
GAME.count_objects
).
3.
Производится изменение счетчика количества баллов "игрока" (вызов функции
change_balls())
.
Содержимое функции
collision()
представлено в листинге 25.12.
Глава 25. TV-выход на Arduino
345
Листинг 25.12
//****************** проверка столкновения
void collision()
{
for(int i=0;i{
if(FIGURA[i][0]>0)
{
if(FIGURA[i][1]==GAME1.xk && FIGURA[i][2]==GAME1.yk)
{
TV.tone(740,200);
if(FIGURA[i][0]==GAME1.tekCursor)
change_balls(GAME1.tekCursor*GAME1.tekCursor);
else if(FIGURA[i][0]>GAME1.tekCursor && GAME1.level>3)
change_balls(FIGURA[i][0]*(-1));
else
change_balls(FIGURA[i][0]+GAME1.tekCursor);
FIGURA[i][0]=0;
GAME1.count_objects--;
}
}
}
}
В функцию изменения счетчика количества баллов "игрока"
change_balls()
в каче-
стве аргумента передается число, на которое следует увеличить (уменьшить) счет-
чик баллов "игрока". Это число равно сумме объекта-цифры и цифры "игрока".
Если цифра "игрока" равняется цифре объекта-цифры, то передается значение, рав-
ное произведению цифр. Как отмечалось ранее, для повышения сложности игры
с 4-го уровня столкновение "игрока" с объектом-цифрой приводит не только к уве-
личению счетчика "игрока", но и к уменьшению его — если цифра "игрока" мень-
ше цифры объекта-цифры.
25.6.5. Счетчик баллов "игрока"
Функция
change_balls()
производит изменение счетчика баллов "игрока" на вели-
чину входящего аргумента. Если счетчик количества баллов становится меньше 0,
игра заканчивается, экран очищается и осуществляется переход на начало игры.
Кроме того, при достижении счетчиком определенных значений, выполняется
переход игры на новый, более высокий, уровень. Установку значений для но-
вого уровня выполняет функция
new_level()
. Содержимое функции
change_balls()
представлено в листинге 25.13.
346
Do'stlaringiz bilan baham: |