Жарков В.А. Компьютерная графика, мультимедиа и игры на Visual C# 2005. – М.: Жарков Пресс, 2005. – 812 с. — КиберПедия 

История развития хранилищ для нефти: Первые склады нефти появились в XVII веке. Они представляли собой землянные ямы-амбара глубиной 4…5 м...

Общие условия выбора системы дренажа: Система дренажа выбирается в зависимости от характера защищаемого...

Жарков В.А. Компьютерная графика, мультимедиа и игры на Visual C# 2005. – М.: Жарков Пресс, 2005. – 812 с.

2017-05-23 629
Жарков В.А. Компьютерная графика, мультимедиа и игры на Visual C# 2005. – М.: Жарков Пресс, 2005. – 812 с. 0.00 из 5.00 0 оценок
Заказать работу

Валерий Алексеевич Жарков

 

 

Компьютерная графика,

Мультимедиа и игры

на

Visual C# 2005

 

 

(Листинги программ на компакт-диске)

 

 

Москва

«Жарков Пресс»

 

 


УДК 681.3. ББК 32.973 Ж35 ISBN 5-94212-009-9

Жарков В.А. Компьютерная графика, мультимедиа и игры на Visual C# 2005. – М.: Жарков Пресс, 2005. – 812 с.

Это первая в мире книга по новейшей версии языка Visual C# 2005 из платформы Visual Studio 2005, которую издательство “Жарков Пресс” получило непосредственно от корпорации Microsoft. Разработаны методологии создания вычислительных систем, двухмерной и трехмерной графики, мультимедиа, анимации, мультипликации, аудио, видео и игр на основе Visual C# 2005 с использованием новейшей версии технологии DirectX 9.0c. Впервые в мире приведены тексты мощных программ на языках Visual C#, Visual Basic и Visual C++ версий 2002, 2003, 2004 и 2005 годов для построения и управления разнообразными трехмерными телами, поверхностями и линиями уровней этих поверхностей в трехмерном про­стран­стве. Применен новый синтаксис Visual C++ 2005. Мульти­медийные приложения и игры основаны на технологии Microsoft Agent, которая позволяет создавать и включать в Windows и Web-приложения интерактивные (через голосовые команды в микрофон) анимационные персонажи. Тексты всех программ даны также и на компакт-диске.

Для построения вычислительных и графических систем использована интеграция Visual C# 2005 с Visual Basic 2005 и Visual C++ 2005 с новым синтаксисом, а также с Excel, Word, Access, SQL Server, Windows Media Player и др. Дано введение в программирование мобильных устройств, Web-программирование и Web-службы. Представлены не имеющие аналогов в мире программы анимации и мульти­пликации. Даны концепции визуального программирования, методологии проектирования и применения на практике, в учебе и науке таких систем. 2D и 3D графика. Воспроизведение аудио, видео и мультимедиа. Базы данных и системы управления ими. Системы компьютерной математики. Персональные и корпоративные вычислительные системы. Расчеты поверхности, объема и массы типичных изделий. Оптимальный раскрой материалов. Аналитическое и численное математическое моделирование. Решение задач и расчеты методом конечных элементов (МКЭ). Системы компьютерного проектирования техпроцессов (CAD/CAM system). Упругость, пластичность, механика деформирования и обработка давлением материалов. Приведена методика передачи пользователю разработанных нами приложений. Все программы из книги и из компакт-диска могут быть вставлены в различные приложения VS 2005, VS 2004, VS.NET 2003 и VS.NET 2002 и прекрасно работать.

Предназначена для всех желающих быстро изучить новейший самый современный, совершенный и перспективный (в мире программирования) язык высокого уровня Visual C#, сразу же создавать на этом языке последних версий Visual C# 2005, Visual C# 2004, Visual C#.NET 2003 и Visual C#.NET 2002 мощные профессиональные приложения и применять их на практике в разнообразных сферах деятельности. Также адресована начинающим и опытным пользователям, программистам любой квалификации, инженерно-техническим работникам, конст­рук­то­рам, технологам, математикам и механикам, а также учащимся и слушателям курсов, студентам, аспирантам, учителям, препо­дава­те­лям, научным работникам и ученым.

Все права защищены. Никакая часть этой книги не может быть воспроизведена в какой бы то ни было форме без письменного разрешения издательства. Лицензия на издательскую деятельность: Серия ИД № 02107 от 21 июня 2000 г. Печать офсетная. Бумага офсетная. Заказ 365. Отпечатано в типографии ООО “Алвиан”: 115583, Москва, ул. Генерала Белова, 26.

ã В.А. Жарков, 2005

ISBN 5-94212-009-9 ã Издательство “Жарков Пресс”, 2005


 

Оглавление

Введение. 10

Часть I. Краткие основы Visual C#. 11

Глава 1. Основные определения книги.. 11

Глава 2. Методика разработки приложений для выполнения расчетов с эффектами анимации 12

Глава 3. Методика разработки приложений на нескольких формах. 16

