Книжная полка Сохранить
Размер шрифта:
А
А
А
|  Шрифт:
Arial
Times
|  Интервал:
Стандартный
Средний
Большой
|  Цвет сайта:
Ц
Ц
Ц
Ц
Ц

Практикум прикладного программирования на C# в среде VS.NET 2008

Покупка
Артикул: 834346.01.99
Доступ онлайн
1 000 ₽
В корзину
В курсе представлена коллекция лабораторных работ, знакомящих с приемами практического применения технологий программирования XNA, WPF, ADO.NET и Crystal Reports в среде VS.NET 2008. Материалы использованных публикаций оформлены в виде справочных сведений, пошаговых инструкций и подробных комментариев к выполняемым действиям и коду C#. Стремительная революция .NET требует незамедлительной популяризации ее достижений при подготовке современных специалистов, что не позволило автору пройти мимо замечательных работ по XNA (см. ссылки) без желания представить этот материал для ознакомления студентам. Интегрированные в среду VS.NET 2008 средства ADO.NET и Crystal Reports дают возможность получить законченные приложения по управлению базами данных и генерации отчетов, чему также посвящены несколько работ курса. И наконец, основы новой и еще слабо освещенной технологии WPF рассматриваются в заключительной части. Здесь затронуты вопросы работы с графикой, текстом и потоковыми документами, маршрутизированными событиями, командами, логическими ресурсами, а также различные стороны привязки данных. Каждое изучаемое средство программирования заканчивается практическим упражнением или большим примером, наглядно демонстрирующим возможности функционирования обсуждаемых механизмов.
Снетков, В. М. Практикум прикладного программирования на C# в среде VS.NET 2008 : краткий курс / В. М. Снетков. - Москва : ИНТУИТ, 2016. - 1264 с. - Текст : электронный. - URL: https://znanium.ru/catalog/product/2156506 (дата обращения: 30.11.2024). – Режим доступа: по подписке.
Фрагмент текстового слоя документа размещен для индексирующих роботов

                                    
Практикум прикладного программирования на C# в
среде VS.NET 2008

2-е издание, исправленное

Снетков В.М.

Национальный Открытый Университет “ИНТУИТ”
2016

2

Практикум прикладного программирования на C# в среде VS.NET 2008/ В.М. Снетков - М.:
Национальный Открытый Университет “ИНТУИТ”, 2016

В курсе представлена коллекция лабораторных работ, знакомящих с приемами практического
применения технологий программирования XNA, WPF, ADO.NET и Crystal Reports в среде VS.NET
2008. Материалы использованных публикаций оформлены в виде справочных сведений, пошаговых
инструкций и подробных комментариев к выполняемым действиям и коду C#.
Стремительная революция .NET требует незамедлительной популяризации ее достижений при
подготовке современных специалистов, что не позволило автору пройти мимо замечательных работ
по XNA (см. ссылки) без желания представить этот материал для ознакомления студентам.
Интегрированные в среду VS.NET 2008 средства ADO.NET и Crystal Reports дают возможность
получить законченные приложения по управлению базами данных и генерации отчетов, чему также
посвящены несколько работ курса. И наконец, основы новой и еще слабо освещенной технологии
WPF рассматриваются в заключительной части. Здесь затронуты вопросы работы с графикой,
текстом и потоковыми документами, маршрутизированными событиями, командами, логическими
ресурсами, а также различные стороны привязки данных. Каждое изучаемое средство
программирования заканчивается практическим упражнением или большим примером, наглядно
демонстрирующим возможности функционирования обсуждаемых механизмов.

(c) ООО “ИНТУИТ.РУ”, 2010-2016
(c) Снетков В.М., 2010-2016

3

Компьютерная 2D-графика в Microsoft XNA Game Studio 3.0

В данной лабораторной работе мы последовательно спроектируем 2D - игру,
приведенную в источнике Горнаков С.Г. Разработка компьютерных игр под Windows в
XNA Game Studio Express. - М.: ДМК Пресс, 2007, - 384 с.

Эта игра называется ” Летящие в прерии ” и ее упрощенная легенда заключается в том,
что потерпел крушение самолет над прериями, а задача игрока - спасти как можно
больше объектов, падающих с неба.

Специализированный пакет для разработки игровых приложений от Microsoft, который
называется XNA Game Studio 3.0, содержит набор классов, представляющих собой
упаковку управляемого DirectX и существенно упрощающего программирование игр.
Пакет XNA Game Studio 3.0 интегрируется в оболочку Microsoft Visual Studio 2008 как
бесплатное дополнение.

Все необходимые для выполнения данной работы файлы можно найти в прилагаемом
каталоге скачать: http://old.intuit.ru/department/se/prcsharp08/1/Setup.zip (кроме Visual
Studio 2008 ), а также скачать по следующим ссылкам:

