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

ЛИЧНЫЙ КАБИНЕТ 

 

Здравствуйте гость!

 

Логин:

Пароль:

 

Запомнить

 

 

Забыли пароль? Регистрация

Повышение уникальности

Предлагаем нашим посетителям воспользоваться бесплатным программным обеспечением «StudentHelp», которое позволит вам всего за несколько минут, выполнить повышение уникальности любого файла в формате MS Word. После такого повышения уникальности, ваша работа легко пройдете проверку в системах антиплагиат вуз, antiplagiat.ru, etxt.ru или advego.ru. Программа «StudentHelp» работает по уникальной технологии и при повышении уникальности не вставляет в текст скрытых символов, и даже если препод скопирует текст в блокнот – не увидит ни каких отличий от текста в Word файле.

Результат поиска


Наименование:


курсовая работа Shootem up-игра 78

Информация:

Тип работы: курсовая работа. Добавлен: 02.06.2012. Сдан: 2010. Страниц: 12. Уникальность по antiplagiat.ru: < 30%

Описание (план):


Белорусский государственный университет информатики  и радиоэлектроники
Факультет компьютерных систем и сетей
Кафедра информатики 
 
 
 
 

Пояснительная записка к курсовому проекту  по дисциплине
«Объектно-ориентированное  программирование»
на тему
«Shoot’em up-игра “78”» 
 
 
 

                  Выполнил: студент группы 852003
                  Рубан П.И.
                  Проверил: 
                  Галковский А.В. 
                   
                   
                   

Минск 2009 

Содержание
    Введение            3
    Обзор предметной области         4
      XNA Framework          4
      Платформа .NET Framework        6
      C#            8
    Описание игры           9
    Диаграммы классов          10
    Описание основных классов и методов       11
    Заключение           19
    Список использованной литературы       20
 
 


Введение.
     Игру  “78Game” можно отнести к жанру Shoot 'em up. Она практически полностью удовлетворяет основным особенностям данного жанра. 

     Shoot 'em up — жанр компьютерных и видеоигр, в которых игрок, управляющий каким-либо персонажем или техническим средством, сражается с большим количеством врагов при помощи стрельбы. Процесс игры часто изображён в очень стилизованной манере. В переводе shoot 'em up означает «перестреляй их всех». В кратком русскоязычном варианте звучит как «шмап» (shmup). В Японии такие игры известны как «shooting games» («игры со стрельбой»). На пике популярности они часто назывались просто как «shooter», то есть «стрелялка». Но с появлением трёхмерных игр, жанр шутер стал более собирательным.
     Жанр  зародился на аркадных игровых автоматах  с игры Space Invaders. Пик популярности пришёлся на конец 80-х — начало 90-х, в основном в виде аркадных и консольных проектов. Когда использование 3D-графики в играх стало более широким, простота и аркадность жанра медленно стала сдавать свою популярность в сторону 3D-игр. В настоящее время у жанра осталось хоть и небольшое количество, но верных поклонников, в частности среди японских посетителей залов игровых автоматов. Остались и компании, продолжающие разработку таких игр.
     Подобные  игры часто кажутся очень похожими друг на друга, что неудивительно — ведь жанр определяется довольно чёткими рамками — разновидностей их существует достаточно. С противоположных сторон жанра находятся «маниакальные» шмапы, где за успех отвечают рефлексы игрока, и «методические», где упор делается на память и стратегический подход.
     Я выбрал именно этот жанр потому, что, на мой взгляд, игры этого жанра являются самыми увлекательными аркадными играми. В детстве я всегда любил играть именно в такие игры на своём стареньком Nintendo. Хотя реализаций «чистого» шмапа для Nintendo я так и не увидел, зато я играл в «чистые» шмапы позже, на ПК. И они доставляли мне много-много радости. Надеюсь, мой курсовой проект тоже кому-нибудь доставит радость.
 

     
