Приставки
Nintendo (Dendy)
Nintendo 64
Sega Genesis
Sega CD / 32x
Master System
Super Nintendo
Turbo Grafx 16
Sega Saturn
Sony PlayStation
GameBoy Advance
GameBoy / Color
Game Gear
Atari
Другие

Утилиты
Системные утилиты
GoodXXXX
Sega CD / 32x
Nintendo 64
Переводы, хакинг
Музыка

Мир приставочных игр

Версия 2.00a

Leonis © 2002-2009
Команда Новости Помощь Ссылки
ПОМОЩЬ
Литература про игры
Предыдущая Следующая

□ Random.Next(int32, int32) - этот вид метода с двумя параметрами позволяет задавать диапазон от выбранного минимального числа до максимального числа. Например, вызов метода со значениями Next(15, 2 0) задаст диапазон для случайного числа в пределах от 15 до 20.

Класс Random и метод Next() нам будут необходимы для задания новой позиции на экране монитора в методе MoveSprite() класса Game1. Это новый метод, который добавляется в текущий проект и выглядит следующим образом:

public void MoveSprite()

{

sprite.spritePosition += sprite.speedSprite;

if (sprite.spritePosition.Y > Window.ClientBounds.Height)

{

sprite.spritePosition = new Vector2(rand.Next(10,

Window.ClientBounds.Width-30 0-sprite.spriteTexture.Width/12),-2 0 0);

}

}

В первой строке кода метода MoveSprite() мы изменяем позицию объекта по оси Y, а значит, перемещаем спрайт на экране сверху вниз. Если развернуть эту строку записи (чтобы вам было понятно), то исходный код движения спрайта будет выглядеть следующим образом:

sprite.spritePosition.X += sprite.speedSprite.X; // где скорость по X равна 0 sprite.spritePosition.Y += sprite.speedSprite.Y; // где скорость по Y равна 6

Такая запись также может иметь место в исходном коде метода MoveSprite(), но представленный первый вариант несколько профессиональнее и быстрее работает.

Оставшиеся три строки кода метода MoveSprite() обрабатывают ситуацию выхода спрайта за пределы экрана с нижней стороны дисплея. Как только позиция спрайта оказывается больше, чем максимальный размер высоты экрана, то в исходном коде метода MoveSprite() происходит вход в конструкцию if/ else , где определяется новая точка вывода спрайта на экран.

116 Движение спрайтов в пространстве

Проект MoveSpriteArray 117

sprite.spritePosition = new Vector2(rand.Next(10,

Window.ClientBounds.Width-30 0-sprite.spriteTexture.Width/12),-2 0 0);

Здесь мы используем метод Next(), с помощью которого при определении координаты по оси X задаем случайное значение в диапазоне от 10 пикселей до Window.ClientBounds.Width — 3 0 0-sprite.spriteTexture.Width/12 или в числовом эквиваленте 1024—300-один фрейм анимационной последовательности пикселей, что позволяет нам при каждом новом определении значения точки вывода спрайта на экран по оси X задавать новое значение в пределах видимой области рамки фона.

С выбором случайных значений для новой позиции спрайта игрок не будет знать, в каком месте должен выводиться спрайт на экран, и впоследствии не сможет приспособиться к вашей игре. Новое место будет всегда неожиданным как для игрока, так, собственно, и для вас, потому что используется метод Next() с двумя параметрами, задающими определенный диапазон значений. Дополнительные 300 пикселей, которые мы отняли от ширины дисплея, отводятся на информационную рамку игры, а также мы отнимаем ширину одного фрейма, дабы спрайт не заходил за саму рамку.


Предыдущая Следующая

Горяченькое

Друзья

Hosted by uCoz