XNAGS30_setup.exe (62.5 MB): ссылка:
http://www.microsoft.com/downloads/details.aspx?FamilyId=7D70D6ED-1EDD-4852-98839A33C0AD8FEE&displaylang=en - http://www.microsoft.com/downloads/details.aspx?
FamilyId=7D70D6ED-1EDD-4852-9883-9A33C0AD8FEE&displaylang=en

dotnetfx3setup.exe (2.8 MB): ссылка: http://www.microsoft.com/downloads/details.aspx?
displaylang=en&FamilyID=10cc340b-f857-4a14-83f5-25634c3bf043 http://www.microsoft.com/downloads/details.aspx?displaylang=en&FamilyID=10cc340bf857-4a14-83f5-25634c3bf043

xnafx30_redist.msi (7.6 MB): ссылка: http://www.microsoft.com/downloads/details.aspx?
familyid=6521d889-5414-49b8-ab32-e3fff05a4c50&displaylang=en http://www.microsoft.com/downloads/details.aspx?familyid=6521d889-5414-49b8-ab32e3fff05a4c50&displaylang=en

simsetup_r.exe (1.42 Mb): ссылка: http://ru.sminstall.com/ - http://ru.sminstall.com/

Lab58_Install.exe (2.8 MB): Установочный пакет - должен получиться в результате
выполнения лабораторной работы

и их можно использовать только в учебных целях!!!

Игровая терминология