Часть II. Методология проектирования графики и печати на принтере 18

Глава 4. Краткие сведения о графических возможностях Visual Studio. 18

Глава 5. Рисование простых линий на форме или элементах управления и печать этих линий 19

Глава 6. Рисование сложных линий и печать всей формы как снимка экрана. 22

Глава 7. Рисование заполненных фигур и печать всей формы с предварительным просмотром 25

Глава 8. Рисование текста и печать текстового файла. 26

Часть III. Методология вычислений на основе Visual C# с использованием эффектов анимации.. 28

Глава 9. Методика создания вычислительной системы.. 28

Глава 10. Арифметические вычисления. 29

Глава 11. Разработка стандартного калькулятора. 31

Глава 12. Вычисление процентов. 35

Глава 13. Степени, корни, логарифмы и факториалы.. 37

Часть IV. Методология вычислений на основе интеграции Visual C# с другими платформами.. 40

Глава 14. Использование в Visual C# программ из Excel 40

Глава 15. Вычисление сложных математических выражений.. 41

Часть V. Интеграция Visual C# с Word.. 43

Глава 16. Оглавление приложения по использованию методов Word. 43

Глава 17. Запуск Word, добавление нового и открытие существующего документа 44

Часть VI. Получение расчетных параметров из баз данных Access 45

Глава 18. Оглавление приложения по использованию Access. 45

Глава 19. Открытие Access. 46

Часть VII. Создание баз данных и интеграция с другими СУБД 47

Глава 20. Создание баз и наборов данных. 47

Глава 21. Архитектура доступа к данным ADO.NET.. 48

Глава 22. Разработка баз данных при помощи шаблонов. 50

Часть VIII. Методология создания графической системы в двухмерном пространстве.. 51

Глава 23. Алгоритмы и оглавление графической системы.. 51

Глава 24. График линейной функции.. 52

Глава 25. Графики типичных функций.. 60

Глава 26. Рисование при помощи перемещения мыши.. 63

Глава 27. Рисование линий при помощи нажатия кнопки мыши.. 65

Глава 28. Рисование прямоугольников и эллипсов при помощи нажатия кнопки мыши 67

Глава 29. Рисование заполненных прямоугольников и эллипсов при помощи нажатия кнопки мыши 69

Глава 30. Непрерывный график-осциллограмма и его проверка при помощи диспетчера задач и файла подкачки 71

Часть IX. Методология создания графической системы в трехмерном пространстве.. 73

Глава 31. Теория и алгоритмы системы.. 73

Глава 32. Методика создания графической системы на основе интеграции Visual C# с Visual Basic, Visual C++ и другими языками.. 74

Глава 33. Изображение и управление трехмерными объектами в трехмерном пространстве 75

Глава 34. Изображение и управление трехмерными объектами в трехмерном пространстве на Visual Basic для интеграции с Visual C# и другими языками.. 91

Глава 35. Изображение объектов в трехмерном пространстве на Visual C# по данным из проекта на Visual Basic 110

Глава 36. Изображение объектов в трехмерном пространстве на основе нового синтаксиса Visual C++ 2005 113

Глава 37. Изображение и управление поверхностями в трехмерном пространстве 116

Глава 38. Изображение и управление поверхностями в трехмерном пространстве на Visual Basic для интеграции с Visual C#, Visual C++ и другими языками.. 126

Глава 39. Изображение поверхностей в трехмерном пространстве на основе нового синтаксиса Visual C++ 2005 136

Глава 40. Расчет и изображение линий уровня на поверхности.. 139

 

Глава 41. Расчет и изображение линий уровня поверхности на Visual Basic для интеграции с Visual C#, Visual C++ и другими языками.. 143

Глава 42. Изображение линий уровня поверхности на основе нового синтаксиса Visual C++ 2005 149

Глава 43. Изображение объектов на Visual C#, Visual Basic и Visual C++ на основе интеграции по методике “компонент - клиент”. 151

Часть X. Методология создания анимационной трехмерной графики на основе новых версий Visual C# и DirectX.. 155

Глава 44. Методика проектирования неподвижных и подвижных плоских фигур 155

Глава 45. Методика проектирования неподвижных и подвижных пространственных фигур 167

Часть XI. Методология разработки мультимедиа и игр на основе Microsoft Agent.. 176

Глава 46. Загрузка и установка компонентов Microsoft Agent 176

Глава 47. Методика управления мультипликационными персонажами.. 177

Глава 48. Вывод на экран выступлений и анимаций всех персонажей.. 189

Глава 49. Методика создания компьютерных игр и мультфильмов. 200

Глава 50. Пример Интернет-магазина на основе Microsoft Agent 204

Глава 51. Построение графика по точкам эксперимента и интеграция с мультипликационными персонажами MS Agent 205

Часть XII. Методология анимации объектов.. 211

Глава 52. Оглавление системы программ для анимации объектов. 211

Глава 53. Варианты часов с цифровой индикацией, индикаторами прогресса и датой 212

Глава 54. Вращение линии.. 214

