Автор работы: Пользователь скрыл имя, 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.Список использованной литературы
{
shootSpeed = 20;
bulletSpeed = 15;
bulletDamage = 1;
Position = new Vector2(0, (Window.ClientBounds.Height - texture.Height) / 2);
}
protected override void SetBB()
{
base.SetBB();
BoundingBox temp = new BoundingBox(new Vector3(Position.X + 15, Position.Y + 15, 0),
new Vector3(Position.X + 100, Position.Y + 85, 0));
bb = temp;
}
public BattleCruiser(Texture2D texture, GameWindow window)
{
this.texture = texture;
timeFrame = (float)1 / 12;
frame = 0;
totalElapsed = 0;
speed = 5;
RestoreDefaults(window);
SetBB();
}
public void UpdateFrame(double elapsed)
{
totalElapsed += elapsed;
if (totalElapsed > timeFrame)
{
frame++;
frame = frame % (frameCount);
totalElapsed -= timeFrame;
}
}
public override void Draw(SpriteBatch spriteBatch)
{
int frameWidth = texture.Width / frameCount;
Rectangle rectangle = new Rectangle(frameWidth * frame, 0, frameWidth, texture.Height);
spriteBatch.Draw(texture, Position, rectangle, Color.White);
}
public override void Move(int x, int y, GameWindow Window)
{
Position += new Vector2(x, y) * speed;
if (Position.Y < 0)
Position = new Vector2(Position.X, 0);
if (Position.Y > Window.ClientBounds.Height - texture.Height)
Position = new Vector2(Position.X, Window.ClientBounds.Height - texture.Height);
if (Position.X < 0)
Position = new Vector2(0, Position.Y);
if (Position.X > Window.ClientBounds.Width - texture.Width / frameCount)
Position = new Vector2(Window.ClientBounds.
SetBB();
}
public Bullet[] Shoot(Texture2D bulletTexture)
{
return new Bullet[1] { new Bullet(Position + new Vector2(80, 45), bulletTexture, this.bulletSpeed) };
}
}
public sealed class Enemy : Moveable
{
private int dir = -1;
private int
counter = 0;
public int lives { get; set; }
public int
cost { get; set; }
protected override void SetBB()
{
BoundingBox temp = new BoundingBox(new Vector3(Position.X + 2, Position.Y + 3, 0),
new Vector3(Position.X + 45, Position.Y + 46, 0));
bb = temp;
}
public Enemy(Vector2 pos, Texture2D texture, int speed, int lives, int cost)
{
Position = pos;
this.speed = speed;
this.texture = texture;
this.lives = lives;
this.cost = cost;
SetBB();
}
public override void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(texture, Position, Color.White);
}
public override void Move(int x, int y, GameWindow Window)
{
Position += new Vector2(-speed, dir * speed);
SetBB();
if (counter++ % 20 == 0)
dir = -dir;
if (Position.X <= -texture.Width)
canBeDeleted = true;
}
}
public sealed class Bullet : Moveable
{
protected override void SetBB()
{
BoundingBox temp = new BoundingBox(new Vector3(Position.X + 1, Position.Y, 0),
new Vector3(Position.X + 20, Position.Y + 10, 0));
bb = temp;
}
public Bullet(Vector2 pos, Texture2D texture, int speed)
{
Position = pos;
this.speed = speed;
this.texture = texture;
SetBB();
}
public override void Draw(SpriteBatch spriteBatch)
{
spriteBatch.Draw(texture, Position, Color.White);
}
public override void Move(int x, int y, GameWindow Window)