Автор работы: Пользователь скрыл имя, 09 Декабря 2010 в 17:27, курсовая работа
Подобные игры часто кажутся очень похожими друг на друга, что неудивительно — ведь жанр определяется довольно чёткими рамками — разновидностей их существует достаточно. С противоположных сторон жанра находятся «маниакальные» шмапы, где за успех отвечают рефлексы игрока, и «методические», где упор делается на память и стратегический подход.
Я выбрал именно этот жанр потому, что, на мой взгляд, игры этого жанра являются самыми увлекательными аркадными играми. В детстве я всегда любил играть именно в такие игры на своём стареньком Nintendo. Хотя реализаций «чистого» шмапа для Nintendo я так и не увидел, зато я играл в «чистые» шмапы позже, на ПК. И они доставляли мне много-много радости. Надеюсь, мой курсовой проект тоже кому-нибудь доставит радость.
1.Введение 3
2.Обзор предметной области 4
1.XNA Framework 4
2.Платформа .NET Framework 6
3.C# 8
3.Описание игры 9
4.Диаграммы классов 10
5.Описание основных классов и методов 11
6.Заключение 19
7.Список использованной литературы
{
if
(bullet is Bullet && bullet.bb.Intersects(enemy.bb)
{
if ((((enemy as Enemy).lives) -= battleCruiser.bulletDamage) <= 0)
{
}
tempObjects.Add((bullet as Moveable).Boom(
bullet.canBeDeleted = true;
}
}
if
(enemy.bb.Intersects(
{
if ((((enemy as Enemy).lives) -= 5) <= 0)
{
tempObjects.Add((enemy as Moveable).Boom(
enemy.canBeDeleted = true;
}
tempObjects.Add(battleCruiser.
battleCruiser.RestoreDefaults(
lives--;
bulletCounter = 0;
score -= 20;
}
}
}
}
protected void RefreshObjects()
{
if (tempObjects.Count != 0)
{
foreach (GameObject obj in tempObjects)
{
objects.Add(obj);
}
tempObjects.Clear();
}
for (int i = 0; i < objects.Count; i++)
{
if (objects[i].canBeDeleted)
objects.RemoveAt(i);
}
}
Все объекты в игре разделены на информационные панели и игровые объекты.
Базовый класс для всех игровых объектов – GameObject. В нем реализованы основные методы (виртуальные SetBB, Draw) и свойства (texture, Position, bb, canBeDeleted). Далее от этого класса наследуются:
От
класса NotMoveable наследуются классы Bonus и
Explosion:
public sealed class Explosion : NotMoveable
{
private int frameCount = 2;
private double timeFrame;
private int frame;
private double
totalElapsed;
public Explosion(Vector2 pos, Texture2D texture)
{
Position = pos;
timeFrame = (float)1 / 8;
frame = 0;
totalElapsed = 0;
canBeDeleted = false;
lifeTime = 20;
this.texture = texture;
}
public void UpdateFrame(double elapsed)
{
totalElapsed += elapsed;
if (totalElapsed > timeFrame)
{
frame = ++frame % frameCount;
totalElapsed -= timeFrame;
}
}
public override void Draw(SpriteBatch spriteBatch)
{
base.Draw(spriteBatch);
int frameWidth = texture.Width / frameCount;
Rectangle rectangle = new Rectangle(frameWidth * frame, 0, frameWidth, texture.Height);
spriteBatch.Draw(texture, Position, rectangle, Color.White);
}
}
public sealed class Bonus : NotMoveable
{
public int
type { get; set; }
public Bonus(Vector2 pos, int type, Texture2D texture)
{
Position = pos;
this.type = type;
this.texture = texture;
lifeTime = 250;
canBeDeleted = false;
SetBB();
}
public override void Draw(SpriteBatch spriteBatch)
{
base.Draw(spriteBatch);
spriteBatch.Draw(texture, Position, Color.White);
}
protected override void SetBB()
{
BoundingBox temp = new BoundingBox(new Vector3(Position.X, Position.Y, 0),
new Vector3(Position.X + 50, Position.Y + 50, 0));
bb = temp;
}
}
От класса Moveable наследуются классы BattleCruiser, Enemy и Bullet.
public sealed class BattleCruiser : Moveable
{
private int frameCount = 6;
private double timeFrame;
private int frame;
private double
totalElapsed;
public int bulletDamage { get; set; }
public int bulletSpeed { get; set; }
public int
shootSpeed { get; set; }
public void RestoreDefaults(GameWindow Window)