Лекция 7 Раздел 7.1 Windows Phone Темы раздела 3.

Презентация:



Advertisements
Похожие презентации
Фрагмент карты градостроительного зонирования территории города Новосибирска Масштаб 1 : 4500 к решению Совета депутатов города Новосибирска от
Advertisements

Таблица умножения на 8. Разработан: Бычкуновой О.В. г.Красноярск год.
Масштаб 1 : Приложение 1 к решению Совета депутатов города Новосибирска от _____________ ______.
Масштаб 1 : Приложение 1 к решению Совета депутатов города Новосибирска от
ЦИФРЫ ОДИН 11 ДВА 2 ТРИ 3 ЧЕТЫРЕ 4 ПЯТЬ 5 ШЕСТЬ 6.
Фрагмент карты градостроительного зонирования территории города Новосибирска Масштаб 1 : 6000 Приложение 7 к решению Совета депутатов города Новосибирска.

27 апреля группадисциплина% ДЕ 1МП-12Английский язык57 2МП-34Экономика92 3МП-39Психология и педагогика55 4МП-39Электротехника и электроника82 5П-21Информатика.
1. Определить последовательность проезда перекрестка
1 Знаток математики Тренажер Таблица умножения 2 класс Школа 21 века ®м®м.
Лекция 2 Раздел 2.1 Windows Phone Темы раздела 3.
Результаты работы 5а класса Кл. руководитель: Белобородова Н. С. Показатель 0123 Обучаемость 1-6%4-25%8-50%3-18 Навыки смыслового чтения 1-6%12-75%3-18%
Анализ результатов краевых диагностических работ по русскому языку в 11-х классах в учебном году.
Работа учащегося 7Б класса Толгского Андрея. Каждое натуральное число, больше единицы, делится, по крайней мере, на два числа: на 1 и на само себя. Если.
27 апреля группадисциплина% ДЕ 1МП-12Английский язык57 2МП-34Экономика92 3МП-39Психология и педагогика55 4МП-39Электротехника и электроника82 5П-21Информатика.
Ул.Школьная Схема с. Вознесенка Ярославского городского поселения п.Ярославский 10 2 Ул.Флюоритовая
Матемтааки ЕТ СТ 2 класс Шипилова Наталия Викторовна учитель начальных классов, ВКК Шипилова Наталия Викторовна учитель начальных классов, ВКК.
Д. Дуброво д. Бортниково с. Никульское д. Подлужье д. Бакунино пос. Радужный - Песчаный карьер ООО ССП «Черкизово» - Граница сельского поселения - Граница.
Отделение ПФР по Тамбовской области Проведение кампании по повышению пенсионной грамотности молодежи в Тамбовской области в 2011 году 8 февраля 2012 г.
T, °C V, м/с Эквивалентные температуры воздуха в штиль(°С) и скорости ветра (м/с) Опас- ность обморо- жения 02,24,46,68,811,013,316,417,
Транксрипт:

Лекция 7

Раздел 7.1

Windows Phone Темы раздела 3

Windows Phone XNA 4

Windows Phone XNA и Silverlight 5

Windows Phone Проект игры 6

Windows Phone Действия при запуске игры 7

Windows Phone Методы класса XNA Game partial class PongGame : Microsoft.Xna.Framework.Game { protected override void LoadContent (bool loadAllContent) { } protected override void Update(GameTime gameTime) { } protected override void Draw(GameTime gameTime) { } 8

Windows Phone Методы класса XNA Game 9

Windows Phone Загрузка игрового контента protected override void LoadContent() { // создание группы спрайтов, которая можно использовать // для отрисовки текстур spriteBatch = new SpriteBatch(GraphicsDevice); } 10

Windows Phone Загрузка игрового контента ballTexture = Content.Load ("WhiteDot"); 11

Windows Phone Хранение текстуры // игровой мир Texture2D ballTexture; 12

Windows Phone Загрузка текстуры в программу protected override void LoadContent() { // создание группы спрайтов, которая можно использовать // для отрисовки текстур spriteBatch = new SpriteBatch(GraphicsDevice); ballTexture = Content.Load ("WhiteDot"); } 13

Windows Phone Координаты и пиксели 14

Windows Phone Оси координат в XNA 15

Windows Phone Структура Rectangle Rectangle ballRectangle = new Rectangle( 0, 0, ballTexture.Width, ballTexture.Height), Color.White); 16

Windows Phone Метод Draw protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); base.Draw(gameTime); } 17

Windows Phone Группы спрайтов 18

Windows Phone Методы SpriteBatch Begin и End protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); spriteBatch.Begin(); // сюда нужно добавить код для отрисовки объектов spriteBatch.End(); base.Draw(gameTime); } 19

Windows Phone Метод SpriteBatch.Draw spriteBatch.Draw(ballTexture, ballRectangle, Color.White); 20