Глава 55. Управляемое вращение линии.. 216

Глава 56. Управляемое вращение и перемещение фигуры.. 218

Глава 57. Управляемое заполнение фигур. 221

Глава 58. Управляемый мигающий текст. 223

Глава 59. Методика изображения летающих предметов. 224

Глава 60. Методика анимации градиентного заполнения текста цветом.. 231

Глава 61. Вращающееся градиентное заполнение фигур цветом.. 237

Глава 62. Изображение кругов на воде с использованием двойной буферизации 238

Глава 63. Анимация текста в консольном приложении.. 240

Часть XIII. Методология создания, конвертирования и мультипликации изображений на форме.. 242

Глава 64. Методика задания, конвертирования и поочередной замены изображений 242

Глава 65. Методика разработки мультипликации.. 245

Глава 66. Разработка мультипликации при помощи списка рисунков. 249

Глава 67. Методика управления цветом изображения. 251

Часть XIV. Воспроизведение аудио и видео.. 256

Глава 68. Оглавление приложения по интеграции Visual C# с Windows Media Player 256

Глава 69. Воспроизведение аудио файлов из приложения Visual С#. 257

Глава 70. Воспроизведение видео файлов из приложения Visual C#. 258

 

Часть XV. Интеграция с Microsoft Windows Explorer, Notepad, WordPad, Calculator, PowerPoint, FrontPage, Internet Explorer и веб-компонентами 259

Глава 71. Открытие Windows Explorer, Notepad, WordPad, Calculator, PowerPoint и FrontPage 259

Глава 72. Интеграция Visual C# с браузером Internet Explorer. 261

Глава 73. Установка веб-компонентов Windows для веб-программирования на основе ASP.NET 263

Часть XVI. Введение в программирование мобильных устройств 264

Глава 74. Программирование портативных и карманных компьютеров. 264

Часть XVII. Приложения Visual C# для использования на практике, например, в промышленности.. 265

Глава 75. Алгоритмы для расчета площади, объема и массы изделий и заготовок 265

Глава 76. Консольное приложение для расчета массы изделий.. 266

Глава 77. Вычисление массы изделий при помощи формы.. 268

Часть XVIII. Приложения Visual C# для использования в учебе и науке 271

Глава 78. Ввод в систему свойств материалов для изготовления изделий.. 271

Глава 79. Математическое моделирование обработки заготовки при помощи аналитических решений 272

Глава 80. Математическое моделирование обработки заготовки при помощи метода конечных элементов 273

 

 

Глава 81. Математическое моделирование и графика для типичных техпроцессов 274

Глава 82. Методология учета анизотропии материала при проектировании техпроцесса изготовления изделия 275

Глава 83. Методология проектирования техпроцессов изготовления изделий коробчатой формы 276

Часть XIX. Методология создания и внедрения систем компьютерного проектирования.. 277

Глава 84. Оптимизация раскроя материалов. 277

Глава 85. Система компьютерного проектирования техпроцессов. 278

Глава 86. Проектирование заготовительных операций подготовки материала. 280

Глава 87. Проектирование операций изготовления заготовок.. 284

Глава 88. Проектирование операций обработки заготовок.. 287

Глава 89. Проектирование финишных операций изготовления изделий.. 289

Часть XX. Передача приложения заказчику.. 291

Глава 90. Методика передачи приложения пользователю.. 291

Заключение. 292

Описание содержимого компакт-диска и схема использования. 293

Список литературы.. 294

Предметный указатель. 295

 


 

Введение

 

Это первая в мире книга по новейшей версии языка Visual C# 2005 из платформы Visual Studio 2005, которую издательство “Жарков Пресс” получило непосредственно от корпорации Microsoft (США). Сразу же отметим, что все программы из данной книги прекрасно работают также и на платформах предыдущих версий Visual Studio 2004, Visual Studio.NET 203 и Visual Studio.NET 2002.

Наша основная цель – дать читателю ту информацию, которую он больше нигде не найдет. Поэтому мы не будем дублировать известные книги по языку программирования Visual C# и давать подробные объяснения по теории этого языка. Если у читателя возникнуть вопросы, он легко отыщет книгу по данному языку (некоторые книги приведены в нашем списке литературы) и там найдет ответ, так как терминология по всем тематикам у нас общая. Мы будем давать лишь краткие пояснения, чтобы начинающий пользователь постепенно осваивал различные базовые дисциплины, по возможности не используя другие книги; опытный пользователь может пропускать эти пояснения. К достоинствам книги, рассчитанной на широкий круг новичков и опытных специалистов, мы относим практическую направленность, простоту изложения (без описания сложных теорий, но давая ссылки на книги, в которых эти сложные теории можно изучить), наличие подробных методик и пошаговых инструкций, большое количество примеров и иллюстраций.

Все программы из этой книги могут быть вставлены в самые разнообразные проекты и приложения и прекрасно работать.