(С сайта: ссылка: http://www.xnadev.ru/articles.php?article_id=36 http://www.xnadev.ru/articles.php?article_id=36)

Игровая терминология складывается под сильным влиянием англоязычных названий.

4

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

Sprite – этот термин часто заменяют русскоязычным неологизмом спрайт – словарь
Lingvo 12 определяет понятие “спрайт” как “элемент динамического графического
отображения”. В игровой индустрии синонимами слова спрайт являются такие слова,
как “изображение”, “картинка”, иногда пользуются словом “текстура”, однако обычно
это понятие несет несколько иную смысловую нагрузку. Как правило спрайт – это
двумерное изображение, причем, в узком смысле слова это – лишь изображение, а в
широком – это игровой объект, который обладает гораздо более широким набором
возможностей, нежели обычное изображение. Спрайты имеют прямоугольную форму,
однако в компьютерных играх часто встречаются непрямоугольные объекты. Это
достигается за счет задавания прозрачных областей при рисовании спрайта. Термин
“анимированный спрайт” относится к спрайту, который выводится с использованием
анимации, создающей иллюзию движения, перемещения каких-либо частей
изображения – движение рук и ног персонажа при перемещении, движение колёс
автомобиля, лопастей пропеллеров самолёта и т.д. Анимация обычно реализуется
поочередной сменой нескольких статичных изображений, специально подготовленных
для того, чтобы создать иллюзию движения.

Texture – текстура. Обычно текстурами называют двумерные изображения, которые
“накладывают” на трехмерные модели. В терминологии XNA понятие текстуры и
спрайта при разговоре о двумерных игровых объектах совпадает.

Background – фон. Так называется изображение, обычно – соответствующее размерами
размерам игрового поля, которое является фоном для других изображений. Фон может
быть неподвижным и подвижным. Подвижный фон (scrolling background) используется
в играх, называемых скроллерами (scrollers). Скроллинг – это один из принятых
игровых терминов. Он означает прокрутку, перемещение содержимого окна.
Скроллинговые игры чрезвычайно распространены среди двумерных игр. Например,
использование скроллингового фона позволяет создать иллюзию движения в
двумерном гоночном симуляторе. Фон в двумерной игре может состоять из нескольких
частей, движущихся с различной скоростью – это позволяет создать эффект
трехмерности игрового мира.

2D-game – двумерная игра – игра, в которой использованы двумерные изображения.

3D-game – трёхмерная игра – использующая трехмерные модели и трехмерный
игровой мир.

Tile – тайл – небольшое изображение, которое используется для конструирования
уровней в играх. Tile можно перевести как “мозаика” или “черепица”.

Polygone (полигон, многоугольник) – пространственный многоугольник, который
используется для создания трехмерных объектов. Как правило, в компьютерной

5

графике используются треугольники.

Pixel (пиксель) – наименьший элемент растрового изображения, точка, отображаемая
на экране. Обычно в пикселях измеряют разрешение текстур (например – 1024х768),
экранное разрешение монитора, размеры игровых окон. Слово Pixel – это аббревитура
от Picture’s ELement.

Texel (тексель) – точка текстуры в трехмерном пространстве.Слово Texel – это
сокращение от Texture Element.

Voxel (воксель) – точка трехмерного изображения. Это слово – аббревиатура от
Volumetric Pixel – объемный пиксель.

Texture Filtering (фильтрация текстур) – уменьшение искажений при наложении
текстур на трехмерный объект.

Camera (камера) – так называют точку в игровом пространстве, с которой игрок видит
игровой мир. С точки зрения положения камеры игры можно подразделить на игры от
первого лица (камера расположена так, что реализует вид как бы “из глаз” персонажа),
игры с видом слева-сверху (стратегии), игры с видом сзади – камера располагается
обычно позади игрока и немного выше его. Существуют и игры, где камера может
принимать различные позиции, например, реализующие вид из глаз персонажа и вид
сзади

Transparency (прозрачность) – прозрачными могут быть части двумерных изображений
– это позволяет создавать изображения сложной формы, которые, фактически,
ограничены прямоугольником. Прозрачными бывают и объекты в трехмерном игровом
мире – например – это может быть прозрачная вода или стекло, определенным образом
преломляющие свет.

Light Model (модель освещения) – способы моделирования освещения объектов.

Создание заготовки приложения

Замечание. Некоторые программы могут неверно работать, если проектам и папкам
назначать имена, написанные кириллицей, содержащие пробелы или неалфавитноцифровые символы. Поэтому, если создавать каталоги и проекты латинскими буквами,
то можно гарантированно избежать разного рода ошибок при компиляции проекта.

Запустите установочный пакет XNAGS30_setup.exe, расположенный в

прилагаемом к работе каталоге Setup, чтобы интегрировать библиотеку XNA
Game Studio 3.0 в уже установленную оболочку Microsoft Visual Studio 2008

Запустите Microsoft Visual Studio 2008 с интегрированным в нее пакетом XNA

Game Studio 3.0

Командой File/New/Project вызовите диалоговое окно New Project, выберите

шаблон типа Windows Game и заполните его согласно снимка

6

Обратите внимание на значение выпадающего списка в правом верхнем углу окна.
Поскольку библиотека XNA Framework предоставляет компоненты только игровой
составляющей, а основной средой исполнения является библиотека .NET Framework,
сразу настроим проект на использование версии .NET Framework 3.0 как наиболее
распространенной в ближайшем будущем. Это позволит охватить большее количество
потенциальных пользователей нашего продукта. Хотя в конечном итоге нам, для
подстраховки, все равно придется включать в установочный диск программы вместе с
инсталляционным пакетом игры также и пакеты с установщиками библиотек .NET
Framework 3.0 и XNA Framework 3.0.

Оболочка создаст заготовку проекта с именем Game2D и со всеми необходимыми для
начальной разработки файлами и подключенными библиотеками.

7

Файл Game1.cs содержит основной класс игры. Он не имеет графического
представления в режиме Design, как в случае классических приложений типа Windows
Application, и предполагает последовательное развитие кодовой части только
инструментами языка C# совместно с библиотечными типами. В начале файла
размещается код подключения необходимых пространств имен, как в обычных
приложениях на C#

using System;
using System.Collections.Generic;

using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;
using Microsoft.Xna.Framework.Net;
using Microsoft.Xna.Framework.Storage;

Заготовка класса Game1, сгенерированная оболочкой, имеет структуру, приведенную на
снимке

8

Обратите внимание, что основной класс игры Game1 расширяет базовый библиотечный
класс Game точно также, как в приложениях на базе Windows Forms наследуется
библиотечный класс Form. Пять защищенных методов базового класса Game
перекрываются заготовками, а также автоматически создается публичный конструктор
по умолчанию, в котором выполняется инициализация графического устройства
(программируемого конвейера).

Все сгенерированные оболочкой методы вызываются автоматически при наступлении
определенных событий. Задача разработчика игры - заполнить их нужным кодом. При
этом важно понимать, в каком порядке вызываются эти методы средой исполнения
кода. Если в каждый из методов класса Game1 добавить код

System.Diagnostics.Debug.WriteLine("Имя_метода()");

и открыть панель Output командой View/Output, то после кратковременного запуска
программы получим примерно такой результат

Game1()
Initialize()
LoadContent()
Update()
Draw()
Draw()
Draw()
Update()
Draw()
Update()
Draw()
Update()
Draw()

9

Draw()
Update()
Draw()
..........
Update()
Draw()
Update()
Draw()
Update()
Draw()
UnloadContent()

Конструктор класса Game1() и метод Initialize() во многих случаях
взаимозаменяемы, но только после того, как будет создан главный объект приложения

graphics. Сюда добавляется код для выполнения действий, которые нужно выполнить
всего один раз при запуске игрового приложения, например, прописать заголовок окна
в случае использования оконного (а не полноэкранного) режима.

Добавьте в конец метода Game1() код присвоения заголовка окна и его

размеров, чтобы конструктор стал таким

public Game1()
{
    graphics = new GraphicsDeviceManager(this);
    Content.RootDirectory = "Content";
    // Включается стандартный курсор мыши !!!!!!!!!!!!!!!!!!!!!!!!!
    // this.IsMouseVisible = true;

    this.Window.Title = "Оконное приложение игры";
    graphics.PreferredBackBufferWidth = 300;
    graphics.PreferredBackBufferHeight = 300 * 2 / 3;
}

Запустите заготовку приложения, созданную мастером, и получится примерно

следующий результат

Метод LoadContent() выполняет загрузку графического содержимого игры, включая

10

Доступ онлайн
1 000 ₽
В корзину