Создание 2D игры по средствам XNAGameStudio 4.0

Автор работы: Пользователь скрыл имя, 19 Декабря 2011 в 20:41, лабораторная работа

Краткое описание

Цель
Научится создавать простые 2D игры по средствам Microsoft XNA – набора инструментов с управляемой средой времени выполнения (.NET).

Содержимое работы - 1 файл

Отчет.doc

— 1.57 Мб (Скачать файл)
 

Министерство  образования и науки Российской Федерации

Государственное образовательное учреждение высшего

профессионального образования

ВЯТСКИЙ ГОСУДАРСТВЕННЫЙ  УНИВЕРСИТЕТ

Факультет автоматики и вычислительной техники

Кафедра электронных  вычислительных машин 
 
 
 
 

Создание 2D игры по средствам XNAGameStudio 4.0 
 
 

Отчет

Лабораторная  работа №1 по дисциплине

«Теория вычислительных процессов» 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Киров 2011

Цель 

Научится  создавать простые 2D игры по средствам Microsoft XNA – набора инструментов с управляемой средой времени выполнения (.NET). 
 

Выполнение  лабораторной работы 

При запуске  игры появляется главное меню, состоящее  из 3х пунктов: Новая игра, Продолжить (при запуске не доступно) и выход. 

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

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

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

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

Текст игры 

Главныймодуль Game1.cs

using System;

usingSystem.Collections.Generic;

usingSystem.Linq;

usingMicrosoft.Xna.Framework;

usingMicrosoft.Xna.Framework.Audio;

usingMicrosoft.Xna.Framework.Content;

usingMicrosoft.Xna.Framework.GamerServices;

usingMicrosoft.Xna.Framework.Graphics;

usingMicrosoft.Xna.Framework.Input;

usingMicrosoft.Xna.Framework.Media;

using Microsoft.Xna.Framework.Net;

usingMicrosoft.Xna.Framework.Storage;

using System.IO;

usingLevelGame.MenuSystem; 

namespaceLevelGame

{

///<summary>

///This is the main type for your game

///</summary>

publicclassGame1 : Microsoft.Xna.Framework.Game

    {

GraphicsDeviceManager graphics;

SpriteBatchspriteBatch; 

Texture2D blockTexture1;

Texture2D blockTexture2; 

Texture2DidleTexture;

Texture2DrunTexture;

Texture2DjumpTexture;

Texture2DgemTexture; 

Texture2DMenuWall;

Texture2D Level1;

Texture2D Level2;

Texture2D Level3; 

Texture2DenemyIdleTexture;

Texture2DenemyRunTexture; 

SpriteFont font;

publicSoundEffect sound;

SoundEffect music;

SoundEffectsoundjump;

SoundEffectnewGame;

SoundEffectPlayerKilled;

publicSoundEffectJumpEnemy;

SoundEffectInstancemusicInstance; 
 

AnimatedSprite hero; 

doublecountdownTimer; //Seconds until

inttimeLevel = 240; 

publicint Width;

publicint Height; 

publicint time; 

List<Block> blocks;

List<AnimatedSprite> enemies; 

staticintScrollX;

publicintlevelLength; 

intcurrentLevel=1;

List<Gem> gems;

KeyboardStateoldState; 

int Score;

Menumenu;

GameStategameState = GameState.Menu;  

public Game1()

        {

graphics = newGraphicsDeviceManager(this);

Content.RootDirectory = "Content"; 

            Width = graphics.PreferredBackBufferWidth = 800;

            Height = graphics.PreferredBackBufferHeight = 480;

        } 

publicboolCollidesWithLevel(Rectanglerect)

        {

foreach (Blockblockin blocks)

            {

if (block.rect.Intersects(rect))

returntrue;

            }

returnfalse;

        }

publicRectangleGetHeroRect()

        {

returnhero.rect; 

        }

publicstaticRectangleGetScreenRect(Rectanglerect)

       {

RectanglescreenRect = rect;

screenRect.Offset(-ScrollX, 0); 

returnscreenRect;

        }

publicvoid Scroll(int dx)

        {

if (ScrollX + dx >= 0 &&ScrollX + dx <= levelLength - 800)

ScrollX += dx;

        } 

publicboolWillFallDown(Rectanglerect)

        {

Rectangle r = rect;

r.Offset(0, 5);

if (!CollidesWithLevel(r))

returntrue;

elsereturnfalse;

        }

publicvoidCreateLevel()

        {

//  currentLevel++;

countdownTimer = timeLevel;

if (currentLevel> 3)

currentLevel = 1;

newGame.Play(); 
 

blocks = newList<Block>();

gems = newList<Gem>();

enemies = newList<AnimatedSprite>(); 

string[] s = File.ReadAllLines("content/levels/level" + currentLevel + ".txt");

RectangleheroRect = newRectangle(0, Height - idleTexture.Height - 40, 60, 60);

hero.rect = heroRect;

levelLength = 40 * s[0].Length;

int x = 0;

int y = 0;

foreach (stringstrin s)

            {

foreach (char c instr)

                {

Rectanglerect = newRectangle(x, y, 40, 40);

if (c == 'X')

                    { 

Blockblock = newBlock(rect, blockTexture1);

blocks.Add(block);

                    }

if (c == 'Y')

                    {

Blockblock = newBlock(rect, blockTexture2);

blocks.Add(block);

                    }

if (c =='G')

                    {

RectanglegemRect = newRectangle(x+10, y+5, 20,20);

Gemgem = newGem(gemRect, gemTexture, this);

gems.Add(gem);

                    }

if (c == 'A')

                    {

RectangleenemyRect = newRectangle (x, y-25,60,60);

AnimatedSprite enemy = newAnimatedSprite(enemyRect, enemyIdleTexture, enemyRunTexture, enemyRunTexture, this);

Информация о работе Создание 2D игры по средствам XNAGameStudio 4.0