На прилагаемом к книге компакт-диске приведены все листинги с программами из этой книги в виде файла формата (.doc) для текстового редактора Microsoft Word любой версии. Эти программы можно скопировать и вставить в любые приложения Visual Studio на языках Visual C#, Visual Basic и Visual C++ версий 2002, 2003, 2004 и 2005 годов (как подробно описано в конце книги).

Книга предназначена:

для всех желающих быстро изучить новейший самый современный, совершенный и перспективный (в мире программирования) язык высокого уровня Visual C#, сразу же создавать на этом языке последних версий Visual C# 2005, Visual C# 2004, Visual C#.NET 2003 и Visual C#.NET 2002 мощные профессиональные приложения и применять их на практике в разнообразных сферах деятельности,

в том числе, книга предназначена для начинающих и опытных пользователей компьютерами, программистов различной квалификации, инженерно-технических работников, конструкторов, технологов, математиков и механиков,

а также для учащихся и слушателей курсов, студентов, аспирантов, учителей, преподавателей, научных работников и ученых.

Все вопросы, замечания и предложения можно направлять по email:

[email protected]

или с сайта нашего издательства «Жарков Пресс (Zharkov Press)»:

www.zharkovpress.com

На этом же сайте можно познакомиться со всеми новыми книгами нашего издательства «Жарков Пресс» (г. Москва).


 

Часть I. Краткие основы Visual C#

 

Глава 1. Основные определения книги

 

Требования для установки Visual Studio 2005

 

Для установки на компьютер среды разработки (платформы) Visual Studio 2005 корпорация Microsoft формулирует системные требованияв виде табл. 1.1.

 

Таблица 1.1.

Требования к компьютеру для инсталляции платформы Visual Studio 2005.

 

Processor Minimum: 766 megahertz (MHz) Pentium processor Recommended: 1 gigahertz (GHz) Pentium processor recommended
Operating System Visual Studio 2005 can be installed on any of the following systems: Microsoft Windows® 2003 Server Windows XP Professional Service Pack 1
RAM Minimum: 128 megabytes (MB) Recommended: 256 MB
Hard Disk Without MSDN: 750 MB of available space required on system drive 2 gigabytes (GB) of available space required on installation drive   With MSDN: 1.1 GB of available space required on system drive 3.2 GB of available space required on installation drive
CD or DVD Drive Required
Display Minimum: 800 x 600 256 colors Recommended: 1024x768 High Color — 16-bit
Smart Device Development ActiveSync 3.7.1 Microsoft.NET Framework Version 1.1 (for Smartphone 2003 projects)
Mouse Microsoft mouse or compatible pointing device

 

Все платформы Visual Studio 2005, Visual Studio 2004, Visual Studio.NET 2003 и Visual Studio.NET 2002 созданы в виде редакций: Enterprise Architect, Enterprise Developer, Professional. Каждая редакция включает такие основные языки программирования: Visual Basic, Visual C#, Visual C++, Visual J#. Установкана компьютер любой версии этой платформы подробно описана в нашей книге [1].

 


 

Выполнение расчетов

 

Проверяем созданный нами второй калькулятор. Для этого строим программу и запускаем ее на выполнение обычным образом: Build, Build Solution; Debug, Start Without Debugging.


 

Глава 16. Оглавление приложения по использованию методов Word

 

Листинг 16.1. Метод для выполнения анимации.

 

//Объявляем булеву переменную myColor со значением false:

bool myColor = false;

private void timer1_Tick(object sender, EventArgs e)

{

//Программируем анимацию:

if (myColor == false)

{

//Выводим красный цвет текста внутри переключателя:

radioButton2.ForeColor = Color.Red;

//Изменяем значение myColor на противоположное:

myColor = true;

}

else

{

//Выводим белый цвет текста внутри переключателя:

radioButton2.ForeColor = Color.White;

//Изменяем значение myColor на противоположное:

myColor = false;

}

}

В этом коде мы можем установить чередование двух других цветов из списка, который появляется, когда мы запишем символы после имени структуры Color. Аналогично можно также дописать код, чтобы сделать анимационными тексты сразу внутри нескольких переключателей. Задавая в панели Properties для компонента Timer различные значения свойству Interval (а выше мы задали 1000 миллисекунд или 1 секунду), можно изменять частоту чередования цветов текста внутри переключателя. Методика приостановки и возобновления анимации приведена выше.

Проверяем, как на данном этапе проектирования действует оглавление системы. Для этого строим (Build, Build Solution) и запускаем программу на выполнение (Debug, Start Without Debugging). Появляется первая панель в режиме выполнения (рис. 16.1), на которой включен первый переключатель и видна анимация в виде чередования двух цветов (красного и белого) текста внутри второго переключателя.


 

Глава 17. Запуск Word, добавление нового и открытие существующего документа

 

Листинг 17.1. Объектная переменная и метод для вызова Word.

 

//Объявляем объектную переменную objectWord

//и, тем самым, запускаем процессор Word,

//который по умолчанию невидим:

Word.Application objectWord = new Word.ApplicationClass();

