public Game1() { graphics = new GraphicsDeviceManager(this); Content.RootDirectory = "Content"; camera = new BasicCamera(this); bar = new Cube(this); ball = new Ball(this); for (int i = 0; i < levels.Length; i++) levels[i] = new Level(this); currentLevel = levels[0]; Components.Add(camera); Components.Add(ball); Components.Add(bar); Services.AddService(typeof(ICameraService), camera); }
public void ClearLastCollision() { lastCollision = null; }
public bool CheckCollision(Ball ball) { bool verticalChange = false; bool cubeDestroyed = false; foreach (Cube cube in cubes) { if (cube != lastCollision && cube.Enabled && ball.BoundingSphere.Intersects(cube.BoundingBox)) { if ((IsBetween(ball.Position.Y, cube.Position.Y, cube.Size.Y) || (ball.Position.Y < cube.Position.Y && ball.Velocity.Y < 0.0f) || (ball.Position.Y > cube.Position.Y && ball.Velocity.Y > 0.0f)) && ball.Velocity.X != 0.0f) ball.Velocity *= new Vector2(-1.0f, 1.0f); else if (!verticalChange) { ball.Velocity *= new Vector2(1.0f, -1.0f); verticalChange = true; } if (cube.Lives > 0 && --cube.Lives == 0) { cube.Enabled = cube.Visible = false; score.Play(); cubeDestroyed = true; } else bounce.Play(); lastCollision = cube; } } return cubeDestroyed; }
public override void Initialize() { base.Initialize(); if (Difficulty == 0) { for (int i = 0; i < 3; i++) { Cube cube = new Cube(Game); cube.Position = new Vector2(0.0f, i * (cubeHeight + space) + offsetY); cube.Size = new Vector2(cubeWidth, cubeHeight); cube.Lives = 3 - i; cubes.Add(cube); } } else if (Difficulty == 1) { int count = 0; for (int i = 0; i < rows; i++) for (int j = 0; j < cols; j++) { Cube cube = new Cube(Game); cube.Position = new Vector2(((1 - cols) / 2.0f + j) * (cubeWidth + space), i * (cubeHeight + space) + offsetY); cube.Size = new Vector2(cubeWidth, cubeHeight); cube.Lives = count++ % 4; cubes.Add(cube); } } else { for (int i = 0; i < rows; i++) for (int j = 0; j < cols; j++) { Cube cube = new Cube(Game); cube.Position = new Vector2(((1 - cols) / 2.0f + j) * (cubeWidth + space), i * (cubeHeight + space) + offsetY); cube.Size = new Vector2(cubeWidth, cubeHeight); cube.Lives = i % 4; cubes.Add(cube); } } Cube[] walls = new Cube[3]; for (int i = 0; i < 3; i++) walls[i] = new Cube(Game); walls[0].Position = new Vector2(-(Width + wallSize) / 2.0f, Height / 2.0f); walls[0].Size = new Vector2(wallSize, Height + 2.0f * wallSize); walls[1].Position = new Vector2((Width + wallSize) / 2.0f, Height / 2.0f); walls[1].Size = new Vector2(wallSize, Height + 2.0f * wallSize); walls[2].Position = Vector2.UnitY * (Height + wallSize/ 2.0f); walls[2].Size = new Vector2(Width + 2.0f * wallSize, wallSize); cubes.AddRange(walls); foreach (Cube cube in cubes) cube.Initialize(); }