Предыдущая Следующая
Решать эту проблему можно многими способами, а не только тем способом, что я вам показал. Можно добавить еще одну конструкцию операторов if/else и менять состояние переменной cursorState, как только курсор мыши убирается с одной из табличек, либо отказаться от этой переменной вовсе и слегка усложнить весь код.
Полный исходный код класса Gamel вы найдете в листинге 12.3, а код проекта MenuCursor - на компакт-диске в папке Code\Chapter12\MenuCursor. Дополнительно я добавил в исходный код механизм, изменяющий скорость падающих предметов после их столкновения с платформой и нижней частью экрана.
//=========================================================================
/// <summary>
/// Листинг 12.3
/// Исходный код к книге:
/// "Программирование компьютерных игр под Windows в XNA Game Studio Express" /// Автор книги: Горнаков С. Г.
/// Глава l2
/// Проект: MenuCursor /// Класс: Gamel /// Работа с мышей /// <summary>
//=========================================================================
#region Using Statements using System;
using System.Collections.Generic; using Microsoft.Xna.Framework; using Microsoft.Xna.Framework.Audio; using Microsoft.Xna.Framework.Content; using Microsoft.Xna.Framework.Graphics; using Microsoft.Xna.Framework.Input;
188 Создаем игровое меню
using Microsoft.Xna.Framework.Storage; #endregion
namespace MenuCursor
{
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics; ContentManager content; KeyboardState keyboardState; SpriteBatch spriteBatch; Sprite[] sprite = new Sprite[5]; private Texture2D background1; private Texture2D background2; Random rand = new Random(); int j = 0; Sprite platform; private bool paused = false; private bool pauseKeyDown = false; public BoundingBox bbplatform;
public BoundingBox[] bb = new BoundingBox[5]; BitmapFont font;
int score0, score1, score2, score3, score4; Menu menu;
private bool menuState; private int cursorState;
Sprite mouse; MouseState mouseState; public BoundingBox bbMouse; public BoundingBox bbCursorGame; public BoundingBox bbCursorExit;
/// <summary> /// Конструктор /// <summary> public Game1()
{
graphics = new GraphicsDeviceManager(this); content = new ContentManager(Services); graphics.PreferredBackBufferWidth = 1024; graphics.PreferredBackBufferHeight = 7 68; graphics.PreferMultiSampling = false; graphics.IsFullScreen = true; for (int i = 0; sprite.Length > i; Предыдущая Следующая
|