private void button6_Click(object sender, EventArgs e)

{

//Делаем Word видимым:

objectWord.Visible = true;

}

 

Выполнение программы

 

Проверяем в работе новую форму. Для этого строим программу и запускаем ее на выполнение обычным образом: Build, Build Solution; Debug, Start Without Debugging. В ответ Visual C# выполняет программу и на рабочий стол выводит первую форму (с оглавлением нашей системы) в режиме выполнения. После щелчка переключателя 1 (или кнопки N ext>>,или нажатия клавиш Alt+1) появляется наша Form3, показанная выше на рис. 17.1.

После щелчка первой кнопки “Запуск Word (Starting Word)” на Form3, на экране монитора появляется рабочий стол с интерфейсом Word, при помощи которого стандартным образом можно создавать новый документ, открывать существующий документ и далее редактировать этот документ всеми средствами Word.

На форму можно ввести эффекты анимации аналогично тому, как мы это сделали выше, а также мультипликационные персонажи, как это мы сделаем ниже. Несколько вариантов проверки орфографии и расчет статистических данных о тексте при помощи Word можно разработать по аналогии с нашими книгами [7, 8].

 

 


 

Глава 18. Оглавление приложения по использованию Access

 

Глава 19. Открытие Access

 

Листинг 19.1. Объектная переменная и метод для открытия Access.

 

//Объявляем объектную переменную objectAccess

//и, тем самым, запускаем систему Access,

//которая по умолчанию невидим:

Access.Application objectAccess =

new Access.ApplicationClass();

 

private void button6_Click(object sender, EventArgs e)

{

//Делаем интерфейс Access видимым:

 

objectAccess.Visible = true;

}

 

 


 

Основные схемы интеграции

 

Как правило, разработчики программ пишут новые программы не с нуля, а на базе уже известных программ, беря из них отдельные блоки кода и вставляя в новые программы, руководствуясь логикой поставленной задачи.

Если известные базовые программы написаны на том же языке, на котором мы разрабатываем проект, например, на Visual C#, то мы вставляем известные программы в наш новый проект и дорабатываем для решения конкретной задачи.

Если же базовые программы написаны, например, на Visual Basic, т.е. не на том языке, на котором мы разрабатываем проект, то при разработке новых программ на основе известных возможны три основных схемы (варианта).

Первая схема (вариант). Мы переписываем известные программы с Visual Basic на Visual C# и вставляем в новый проект. Например, приведенные в данной книге программы графической системы в двух- и трехмерном пространстве мы сначала написали на более простом языке Visual Basic и опубликовали в наших предыдущих книгах [3,4,8], а затем переписали на Visual C# и приводим в данной книге. Следовательно, методика переписывания программы с Visual Basic на Visual C# за счет изменения, главным образом, только синтаксиса языка в данной книге уже имеется, и аналогично по этой методике можно переписывать другие программы. К слову, подробные таблицы сравнения синтаксиса четырех главных (в мире программирования) языков Basic, C#, C++, J# даны в нашей книге [2].

Вторая схема (вариант). В имеющемся у нас базовом проекте, например, на Visual Basic мы организовываем программу таким образом, чтобы эта программа рассчитывала данные, например, в виде потоков или массивов координат точек геометрических изображений (например, в виде массивов координат узловых точек геометрического тела, поверхности z=f(x,y) и осей координат на плоском экране монитора). Эти массивы мы передаем в новый проект на Visual C#. Такую передачу данных, например, в виде массивов экранных координат точек изображений мы осуществляем в проекте на Visual Basic (по описанной ниже методике) при помощи класса StreamWriter и записи этих массивов в файлы на жестком диске компьютера (например, в текстовые файлы типа D:\MyDocs\MyTest.txt). Далее в нашем новом проекте на Visual C# (или Visual Basic, или Visual C#, или каком-либо другом языке) при помощи класса StreamReader программа считывает из файлов массивы координат и по этим координатам строит изображения при помощи какого-либо метода интерфейса Graphics Device Interface (GDI+), например, DrawLine.

Третья схема (вариант). В этом варианте мы используем так называемую схему или методику “компонент - клиент”.

 


 

Выполнение программы

 

Cтроим программу и запускаем на выполнение обычным образом: Build, Build Solution; Debug, Start Without Debugging. В ответ Visual C# запускает программу и на рабочий стол выводит форму Form1 в режиме выполнения.

После загрузки Form1 на ней начинается показ нашего маленького мультфильма в следующей последовательности эпизодов.

Автоматически появляется Джин, выполняет первую анимацию и произносит (через динамики компьютера) первый текст (при этом губы персонажа шевелятся в такт с текстом), согласно приведенному выше нашему коду:

//Персонаж выполняет анимацию Announce:

myGenie.Play("Announce");

//Произносит записанную нами речь:

mySpeech =

"Здравствуйте, меня зовут Джин. " +

"Спасибо за Ваше внимание ко мне.";

myGenie.Speak(mySpeech, myObject);

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


 