Описание  предметной области.
XNA
     Microsoft XNA framework – набор инструментов с управляемой средой времени выполнения, созданный Microsoft, облегчающий разработку и управление компьютерными играми. XNA стремится освободить разработку игр от написания "повторяющегося шаблонного кода" и объединить различные аспекты разработки игр в одной системе. Набор инструментов XNA был анонсирован 24 марта 2004 на Game Developers Conference в Сан-Хосе, Калифорния. Первый Community Technology Preview XNA Build был выпущен 14 марта 2006.
     Пакет Microsoft XNA, по словам представителей Microsoft, позволит разработчикам игр избежать многих технических трудностей, возникающих при написании кода, а также обеспечит существенное снижение стоимости конечной продукции. Кроме того, благодаря XNA программисты смогут создавать принципиально новые игры с высококачественной графикой. В ходе демонстрации, Microsoft показала два анимационных ролика, созданных с применением технологии XNA. В одном из них облако вздымающегося сигаретного дыма в режиме реального времени меняло свою форму и направление движения под действием внешних факторов. Другой ролик демонстрировал разлетающиеся в разные стороны детали разбившегося о стену автомобиля.
     Инструментарий XNA изначально разрабатывался с целью  максимально облегчить процесс  разработки игр для консоли Xbox и компьютеров, работающих под управлением операционной системы Windows. Вместе с тем, пакет XNA позволит распространить общие сервисы Xbox Live, такие как, например, аутентификация, на игры для персональных компьютеров. Инструментарий XNA позволяет Microsoft конкурировать с Sony на рынке видеоигр для следующего поколения игровых приставок.
     XNA Framework скрывает низкоуровневые технологические детали, связанные с разработкой игры. Таким образом, фреймворк заботится о разнице между платформами, позволяя разработчикам уделять больше внимания смысловому содержимому игры. XNA Framework интегрируется с несколькими инструментами, такими как XACT, для помощи в создании контента. XNA Framework предоставляет поддержку создания и двухмерных, и трёхмерных игр и позволяет использовать возможности контроллеров Xbox 360.
     XNA Framework основывается на нативной реализации .NET Compact Framework 2.0 для разработки для Xbox 360 и .NET Framework 2.0 на Windows. Он включает обширный набор библиотек классов, специфичных для разработки игр, поддерживающий максимальное повторное использование кода на всех целевых платформах. Фреймворк выполняется на модификации Common Language Runtime, оптимизированной для игр, чтобы предоставить управляемую среду выполнения. Среда времени выполнения доступна для Windows XP, Windows Vista, и Xbox 360. Так как игры XNA пишутся для среды времени выполнения, они могут быть запущены на любой платформе, поддерживающей XNA Framework с минимальными изменениями или вообще без таковых. Игры, которые запускаются на фреймворке, технически могут быть написаны на любом .NET-совместимом языке, но официально поддерживается только язык программирования C#
     Библиотека  разрабатывалась корпорацией Microsoft с целью создания единого инструмента для разработки игр на двух не совместимых платформах, принадлежащих той же компании. А именно: Microsoft Windows и Microsoft XBOX360.
     Далее представлены основные пространства имен:
Пространство  имён Описание
Microsoft.Xna.Framework Математические  расчеты: матричная алгебра, аналитическая  геометрия, проверка столкновений и  т.д. В Managed DirectX эта функциональность (в урезанном виде) реализовывалась посредством библиотеки D3DX, являющейся частью DirectX. XNA Framework выполняет математические расчеты собственными средствами, что в некоторых случаях несколько повышает производительностью благодаря отсутствию накладных расходов взаимодействия с COM.
Microsoft.Xna.Framework.Graphics Работа  с графикой. В данном пространстве имён находятся все основные классы для работы с двухмерной и трёхмерной графикой. Например, класс графического устройства. Аналог в DirectX — Direct3D
Microsoft.Xna.Framework.Input Работа  с устройствами ввода: клавиатура, мышь, джойстик и т.д. Аналог в DirectX — DirectInput
Microsoft.Xna.Framework.Game Организация цикла игрового приложения : загрузка контента, запуск рендеринга и т.д. В принципе, без этих возможностей можно обойтись, но в конце всё равно придётся писать что-то подобное
 
     XNA построена полностью на принципе программированного конвеера. То есть разработчики полностью отказались от фиксированного конвеера и тем самым ужесточили требования к аппаратному обеспечению компьютера. А именно, библиотека может функционировать, только если видеокарта поддерживает, как минимум, Pixel Shader v1.1. Но это не сильно должно нас волновать, так как поддержка этой технологии есть у видеокарт начиная с Geforce 2 (кроме серий MX).
     Во-вторых, XNA поддерживает фрагментные (пиксельные) шейдеры от версий 1.1 до 3.0. Это объясняется тем, что основа XNA — DirectX 9.0c, а так же тем фактом, что XBOX360 поддерживает шейдеры только до версии 3.0. В связи с этим, в ближайшее время, не предполагается добавление поддержки шейдеров 4-ой версии (DirectX 10).
     Что же относительно остального, то возможности XNA практически такие же, как и  у DirectX 9.0c. 
 

     Платформа .NET Framework
  .NET Framework — программная технология от компании Microsoft, предназначенная для создания обычных программ и веб-приложений.
  Одной из основных идей Microsoft .NET является совместимость различных служб, написанных на разных языках. Например, служба, написанная на C++ для Microsoft .NET, может обратиться к методу класса из библиотеки, написанной на Delphi; на C# можно написать класс, наследованный от класса, написанного на Visual Basic .NET, а исключение, созданное методом, написанным на C#, может быть перехвачено и обработано в Delphi. Каждая библиотека (сборка) в .NET имеет сведения о своей версии, что позволяет устранить возможные конфликты между разными версиями сборок.
  .NET является патентованной технологией корпорации Microsoft. Тем не менее, после заключения договоренности с компанией Novell, технология Mono была признана как реализация .NET на Unix-подобных системах (GNU/Linux, Mac OS X). Однако договорённость касается Novell и клиентов Novell, также технологии ASP.NET, ADO.NET и Windows.Forms не были стандартизированы ECMA/ISO и использование их в Mono находится под угрозой претензий со стороны Microsoft (претензии возможны только в странах, где существуют патенты на программное обеспечение). Mono предоставляет реализацию ASP.NET, ADO.NET и Windows.Forms, но в то же время рекомендует обходить эти API.
   Платформа .NET Framework — это интегрированный компонент Windows, который поддерживает создание и выполнение нового поколения приложений и веб-служб XML. При разработке платформы .NET Framework учитывались следующие цели.
    Обеспечение согласованной объектно-ориентированной среды программирования для локального сохранения и выполнения объектного кода, для локального выполнения кода, распределенного в Интернете, либо для удаленного выполнения.
    Обеспечение среды выполнения кода, минимизирующей конфликты при развертывании программного обеспечения и управлении версиями.
    Обеспечение среды выполнения кода, гарантирующей безопасное выполнение кода, включая код, созданный неизвестным или не полностью доверенным сторонним изготовителем.
    Обеспечение среды выполнения кода, исключающей проблемы с производительностью сред выполнения сценариев или интерпретируемого кода.
    Обеспечение единых принципов работы разработчиков для разных типов приложений, таких как приложения Windows и веб-приложения.
    Разработка взаимодействия на основе промышленных стандартов, которое обеспечит интеграцию кода платформы .NET Framework с любым другим кодом.
   Двумя основными компонентами платформы .NET Framework являются общеязыковая среда выполнения (CLR) и библиотека классов .NET Framework. Основой платформы .NET Framework является среда CLR.
  Среда CLR управляет памятью, выполнением  потоков, выполнением кода, проверкой  безопасности кода, компиляцией и  другими системными службами. Эти  средства являются внутренними для  управляемого кода, который выполняется  в среде CLR.
  Среда выполнения обеспечивает управление доступом для кода, надежность кода, реализуя инфраструктуру строгой типизации и проверки кода, которую называют системой общих типов (CTS). Система общих типов обеспечивает самоописание всего управляемого кода. Различные языковые компиляторы корпорации Майкрософт и независимых изготовителей создают управляемый код, удовлетворяющий системе общих типов. Это означает, что управляемый код может принимать другие управляемые типы и экземпляры, при этом обеспечивая правильность типов и строгую типизацию.
  Кроме того, управляемая среда выполнения исключает многие часто возникающие  проблемы с программным обеспечением. Например, среда выполнения автоматически  управляет размещением объектов и ссылками на объекты, освобождая их, когда они больше не используются. Автоматическое управление памятью  исключает две наиболее часто  возникающие ошибки приложений: утечки памяти и недействительные ссылки на память.
  Среда выполнения разработана для повышения  производительности. Хотя общеязыковая среда выполнения предоставляет  многие стандартные службы времени  выполнения, управляемый код никогда  не интерпретируется. Средство компиляции по требованию (JIT) позволяет всему  управляемому коду выполняться на машинном языке компьютера. Между тем диспетчер  памяти устраняет возможность фрагментации памяти и увеличивает объем адресуемой памяти для дополнительного повышения  производительности.
  Библиотека  классов платформы .NET Framework представляет собой коллекцию типов, которые тесно интегрируются со средой CLR. Библиотека классов является объектно-ориентированной; предоставляя типы, из которых управляемый код пользователя может наследовать функции. Это не только упрощает работу с типами .NET Framework, но также уменьшает время, затрачиваемое на изучение новых средств платформы .NET Framework. Кроме того, компоненты независимых производителей можно легко объединять с классами платформы .NET Framework.
  Например, в классах коллекций .NET Framework реализуется набор интерфейсов, которые можно использовать для разработки пользовательских классов коллекций. Пользовательские классы коллекций будут без затруднений объединяться с классами .NET Framework.
  Как и ожидается от объектно-ориентированной  библиотеки классов, типы .NET Framework позволяют решать типовые задачи программирования, включая работу со строками, сбор данных, подключения к базам данных и доступ к файлам. В дополнение к этим обычным задачам библиотека классов содержит типы, поддерживающие многие специализированные сценарии разработки.  

