Приставки
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
Команда Новости Помощь Ссылки
ПОМОЩЬ
Литература про игры
Предыдущая Следующая

// Обрабатываем нажатие левой кнопки мыши if(mouseState.LeftButton == ButtonState.Pressed && bbMouse.Intersects(bbCursorGame))

{

this.NewGame(); menuState = false;

}

else if(mouseState.LeftButton == ButtonState.Pressed && bbMouse.Intersects(bbCursorExit))

{

this.Exitf);

}

}

Весь код метода Update() можно разделить на четыре условные части:

1) получение координат курсора мыши;

2) создание трех ограничивающих прямоугольников;

3) пересечение прямоугольников;

4) нажатие пользователем левой клавиши мыши.

Получение координат курсора мыши

mouseState = Mouse.GetState(); mouse.spritePosition.X = mouseState.X; mouse.spritePosition.Y = mouseState.Y

В первой строке этого блока кода мы с помощью системного метода Mouse.GetState() получаем все без исключения текущие состояния мыши, включая местоположение и возможные нажатия кнопок мыши. Полученные данные сохраняются в структурной переменной mouseState.

Затем мы обращаемся к каждой координате курсора мыши по отдельности, а полученные значения сохраняем в позиции спрайта mouse, который у нас в игре представляет графическое изображение курсора мыши. Поскольку весь метод UpdateMouse() циклично вызывается на каждой итерации игрового цикла, то координаты курсора будут постоянно «свежими». Таким образом, мы имеем на руках текущее положение курсора мыши, а в методе Draw() класса Gamel на основе полученных координат будет рисоваться изображение стрелы на экране монитора.

mouse.DrawSprite(spriteßatch);

Создание ограничивающих прямоугольников

bbMouse.Min = new Vector3(mouse.spritePosition.X, mouse.spritePosition.Y, 0);

bbMouse.Max = new Vector3(mouse.spritePosition.X + mouse.spriteTexture.Width,

mouse.spritePosition.Y + mouse.spriteTexture.Height, 0);

bbCursorGame.Min = new Vector3(650, 400, 0); bbCursorGame.Max = new Vector3(950, 500, 0);

bbCursorExit.Min = new Vector3(650, 600, 0); bbCursorExit.Max = new Vector3(950, 700, 0);

Для создания ограничивающих прямоугольников используются структурные переменные bbMouse, bbCursorGame и bbCursorExit структуры BoundingBox, для курсора мыши и двух табличек Игра и Выход. Ограничивающий прямоугольник курсора мыши мы рисуем в соответствии с текущими координатами курсора

186 Создаем игровое меню

Проект MenuCursor 187

и размером изображения стрелы. Для задания координат и размера прямоугольников табличек были использованы простые целочисленные значения. Таблички у нас отчасти статичны и сильно не изменяют своего расположения на экране, поэтому достаточно задать максимальные значения по горизонтали и вертикали для каждой из табличек. Если вам не нравится привязанность к целочисленным переменным, то можно дополнительно описать код, использующий точные размеры и координаты табличек, так, как это было сделано для курсора мыши.


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

Горяченькое

Друзья

Hosted by uCoz