Глава 50. Пример Интернет-магазина на основе Microsoft Agent

 

На основе программ Visual C#, разработанных нами в предыдущих главах, теперь мы можем проектировать сложные интерактивные компьютерные игры, мультфильмы, Интернет-магазины и другие практические приложения.

Такое сложное приложение мы рассмотрим на примере реального интернет-магазина под названием “Peedy’s Pizza Palace”, в котором уже известный нам Попугай (Peedy) продает пиццу. Этот пример разработан самой корпорацией Microsoft на базе своей же мультимедийной программной технологии (платформы) Microsoft Agent версии 2.0.

Данный магазин создан по сценарию (постановке), который состоит из следующих основных эпизодов.

Эпизод 1. После загрузки браузера Internet Explorer в его окне автоматически появляются интерфейс магазина и его продавец в виде Попугая (Peedy).

 

Эпизод 2. Попугай объясняет нам, как пользоваться данным Интернет-магазином, и предлагает сделать выбор вида пиццы и дополнительной начинки.

 

Эпизод 3. При помощи элементов управления или голосовых команд мы выбираем какой-либо вид пиццы и дополнительной начинки и даем команду сделать нам расчет.

Эпизод 4. Попугай делает расчет, сообщает нам стоимость пиццы, перелетает на новое место и сообщает, что готов принять от нас новый заказ.

 

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

 

Итак, чтобы изучить пример интернет-магазина под названием “Peedy’s Pizza Palace”, в котором Попугай (Peedy) продает пиццу, выполняем следующее.

 

1. Если мы не загрузили (бесплатно) компоненты Microsoft Agent версии 2.0, то делаем это, как описано в первой главе данной части книги.

 

2. Подключаемся к Интернету (если мы не подключились) при помощи браузера Internet Explorer и открываем пример по адресу:

 

agent.microsoft.com/agent2/sdk/samples/html/peedypza.htm


 

Глава 51. Построение графика по точкам эксперимента и интеграция с мульти­пликационными персонажами MS Agent

 

Листинг 51.1. Объявление членов интерфейса и глобальных переменных.

 

//Объявляем персонаж Джина (Genie) и путь к его файлу:

static AgentObjects.IAgentCtlCharacterEx myGenie;

static String DATAPATH_1 = "Genie.acs";

//Объявляем персонаж Мага (Merlin) и путь к его файлу:

static AgentObjects.IAgentCtlCharacterEx myMerlin;

static String DATAPATH_2 = "Merlin.acs";

//Объявляем персонаж Попугая (Peedy) и путь к его файлу:

static AgentObjects.IAgentCtlCharacterEx myPeedy;

static String DATAPATH_3 = "Peedy.acs";

//Объявляем персонаж Робота (Robby) и путь к его файлу:

static AgentObjects.IAgentCtlCharacterEx myRobby;

static String DATAPATH_4 = "Robby.acs";

//Объявляем член интерфейса Agent:

private AgentObjects.Agent myAgentController;

//Глобальная переменная для любого текста персонажа:

static String mySpeech;

//Объявляем общую для персонажей объектную переменную:

Object myObject = null;

А в шаблон (метода Form1_Load) записываем наш код (согласно постановке задачи для всех персонажей), и метод Form1_Load принимает такой вид.

 

Листинг 51.2. Загрузка персонажей в элементы управления.

 

private void Form1_Load(object sender, EventArgs e)

{

//Загружаем персонаж в элемент управления axAgent1:

axAgent1.Characters.Load("Genie", DATAPATH_1);

myGenie = axAgent1.Characters.Character("Genie");

//Чтобы он выполнял голосовые команды на англ. яз.:

myGenie.LanguageID = 0x409;

//Загружаем персонаж в элемент управления axAgent2:

axAgent2.Characters.Load("Merlin", DATAPATH_2);

myMerlin = axAgent2.Characters.Character("Merlin");

//Чтобы он выполнял голосовые команды на англ. яз.:

myMerlin.LanguageID = 0x409;

//Загружаем персонаж в элемент управления axAgent3:

axAgent3.Characters.Load("Peedy", DATAPATH_3);

myPeedy = axAgent3.Characters.Character("Peedy");

//Чтобы он выполнял голосовые команды на англ. яз.:

myPeedy.LanguageID = 0x409;

//Загружаем персонаж в элемент управления axAgent4:

axAgent4.Characters.Load("Robby", DATAPATH_4);

myRobby = axAgent4.Characters.Character("Robby");

//От начала координат в вехнем левом углу Form1

//задаем координаты "x, y" персонажа:

myGenie.MoveTo(

Convert.ToInt16(this.Location.X + 0),

Convert.ToInt16(this.Location.Y - 130), 1000);

//Показываем персонаж в заданном месте:

myGenie.Show(0);

//Чтобы персонажи произносили речи через динамики,

//задаем им следующие свойства:

myAgentController = new AgentObjects.Agent();

myAgentController.Connected = true;

myAgentController.Characters.Load(

"genie", "genie.acs");

myGenie =

myAgentController.Characters.Character("genie");

myAgentController.Characters.Load(

"merlin", "merlin.acs");

myMerlin =

myAgentController.Characters.Character("merlin");

myAgentController.Characters.Load(

"peedy", "peedy.acs");

myPeedy =

myAgentController.Characters.Character("peedy");

myAgentController.Characters.Load(

"robby", "robby.acs");

myRobby =

myAgentController.Characters.Character("robby");

//Первый персонаж произносит текст mySpeech

//и показывает этот текст в виде подсказки:

mySpeech = "Сидите за монитором прямо, " +

"как пианист.";

myGenie.Speak(mySpeech, myObject);

}