C#
     C# — объектно-ориентированный язык программирования. Разработан в 1998—2001 годах группой инженеров под руководством Андерса Хейлсберга в компании Microsoft как основной язык разработки приложений для платформы Microsoft .NET. Компилятор с C# входит в стандартную установку самой .NET, поэтому программы на нём можно создавать и компилировать даже без инструментальных средств, вроде Visual Studio.
     C# относится к семье языков с C-подобным синтаксисом, из них его синтаксис наиболее близок к C++ и Java. Язык имеет статическую типизацию, поддерживает полиморфизм, перегрузку операторов (в том числе операторов явного и неявного приведения типа), делегаты, атрибуты, события, свойства, обобщённые типы и методы, итераторы, анонимные функции с поддержкой замыканий, LINQ, исключения, комментарии в формате XML.
     Переняв многое от своих предшественников —  языков C++, Java, Delphi, Модула и Smalltalk — С#, опираясь на практику их использования, исключает некоторые модели, зарекомендовавшие себя как проблематичные при разработке программных систем: так, C# не поддерживает множественное наследование классов (в отличие от C++).
     C# разрабатывался как язык программирования прикладного уровня для CLR и, как таковой, зависит, прежде всего, от возможностей самой CLR. Это касается, прежде всего, системы типов C#, которая отражает BCL. Присутствие или отсутствие тех или иных выразительных особенностей языка диктуется тем, может ли конкретная языковая особенность быть транслирована в соответствующие конструкции CLR. Так, с развитием CLR от версии 1.1 к 2.0 значительно обогатился и сам C#; подобного взаимодействия следует ожидать и в дальнейшем. (Однако эта закономерность была нарушена с выходом C# 3.0, представляющим собой расширения языка, не опирающиеся на расширения платформы .NET.) CLR предоставляет C#, как и всем другим .NET-ориентированным языкам, многие возможности, которых лишены «классические» языки программирования. Например, сборка мусора не реализована в самом C#, а производится CLR для программ, написанных на C# точно так же, как это делается для программ на VB.NET, J# и др. 
 
 

Описание  игры.
     Игра “78Game” представляет собой игру в жанре shoot’em up. 
       Первое, что видит пользователь, запустив игру – это игровое меню, имеющее всего 2 пункта: «Начать игру» и «Выход».
     При выборе пункта «Начать игру» начинается игра. На экране отрисован фон, который плавно двигается справа налево, имитируя движение игрока слева направо.
     Игрок управляет космическим боевым кораблём (BattleCruiser) посредством клавиатуры. Движение происходит при нажатии курсорных стрелок, стрельба – при нажатии клавиши «пробел».
     В правой части экрана появляются враги. Они двигаются по зигзагообразной  траектории справа налево. Задача игрока – уничтожать врагов. Враги бывают трёх типов. Первый – самые слабые, но самые быстрые. Второй – средней силы и скорости. Третий – медленные, но самые «толстые».
     При уничтожении врага, из него может  «выпасть» бонус. Бонусы также бывают трёх типов. Первый увеличивает наносимые  игроком повреждения. Второй – скорострельность. Третий – скорость полёта пуль.
     У игрока имеется 5 «жизней». Каждое столкновение с врагом летально, то есть нету концепции «здоровья» главного героя. При столкновении с врагом состояние игрока сбрасывается на начальное, то есть корабль переносится в начальную точку, и все его параметры, увеличенные бонусами, сбрасываются в начальное значение. При этом количество «жизней» уменьшается на единицу.
     За  уничтоженных врагов игрок получает очки. 5, 10 и 20 очков за 1ый, 2ой и 3ий тип  врагов соответственно. При получении бонуса добавляется одно очко. При смерти игрока вычитается 20 очков.
     Со  временем частота появления врагов увеличивается. Поэтому цель игры –  набрать как можно больше очков, пока не закончатся жизни. А они закончатся, гарантированно.
     В левом верхнем углу экрана показано текущее количество очков. В правом верхнем – количество «жизней». В нижнем левом – текущее состояние  корабля игрока, то есть наносимые  им повреждения, скорострельность, и  скорость полёта пули. Если заканчиваются  «жизни», в центре экрана появляется надпись «Game over», что означает «конец игры», и пользователю предлагается продолжить игру. Если пользователь не хочет больше играть, производится выход в меню. 
 
 
 

