Спонсор: Microsoft
Опубликован: 10.04.2009 | Уровень: специалист | Доступ: платный
Самостоятельная работа 9:

Оформление игры

В листинге 13.6. вы можете найти код класса HelpScreen.

using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Storage;
using Microsoft.Xna.Framework.Content;

namespace P9_2
{
    //Экран справки
    public class HelpScreen : Screen 
    {
        //Текстуры для фона и справочной надписи
        Texture2D backTexture;
        Rectangle backRectangle;
        Texture2D helpTexture;
        Rectangle helpRectangle;

        public HelpScreen(Game game, Texture2D _back, Texture2D _help, Rectangle _backRec, Rectangle _helpRec)
            : base(game)
        {
            backTexture = _back;
            helpTexture = _help;
            backRectangle = _backRec;
            helpRectangle = _helpRec;
        }
        public override void Draw(GameTime gameTime)
        {
            //Выводим изображения
            sprBatch.Draw(backTexture, backRectangle, Color.White);
            sprBatch.Draw(helpTexture, helpRectangle, Color.White);
            base.Draw(gameTime);
        }
        
    }
}
Листинг 13.6. Код класса HelpScreen

На рис. 13.7. вы можете видеть игровой экран.

Игровой экран

увеличить изображение
Рис. 13.7. Игровой экран

В листинге 13.7. приведен код игрового экрана – класса GameScreen. Мы использовали простой код для перемещения объекта из проекта P3_4.

using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Storage;
using Microsoft.Xna.Framework.Content;

namespace P9_2
{
    //Игровой экран

    public class GameScreen :Screen
    {
        private Texture2D sprTexture;
        private Rectangle sprRectangle;
        private Vector2 sprPosition;
        private Rectangle scrBounds;


        public GameScreen(Game game, ref Texture2D newTexture,
            Rectangle newRectangle, Vector2 newPosition)
            : base(game)
        {
            sprTexture = newTexture;
            sprRectangle = newRectangle;
            sprPosition = newPosition;
            scrBounds = new Rectangle(0, 0,
                game.Window.ClientBounds.Width,
                game.Window.ClientBounds.Height);
        }

        public override void Initialize()
        {
            // TODO: Add your initialization code here

            base.Initialize();
        }

        public override void Update(GameTime gameTime)
        {

                KeyboardState kbState = Keyboard.GetState();
                if (kbState.IsKeyDown(Keys.Up))
                {
                    sprPosition.Y -= 5;
                }
                if (kbState.IsKeyDown(Keys.Down))
                {
                    sprPosition.Y += 5;
                }
                if (kbState.IsKeyDown(Keys.Left))
                {
                    sprPosition.X -= 5;
                }
                if (kbState.IsKeyDown(Keys.Right))
                {
                    sprPosition.X += 5;
                }

                if (sprPosition.X < scrBounds.Left)
                {
                    sprPosition.X = scrBounds.Left;
                }
                if (sprPosition.X > scrBounds.Width - sprRectangle.Width)
                {
                    sprPosition.X = scrBounds.Width - sprRectangle.Width;
                }
                if (sprPosition.Y < scrBounds.Top)
                {
                    sprPosition.Y = scrBounds.Top;
                }
                if (sprPosition.Y > scrBounds.Height - sprRectangle.Height)
                {
                    sprPosition.Y = scrBounds.Height - sprRectangle.Height;
                }

                base.Update(gameTime);
            
        }
        public override void Draw(GameTime gameTime)
        {
            sprBatch.Draw(sprTexture, sprPosition, sprRectangle, Color.White);
            base.Draw(gameTime);
        }
    }
}
Листинг 13.7. Код класса GameScreen

Задание

Создайте систему игровых экранов и меню, которым можно управлять с помощью мыши и клавиатуры.

Alina Lasskaja
Alina Lasskaja

Быть может кто-то из Вас знает игру Sims, к какому жанру она относиться? Жизненная симуляция, ролевая игра, там можно и дома строить.....

Дмитрий Кацман
Дмитрий Кацман
Израиль
Андрей Веденин
Андрей Веденин
Россия, Белгород