|
|
В этом уроке мы покажем, как
отслеживать счет игры для игрока и монстра, а также как перемещать игрока и
монстра в новое положение, когда их поражает снаряд или ракета.
Gosub
PlaceMonster Мы поместили две команды "Gosub" до основного цикла. Соответствующие подпрограммы помещают игрока и монстра на случайные позиции матрицы. PlaceMonster: Position object 3,mX#,mY#,mZ# Return Подпрограмма "PlaceMonster", предназначенная для установки случайных координат монстра на матрице, первоначально устанавливает для монстра те же координаты, что и координаты игрока и затем проверяет, чтобы монстр и игрок находились на достаточном расстоянии друг от друга. Первоначальная установка одинаковых координат является необходимым условием для генерации случайной позиции. В тексте этой подпрограммы мы используем цикл "While", чтобы обеспечить определенное условие: цикл повторяется до тех пор, пока расстояние между игроком и монстром не станет больше 1600. Для вычисления расстояния между игроком и монстром мы используем формулу вычисления расстояний из урока по математическому столкновению. Если расстояние меньше 1600, снова выполняется код поиска позиции. Новая случайная позиция рассчитывается и сохраняется в переменных положения монстра. Когда расстояние между игроком и монстром становится больше 1600, цикл завершается и монстр помещается в новом месте. PlacePlayer: While
Sqrt((X# - mX#)^2 + (Y#+25 - mY#)^2 + (Z# - mZ#)^2)<1000
Position camera X#,Y#,Z# Подпрограмма "PlacePlayer" аналогична подпрограмме "PlaceMonster". Различие только в том, что мы помещаем на матрицу игрока, а не монстра. Мы также направляем камеру в сторону монстра, чтобы его было легче найти. set
cursor 550,20 Этот код помещается внутри основного цикла. Используя команду "Set cursor", помещаем текст в правой части экрана. В позиции курсора выводим слова "MScore" и "PScore", чтобы показать игровой счет монстра и игрока. Затем выводим значения переменных "MonsterScore" и "PlayerScore". if
Sqrt((mX# - bX#)^2 + (mY#+25 - bY#)^2 + (mZ# - bZ#)^2)
<20 Эта часть кода из подпрограммы
"ShootBullet", которая проверяет, был ли монстр поражен снарядом игрока. Мы
добавили в сравнение "If" две строки кода. Если монстр был поражен, вызывается
подпрограмма "PlaceMonster", чтобы поместить его в новом месте. Затем мы
увеличиваем счет игры в пользу игрока, изменяя переменную "PlayerScore" при
помощи команды "Inc". Pdist=Sqrt((X# - MbX#)^2 + (Y#+25 - MbY#)^2 + (Z# -
MbZ#)^2) Эта часть кода из подпрограммы "MonsterShootBullet", которая, как и предыдущая, проверяет, был ли поражен игрок ракетой монстра. В случае поражения, вызывается подпрограмма "PlacePlayer", помещающая игрока в новом месте. После этого мы увеличиваем счет игры в пользу монстра при помощи команды "Inc" и возвращаемся в подпрограмму "MonsterShootBullet". |