Диаграмма классов. 
 

 
 
 
 
 
 
 
 

Описание  основных классов и методов.
     Основной  класс MyGame является наследником стандартного класса Game. Работа игры основана на понятии игрового цикла. Изначально игра создается (конструктор), затем происходит инициализация  и загрузка контента (методы Initialize и LoadContent соответственно), после чего последовательно вызываются метод Update(обновляет состояние объектов) и Draw(отрисовка объектов). При завершении игры проиходит выгрузка контента (UnloadContent). 

     Рассмотрим  подробнее основные классы и методы.
Класс MyGame.
     Класс содержит информацию о текущем состоянии  игры (переменные paused, pauseKeyDown, gameOver, lives, score, difficulty, menuState), вспомогательные объекты (такие как spriteBatch, graphics, content и другие). Списки игровых объектов (основной, и вспомогательный) и информационных панелей. При загрузке контента вызывается метод Load. Этот метод загружает весь необходимый для игрового процесса контент – шрифты, текстуры.
     Обновление  состояния игры осуществляется в  методе Update, где вызываются все обновления у всех необходимых объектов. В этом методе вызываются некоторые вспомогательные методы:
       protected void MoveBattleCruiser(GameTime gameTime)
        {
            battleCruiser.UpdateFrame(gameTime.ElapsedGameTime.TotalSeconds);
            if (Keyboard.GetState().IsKeyDown(Keys.Down))
                battleCruiser.Move(0, 1, Window);
            if (Keyboard.GetState().IsKeyDown(Keys.Up))
                battleCruiser.Move(0, -1, Window);
            if (Keyboard.GetState().IsKeyDown(Keys.Left))
                battleCruiser.Move(-1, 0, Window);
            if (Keyboard.GetState().IsKeyDown(Keys.Right))
                battleCruiser.Move(1, 0, Window);
            if (Keyboard.GetState().IsKeyDown(Keys.Space) && bulletCounter % battleCruiser.shootSpeed == 0)
            {
                foreach (Bullet bullet in battleCruiser.Shoot(bulletTexture))
                    objects.Add(bullet);
                bulletCounter = 0;
            }
            if (bulletCounter < battleCruiser.shootSpeed)
                bulletCounter++;
        } 

        protected void MoveObjects(GameTime gameTime)
        {
            foreach (GameObject obj in objects)
            {
                if (obj is Explosion)
                {
                    (obj as Explosion).UpdateFrame(gameTime.ElapsedGameTime.TotalSeconds);
                } 

                if (obj is Moveable)
                {
                    (obj as Moveable).Move(0, 0, Window);
                }
            }
        }        

        protected void CheckCollisions()
        {
            foreach (GameObject enemy in objects)
            {
                if (enemy is Bonus && enemy.bb.Intersects(battleCruiser.bb))
                {
                    switch ((enemy as Bonus).type)
                    {
                        case 0:
                            if (battleCruiser.bulletDamage < 3)
                                battleCruiser.bulletDamage++;
                            break;
                        case 1:
                            battleCruiser.bulletSpeed += 2;
                            break;
                        case 2:
                            if (battleCruiser.shootSpeed > 6)
                                battleCruiser.shootSpeed -= 2;
                            bulletCounter = 0;
                            break;
                    }
                    enemy.canBeDeleted = true;
                    score++;
                } 

                if (enemy is Enemy)
                {
                    foreach (GameObject bullet in objects)
                    {
                        if (bullet is Bullet && bullet.bb.Intersects(enemy.bb))
                        {
                            if ((((enemy as Enemy).lives) -= battleCruiser.bulletDamage) <= 0)
                            {
и т.д.................


Перейти к полному тексту работы


Скачать работу с онлайн повышением уникальности до 90% по antiplagiat.ru, etxt.ru или advego.ru


Смотреть полный текст работы бесплатно


Смотреть похожие работы


* Примечание. Уникальность работы указана на дату публикации, текущее значение может отличаться от указанного.