Чтобы следующий персонаж, например, Маг (Merlin) появился через заданное нами время, щелкаем по значку для первого компонента Timer и в панели Properties для этого компонента в свойстве Interval записываем данное время, например, 5000 миллисекунд (или 5 секунд) и запускаем таймер (в свойстве Enabled выбираем True).

Теперь дважды щелкаем по значку для этого компонента Timer (или в панели Properties на вкладке Events дважды щелкаем по имени единственного там события Tick). Появляется файл Form1.cs с шаблоном (метода timer1_Tick), который после записи нашего кода принимает следующий вид.

 

Листинг 51.3. Метод для вызова персонажа через Interval времени.

 

private void timer1_Tick(object sender, EventArgs e)

{

//Показываем следующий персонаж рядом:

myMerlin.MoveTo(

Convert.ToInt16(this.Location.X + 200),

Convert.ToInt16(this.Location.Y - 130), 1000);

myMerlin.Show(0);

//Текущий персонаж произносит текст mySpeech

//и показывает этот текст в виде подсказки:

mySpeech = "Держите глаза от монитора " +

"на расстоянии вытянутой руки.";

myMerlin.Speak(mySpeech, myObject);

//Останавливаем генерирование события Tick:

timer1.Enabled = false;

}

Чтобы следующий персонаж, например, Попугай (Peedy) появился через заданное нами время, щелкаем по значку для второго компонента Timer и в панели Properties для этого компонента в свойстве Interval записываем данное время, например, 10000 миллисекунд (или 10 секунд) и запускаем таймер (в свойстве Enabled выбираем True). Теперь дважды щелкаем по значку для этого компонента Timer (или в панели Properties на вкладке Events дважды щелкаем по имени единственного там события Tick). Появляется файл Form1.cs с шаблоном (метода timer2_Tick), который после записи нашего кода принимает следующий вид.

 

Листинг 51.4. Метод для вызова персонажа через Interval времени.

 

private void timer2_Tick(object sender, EventArgs e)

{

//Показываем следующий персонаж рядом:

myPeedy.MoveTo(

Convert.ToInt16(this.Location.X + 400),

Convert.ToInt16(this.Location.Y - 130), 1000);

myPeedy.Show(0);

//Текущий персонаж произносит текст mySpeech

//и показывает этот текст в виде подсказки:

mySpeech = "Поднимите монитор, чтобы глаза были " +

"на уровне верхней кромки экрана.";

myPeedy.Speak(mySpeech, myObject);

//Останавливаем генерирование события Tick:

timer2.Enabled = false;

}

Чтобы следующий персонаж, например, Робот (Robby) появился через заданное нами время, щелкаем по значку для третьего компонента Timer и в панели Properties для этого компонента в свойстве Interval записываем данное время, например, 15000 миллисекунд (или 15 секунд) и запускаем таймер (в свойстве Enabled выбираем True). Теперь дважды щелкаем по значку для этого компонента Timer (или в панели Properties на вкладке Events дважды щелкаем по имени единственного там события Tick). Появляется файл Form1.cs с шаблоном (метода timer3_Tick), который после записи нашего кода принимает следующий вид.

 

Листинг 51.5. Метод для вызова персонажа через Interval времени.

 

private void timer3_Tick(object sender, EventArgs e)

{

//Показываем следующий персонаж рядом:

myRobby.MoveTo(

Convert.ToInt16(this.Location.X + 600),

Convert.ToInt16(this.Location.Y - 130), 1000);

myRobby.Show(0);

//Текущий персонаж произносит текст mySpeech

//и показывает этот текст в виде подсказки:

mySpeech = "Работайте на клавиатуре всеми пальцами.";

myRobby.Speak(mySpeech, myObject);

//Останавливаем генерирование события Tick:

timer3.Enabled = false;

}

Мы записали код для вывода на экран всех четырех персонажей. Чтобы один из этих персонажей, например, Джин (Genie) периодически (с заданным нами интервалом времени в компоненте Timer) повторял инструкцию пользователю (например, о том, как строить график на данной форме), щелкаем по значку для четвертого компонента Timer и в панели Properties для этого компонента в свойстве Interval записываем данный интервал времени, например, 18000 миллисекунд (или 18 секунд) и запускаем таймер (в свойстве Enabled выбираем True). Теперь дважды щелкаем по значку для этого компонента Timer (или в панели Properties на вкладке Events дважды щелкаем по имени единственного там события Tick). Появляется файл Form1.cs с шаблоном (метода timer4_Tick), который после записи нашего кода принимает следующий вид.

 