Windows Phone Настройка положения new Rectangle( 0, 0, ballTexture.Width, ballTexture.Height) new Rectangle( 0, 0, // положение 200,100) // размер new Rectangle( 50, 50, // положение 60, 60) // размер 21

Windows Phone Масштабирование изображения 22

Windows Phone Масштабируемая область ballRectangle = new Rectangle( 0, 0, GraphicsDevice.Viewport.Width / 20, GraphicsDevice.Viewport.Width / 20); 23

Windows Phone Метод Update protected override void Update(GameTime gameTime) { // сюда нужно добавить код для обновления изображения base.Update(gameTime); } 24

Windows Phone Пример метода Update protected override void Update(GameTime gameTime) { ballRectangle.X++; ballRectangle.Y++; base.Update(gameTime); } 25

Windows Phone Краткие итоги 26

Раздел 7.2

Windows Phone Темы раздела 28

Windows Phone Управление движением объекта float ballX = 0; float ballY = 0; ballRectangle.X = (int)(ballX + 0.5f); ballRectangle.Y = (int)(ballY + 0.5f); 29

Windows Phone Перемещение объекта ballX = ballX + ballXSpeed; ballY = ballY + ballYSpeed; 30

Windows Phone Выход за пределы экрана 31

Windows Phone Отскок от границ экрана if (ballX < 0 || ballX + ballRectangle.Width > GraphicsDevice.Viewport.Width) { ballXSpeed = -ballXSpeed; } 32

Windows Phone Игровые переменные // шар Texture2D ballTexture; Rectangle ballRectangle; float ballX; float ballY; float ballXSpeed = 3; float ballYSpeed = 3; // левая платформа Texture2D lPaddleTexture; Rectangle lPaddleRectangle; float lPaddleSpeed = 4; float lPaddleY; // правая платформа создаётся аналогично // расстояние от платформы до границы экрана int margin; 33

Windows Phone Загрузка игровых текстур protected override void LoadContent() { ballTexture = Content.Load ("ball"); lPaddleTexture = Content.Load ("lpaddle"); rPaddleTexture = Content.Load ("rpaddle"); } 34

Windows Phone Настройка платформ margin = GraphicsDevice.Viewport.Width / 20; lPaddleRectangle = new Rectangle( margin, 0, GraphicsDevice.Viewport.Width / 20, GraphicsDevice.Viewport.Height / 5); rPaddleRectangle = new Rectangle( GraphicsDevice.Viewport.Width – lPaddleRectangle.Width - margin, 0, GraphicsDevice.Viewport.Width / 20, GraphicsDevice.Viewport.Height / 5); 35

Windows Phone Управление платформой 36

Windows Phone Класс TouchPanel TouchCollection touches = TouchPanel.GetState(); 37

Windows Phone Информация о сенсорном вводе if (touches.Count > 0) { if (touches[0].Position.Y > GraphicsDevice.Viewport.Height / 2) { lPaddleY = lPaddleY + lPaddleSpeed; } else { lPaddleY = lPaddleY - lPaddleSpeed; } 38

Windows Phone Информация о сенсорном вводе if (touches.Count > 0) { if (touches[0].Position.Y > GraphicsDevice.Viewport.Height / 2) { lPaddleY = lPaddleY + lPaddleSpeed; } else { lPaddleY = lPaddleY - lPaddleSpeed; } 39

Windows Phone Информация о сенсорном вводе if (touches.Count > 0) { if (touches[0].Position.Y > GraphicsDevice.Viewport.Height / 2) { lPaddleY = lPaddleY + lPaddleSpeed; } else { lPaddleY = lPaddleY - lPaddleSpeed; } 40

Windows Phone Информация о сенсорном вводе if (touches.Count > 0) { if (touches[0].Position.Y > GraphicsDevice.Viewport.Height / 2) { lPaddleY = lPaddleY + lPaddleSpeed; } else { lPaddleY = lPaddleY - lPaddleSpeed; } 41

Windows Phone Информация о сенсорном вводе if (touches.Count > 0) { if (touches[0].Position.Y > GraphicsDevice.Viewport.Height / 2) { lPaddleY = lPaddleY + lPaddleSpeed; } else { lPaddleY = lPaddleY - lPaddleSpeed; } 42

Windows Phone Информация о сенсорном вводе if (touches.Count > 0) { if (touches[0].Position.Y > GraphicsDevice.Viewport.Height / 2) { lPaddleY = lPaddleY + lPaddleSpeed; } else { lPaddleY = lPaddleY - lPaddleSpeed; } 43

Windows Phone Обнаружение столкновений if (ballRectangle.Intersects(lPaddleRectangle)) { ballXSpeed = -ballXSpeed; } 44

Windows Phone Добавление шрифта 45

Windows Phone Загрузка шрифта SpriteFont font; protected override void LoadContent() { // остальная часть метода LoadContent font = Content.Load ("MessageFont"); } 46

Windows Phone Отрисовка текста protected override void Draw(GameTime gameTime) { GraphicsDevice.Clear(Color.CornflowerBlue); spriteBatch.Begin(); spriteBatch.DrawString( font, "Hello world", new Vector2(100, 100), Color.White); // остальная часть метода Draw } 47

Windows Phone Краткие итоги 48

Раздел 7.3

Windows Phone Темы раздела 50

Windows Phone Акселерометр 51

Windows Phone Акселерометр в XNA

Windows Phone Добавление библиотеки using Microsoft.Devices.Sensors; 53

Windows Phone Класс Accelerometer Accelerometer acc = new Accelerometer(); acc.ReadingChanged += new EventHandler (acc_ReadingChanged); acc.Start(); 54

Windows Phone Событие класса Accelerometer Vector3 accelState = Vector3.Zero; void acc_ReadingChanged (object sender, AccelerometerReadingEventArgs e) { accelState.X = (float)e.X; accelState.Y = (float)e.Y; accelState.Z = (float)e.Z; } 55

Windows Phone Акселерометр и ориентация 56

Windows Phone Эмуляция акселерометра 57

Windows Phone Многопоточность 58

Windows Phone Возможные проблемы 59

Windows Phone Добавление блокировки 60

Windows Phone Использование блокировки object accelLock = new object(); void acc_ReadingChanged (object sender, AccelerometerReadingEventArgs e) { lock (accelLock) { accelState.X = (float)e.X; accelState.Y = (float)e.Y; accelState.Z = (float)e.Z; } 61

Windows Phone Использование блокировки lock (accelLock) { lPaddleY = lPaddleY - (accelState.X * lPaddleSpeed); } 62

Windows Phone Использование звуков в XNA 63

Windows Phone Загрузка звуков // звуковые эффекты SoundEffect dingSound; SoundEffect explodeSound; protected override void LoadContent() { dingSound = Content.Load ("ding"); explodeSound = Content.Load ("explode"); } 64

Windows Phone Воспроизведение звука if (ballY GraphicsDevice.Viewport.Height) { ballYSpeed = -ballYSpeed; dingSound.Play(); } 65

Windows Phone Класс SoundEffectInstance engineInstance = engineSound.CreateInstance(); 66

Windows Phone Воспроизведение звука engineInstance.Play();... engineInstance.Pause();... engineInstance.Stop(); 67

Windows Phone Управление звуком engineInstance.Volume = accelVector.Length() / volFactor; engineInstance.Pitch = accelVector.Length() / soundFactor; engineInstance.Pan = 0; 68

Windows Phone Состояние воспроизведения if (engineInstance.State == SoundState.Stopped) { engineInstance.Play(); } 69

Windows Phone Воспроизведение звуковых эффектов в Silverlight 70

Windows Phone Добавление XNA в приложение Silverlight 71

Windows Phone Загрузка звуков 72 Beep = SoundEffect.FromStream( TitleContainer.OpenStream("Sounds/beep.wav"));

Windows Phone Воспроизведение звука 73 beep.Play();

Windows Phone Обновление XNA 74 DispatcherTimer timer = new DispatcherTimer(); timer.Tick += new EventHandler(timer_Tick); timer.Interval = TimeSpan.FromTicks(333333); timer.Start(); void timer_Tick(object sender, EventArgs e) { FrameworkDispatcher.Update(); }

Windows Phone Выбор разрешения экрана 75

Windows Phone Полноэкранный режим 76

Windows Phone Отмена блокировки экрана Guide.IsScreenSaverEnabled = false; 77

Windows Phone Краткие итоги 78

Раздел

Windows Phone Темы раздела 80

Windows Phone XNA и Silverlight 81

Windows Phone Комбинированное решение 82

Windows Phone Страница игры XNA 83

Windows Phone Переход на страницу игры private void Button_Click(object sender, RoutedEventArgs e) { NavigationService.Navigate(new Uri("/GamePage.xaml", UriKind.Relative)); } 84

Windows Phone Страница игры protected override void OnNavigatedTo(NavigationEventArgs e) protected override void OnNavigatedFrom(NavigationEventArgs e) private void OnUpdate(object sender, GameTimerEventArgs e) private void OnDraw(object sender, GameTimerEventArgs e) 85

Windows Phone Элементы Silverlight в XNA 86

Windows Phone Добавление элементов Silverlight 87

Windows Phone Рендеринг элементов Silverlight UIElementRenderer elementRenderer; 88

Windows Phone Создание объекта для рендеринга if (null == elementRenderer) { elementRenderer = new UIElementRenderer(this, (int)ActualWidth, (int)ActualHeight); } 89

Windows Phone Рендеринг элементов Silverlight elementRenderer.Render();... spriteBatch.Draw(elementRenderer.Texture, Vector2.Zero, Color.White); 90

Windows Phone Краткие итоги 91