Листинг 51.6. Метод для произнесения инструкции через Interval времени.

 

private void timer4_Tick(object sender, EventArgs e)

{

//Текущий персонаж произносит текст mySpeech

//и показывает этот текст в виде подсказки:

mySpeech = "Запишите координаты точек целыми числами, " +

"щелкните верхнюю кнопку, и Вы увидите график. " +

"Чтобы стереть график, щелкните нижнюю кнопку.";

myGenie.Speak(mySpeech, myObject);

}

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

Чтобы при помощи кнопки “1. Построить график” появился график функциональной зависимости y = f(x), дважды щелкаем или эту кнопку в режиме проектирования (рис. 51.1), или имя события Click в панели Properties на вкладке Events. Появляется шаблон, который после записи нашего кода принимает такой вид.

 

Листинг 51.7. Метод для обработки щелчка кнопки с целью рисования графика.

 

private void button1_Click(object sender, EventArgs e)

{

//Объявляем локальные переменные:

float x1, y1, x2, y2, x3, y3, x4, y4;

float x_O, y_O, x_end, y_end;

//Координаты начальной точки O:

x_O = 20; y_O = 20;

//Считываем координаты точек из окон:

x1 = Convert.ToSingle(textBox1.Text) + x_O;

y1 = -Convert.ToSingle(textBox2.Text) +

pictureBox1.Height - y_O;

x2 = Convert.ToSingle(textBox3.Text) + x_O;

y2 = -Convert.ToSingle(textBox4.Text) +

pictureBox1.Height - y_O;

x3 = Convert.ToSingle(textBox5.Text) + x_O;

y3 = -Convert.ToSingle(textBox6.Text) +

pictureBox1.Height - y_O;

x4 = Convert.ToSingle(textBox7.Text) + x_O;

y4 = -Convert.ToSingle(textBox8.Text) +

pictureBox1.Height - y_O;

//Создаем графический объект g класса Graphics:

Graphics g;

//Связываем графический объект g класса Graphics

//с элементом управления pictureBox1:

g = pictureBox1.CreateGraphics();

//Создаем перо для осей координат:

Pen myPenAxes = new Pen(Color.Black, 1);

//Строим ось координат x:

x_end = pictureBox1.Width - y_O;

g.DrawLine(myPenAxes,

x_O, pictureBox1.Height - y_O,

x_end, pictureBox1.Height - y_O);

//Строим ось координат y:

y_end = y_O;

g.DrawLine(myPenAxes,

x_O, pictureBox1.Height - y_O,

x_O, y_O);

//Создаем перо для графика:

Pen myPen = new Pen(Color.Black, 3);

//Строим график:

g.DrawLine(myPen, x1, y1, x2, y2);

g.DrawLine(myPen, x2, y2, x3, y3);

g.DrawLine(myPen, x3, y3, x4, y4);

}

Чтобы при помощи кнопки “2. Удалить график” график функциональной зависимости y = f(x) был стерт, дважды щелкаем или эту кнопку в режиме проектирования (рис. 51.1), или имя события Click в панели Properties на вкладке Events. Появляется шаблон, который после записи нашего кода принимает такой вид.

 

Листинг 51.8. Метод для обработки щелчка по кнопке.

 

private void button2_Click(object sender, EventArgs e)

{

//Создаем графический объект g класса Graphics:

Graphics g;

//Связываем графический объект g класса Graphics

//с элементом управления pictureBox1:

g = pictureBox1.CreateGraphics();

//Очистить pictureBox1, заполнив белым цветом White:

g.Clear(Color.White);

}

 

Мы закончили часть книги, в которой разработали методологию написания программ на Visual С# с целью создания сложных интерактивных компьютерных игр, мультфильмов, Интернет-магазинов и других практических приложений на основе мультимедийной программной технологии (платформы) Microsoft Agent версии 2.0.

 

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

 

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


Поделиться с друзьями:

Автоматическое растормаживание колес: Тормозные устройства колес предназначены для уменьше­ния длины пробега и улучшения маневрирования ВС при...

Индивидуальные очистные сооружения: К классу индивидуальных очистных сооружений относят сооружения, пропускная способность которых...

Папиллярные узоры пальцев рук - маркер спортивных способностей: дерматоглифические признаки формируются на 3-5 месяце беременности, не изменяются в течение жизни...

Наброски и зарисовки растений, плодов, цветов: Освоить конструктивное построение структуры дерева через зарисовки отдельных деревьев, группы деревьев...



© cyberpedia.su 2017-2024 - Не является автором материалов. Исключительное право сохранено за автором текста.
Если вы не хотите, чтобы данный материал был у нас на сайте, перейдите по ссылке: Нарушение авторских прав. Мы поможем в написании вашей работы!

0.343 с.