#region Using<br />
using System;<br />
using System.Collections.Generic;<br />
using Microsoft.Xna.Framework;<br />
using Microsoft.Xna.Framework.Audio;<br />
using Microsoft.Xna.Framework.Content;<br />
using Microsoft.Xna.Framework.GamerServices;<br />
using Microsoft.Xna.Framework.Graphics;<br />
using Microsoft.Xna.Framework.Input;<br />
using Microsoft.Xna.Framework.Net;<br />
using Microsoft.Xna.Framework.Storage;<br />
#endregion<br />
<br />
namespace Bouncer<br />
{<br />
#region Bouncer Game : Main<br />
public class BouncerGame : Microsoft.Xna.Framework.Game<br />
{<br />
#region Variables<br />
GraphicsDeviceManager Graphics;<br />
SpriteBatch SpriteBatch;<br />
SpriteFont SpriteFont;<br />
<br />
Player Player;<br />
StaticBlock[] StaticBlock = new StaticBlock[200];<br />
<br />
int Stage = 1;<br />
<br />
enum GameState<br />
{<br />
Title,<br />
Game,<br />
StageSelect,<br />
Help<br />
}<br />
<br />
GameState State = new GameState();<br />
#endregion<br />
<br />
#region Performance Variables<br />
int FPS,<br />
FrameCounter;<br />
<br />
TimeSpan ElapsedTime = TimeSpan.Zero;<br />
#endregion<br />
<br />
#region Initialization<br />
public BouncerGame()<br />
{<br />
Graphics = new GraphicsDeviceManager(this);<br />
Content.RootDirectory = "Content";<br />
}<br />
<br />
protected override void Initialize()<br />
{<br />
IsFixedTimeStep = false;<br />
<br />
InitializePlayer();<br />
InitializeStaticBlock();<br />
<br />
base.Initialize();<br />
}<br />
<br />
private void InitializePlayer()<br />
{<br />
Player = new Player();<br />
}<br />
<br />
private void InitializeStaticBlock()<br />
{<br />
for (int numberOfStaticBlocks = 0; numberOfStaticBlocks < 200; ++numberOfStaticBlocks)<br />
{<br />
StaticBlock[numberOfStaticBlocks] = new StaticBlock();<br />
}<br />
}<br />
#endregion<br />
<br />
#region Load<br />
protected override void LoadContent()<br />
{<br />
SpriteBatch = new SpriteBatch<br />
(GraphicsDevice);<br />
<br />
SpriteFont = Content.Load<SpriteFont><br />
("Trebuchet MS");<br />
<br />
Player.Texture_Player = Content.Load<Texture2D><br />
("BouncerSprite_Bouncer");<br />
<br />
for (int numberOfStaticBlocks = 0; numberOfStaticBlocks < 200; ++numberOfStaticBlocks)<br />
{<br />
StaticBlock[numberOfStaticBlocks].Texture_StaticBlock = Content.Load<Texture2D><br />
("BouncerSprite_StaticBlock");<br />
}<br />
}<br />
#endregion<br />
<br />
#region Unload<br />
protected override void UnloadContent()<br />
{<br />
Content.Unload();<br />
Content.Dispose();<br />
}<br />
#endregion<br />
<br />
#region Update<br />
protected override void Update(GameTime gameTime)<br />
{<br />
#region Input<br />
{<br />
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed<br />
|| Keyboard.GetState().IsKeyDown(Keys.Escape))<br />
{<br />
this.Exit();<br />
}<br />
<br />
if (GamePad.GetState(PlayerIndex.One).Buttons.LeftStick == ButtonState.Pressed)<br />
{<br />
Player.Position = new Vector2(50, 50);<br />
}<br />
<br />
Player.ForwardMovement.X = GamePad.GetState(PlayerIndex.One).ThumbSticks.Left.X * 5;<br />
Player.ForwardMovement.Y = -GamePad.GetState(PlayerIndex.One).ThumbSticks.Left.Y * 5;<br />
}<br />
#endregion<br />
<br />
#region World<br />
{<br />
Player.Position += Player.ForwardMovement;<br />
<br />
<br />
<br />
for (int NumberOfStaticBlocks = 0; NumberOfStaticBlocks < 150; ++NumberOfStaticBlocks)<br />
{<br />
CheckBounds(Player, StaticBlock[NumberOfStaticBlocks]);<br />
}<br />
<br />
SetStaticBlockPositions(Stage);<br />
}<br />
#endregion<br />
<br />
#region Performance<br />
{<br />
ElapsedTime += gameTime.ElapsedGameTime;<br />
<br />
if (ElapsedTime > TimeSpan.FromSeconds(0))<br />
{<br />
ElapsedTime -= TimeSpan.FromSeconds(1);<br />
FPS = FrameCounter;<br />
FrameCounter = 0;<br />
}<br />
<br />
FrameCounter++;<br />
}<br />
#endregion<br />
<br />
base.Update(gameTime);<br />
}<br />
#endregion<br />
<br />
#region Draw<br />
protected override void Draw(GameTime gameTime)<br />
{<br />
Graphics.GraphicsDevice.Clear<br />
(Color.Gray);<br />
<br />
SpriteBatch.Begin();<br />
{<br />
#region Performance<br />
SpriteBatch.DrawString<br />
(SpriteFont, "Vector: " + Player.Position.ToString(), new Vector2(150, 50), Color.White);<br />
<br />
SpriteBatch.DrawString<br />
(SpriteFont, "Y Value: " + Player.ForwardMovement.Y / 2, new Vector2(450, 50), Color.White);<br />
<br />
if (FPS > 60)<br />
{<br />
SpriteBatch.DrawString<br />
(SpriteFont, "FPS: " + FPS, new Vector2(50, 50), Color.White);<br />
}<br />
<br />
if (FPS == 60)<br />
{<br />
SpriteBatch.DrawString<br />
(SpriteFont, "FPS: " + FPS, new Vector2(50, 50), Color.Gainsboro);<br />
}<br />
<br />
if (FPS < 60<br />
&& FPS >= 30)<br />
{<br />
SpriteBatch.DrawString<br />
(SpriteFont, "FPS: " + FPS, new Vector2(50, 50), Color.DarkGray);<br />
}<br />
<br />
if (FPS < 30)<br />
{<br />
SpriteBatch.DrawString<br />
(SpriteFont, "FPS: " + FPS, new Vector2(50, 50), Color.DimGray);<br />
}<br />
<br />
if (FPS <= 5)<br />
{<br />
SpriteBatch.DrawString<br />
(SpriteFont, "FPS: " + FPS, new Vector2(50, 50), Color.Black);<br />
}<br />
#endregion<br />
<br />
#region Game<br />
Player.DrawPlayer<br />
(SpriteBatch, Player.Texture_Player);<br />
<br />
for (int numberOfStaticBlocks = 0; numberOfStaticBlocks < 150; ++numberOfStaticBlocks)<br />
{<br />
StaticBlock[numberOfStaticBlocks].DrawStaticBlock<br />
(SpriteBatch, StaticBlock[numberOfStaticBlocks].Texture_StaticBlock);<br />
}<br />
#endregion<br />
}<br />
SpriteBatch.End();<br />
<br />
base.Draw(gameTime);<br />
}<br />
#endregion<br />
<br />
#region Setting Static Block Positions<br />
void SetStaticBlockPositions(int currentStage)<br />
{<br />
switch (Stage)<br />
{<br />
case 1:<br />
{<br />
#region Static Block Positions<br />
StaticBlock[0].Position = new Vector2(0, 0);<br />
StaticBlock[1].Position = new Vector2(0, 25);<br />
StaticBlock[2].Position = new Vector2(0, 50);<br />
StaticBlock[3].Position = new Vector2(0, 75);<br />
StaticBlock[4].Position = new Vector2(0, 100);<br />
StaticBlock[5].Position = new Vector2(0, 125);<br />
StaticBlock[6].Position = new Vector2(0, 150);<br />
StaticBlock[7].Position = new Vector2(0, 175);<br />
StaticBlock[8].Position = new Vector2(0, 200);<br />
StaticBlock[9].Position = new Vector2(0, 225);<br />
StaticBlock[10].Position = new Vector2(0, 250);<br />
StaticBlock[11].Position = new Vector2(0, 275);<br />
StaticBlock[12].Position = new Vector2(0, 300);<br />
StaticBlock[13].Position = new Vector2(0, 325);<br />
StaticBlock[14].Position = new Vector2(0, 350);<br />
StaticBlock[15].Position = new Vector2(0, 375);<br />
StaticBlock[16].Position = new Vector2(0, 400);<br />
StaticBlock[17].Position = new Vector2(0, 425);<br />
StaticBlock[18].Position = new Vector2(0, 450);<br />
StaticBlock[19].Position = new Vector2(0, 475);<br />
StaticBlock[20].Position = new Vector2(0, 500);<br />
StaticBlock[21].Position = new Vector2(0, 525);<br />
StaticBlock[22].Position = new Vector2(0, 550);<br />
StaticBlock[23].Position = new Vector2(0, 575);<br />
<br />
StaticBlock[24].Position = new Vector2(775, 0);<br />
StaticBlock[25].Position = new Vector2(775, 25);<br />
StaticBlock[26].Position = new Vector2(775, 50);<br />
StaticBlock[27].Position = new Vector2(775, 75);<br />
StaticBlock[28].Position = new Vector2(775, 100);<br />
StaticBlock[29].Position = new Vector2(775, 125);<br />
StaticBlock[30].Position = new Vector2(775, 150);<br />
StaticBlock[31].Position = new Vector2(775, 175);<br />
StaticBlock[32].Position = new Vector2(775, 200);<br />
StaticBlock[33].Position = new Vector2(775, 225);<br />
StaticBlock[34].Position = new Vector2(775, 250);<br />
StaticBlock[35].Position = new Vector2(775, 275);<br />
StaticBlock[36].Position = new Vector2(775, 300);<br />
StaticBlock[37].Position = new Vector2(775, 325);<br />
StaticBlock[38].Position = new Vector2(775, 350);<br />
StaticBlock[39].Position = new Vector2(775, 375);<br />
StaticBlock[40].Position = new Vector2(775, 400);<br />
StaticBlock[41].Position = new Vector2(775, 425);<br />
StaticBlock[42].Position = new Vector2(775, 450);<br />
StaticBlock[43].Position = new Vector2(775, 475);<br />
StaticBlock[44].Position = new Vector2(775, 500);<br />
StaticBlock[45].Position = new Vector2(775, 525);<br />
StaticBlock[46].Position = new Vector2(775, 550);<br />
StaticBlock[47].Position = new Vector2(775, 575);<br />
<br />
StaticBlock[48].Position = new Vector2(25, 575);<br />
StaticBlock[49].Position = new Vector2(50, 575);<br />
StaticBlock[50].Position = new Vector2(75, 575);<br />
StaticBlock[51].Position = new Vector2(100, 575);<br />
StaticBlock[52].Position = new Vector2(125, 575);<br />
StaticBlock[53].Position = new Vector2(150, 575);<br />
StaticBlock[54].Position = new Vector2(175, 575);<br />
StaticBlock[55].Position = new Vector2(200, 575);<br />
StaticBlock[56].Position = new Vector2(225, 575);<br />
StaticBlock[57].Position = new Vector2(250, 575);<br />
StaticBlock[58].Position = new Vector2(275, 575);<br />
StaticBlock[59].Position = new Vector2(300, 575);<br />
StaticBlock[60].Position = new Vector2(325, 575);<br />
StaticBlock[61].Position = new Vector2(350, 575);<br />
StaticBlock[62].Position = new Vector2(375, 575);<br />
StaticBlock[63].Position = new Vector2(400, 575);<br />
StaticBlock[64].Position = new Vector2(425, 575);<br />
StaticBlock[65].Position = new Vector2(450, 575);<br />
StaticBlock[66].Position = new Vector2(475, 575);<br />
StaticBlock[67].Position = new Vector2(500, 575);<br />
StaticBlock[68].Position = new Vector2(525, 575);<br />
StaticBlock[69].Position = new Vector2(550, 575);<br />
StaticBlock[70].Position = new Vector2(575, 575);<br />
StaticBlock[71].Position = new Vector2(600, 575);<br />
StaticBlock[72].Position = new Vector2(625, 575);<br />
StaticBlock[73].Position = new Vector2(650, 575);<br />
StaticBlock[74].Position = new Vector2(675, 575);<br />
StaticBlock[75].Position = new Vector2(700, 575);<br />
StaticBlock[76].Position = new Vector2(725, 575);<br />
StaticBlock[77].Position = new Vector2(750, 575);<br />
<br />
StaticBlock[78].Position = new Vector2(25, 0);<br />
StaticBlock[79].Position = new Vector2(50, 0);<br />
StaticBlock[80].Position = new Vector2(75, 0);<br />
StaticBlock[81].Position = new Vector2(100, 0);<br />
StaticBlock[82].Position = new Vector2(125, 0);<br />
StaticBlock[83].Position = new Vector2(150, 0);<br />
StaticBlock[84].Position = new Vector2(175, 0);<br />
StaticBlock[85].Position = new Vector2(200, 0);<br />
StaticBlock[86].Position = new Vector2(225, 0);<br />
StaticBlock[87].Position = new Vector2(250, 0);<br />
StaticBlock[88].Position = new Vector2(275, 0);<br />
StaticBlock[89].Position = new Vector2(300, 0);<br />
StaticBlock[90].Position = new Vector2(325, 0);<br />
StaticBlock[91].Position = new Vector2(350, 0);<br />
StaticBlock[92].Position = new Vector2(375, 0);<br />
StaticBlock[93].Position = new Vector2(400, 0);<br />
StaticBlock[94].Position = new Vector2(425, 0);<br />
StaticBlock[95].Position = new Vector2(450, 0);<br />
StaticBlock[96].Position = new Vector2(475, 0);<br />
StaticBlock[97].Position = new Vector2(500, 0);<br />
StaticBlock[98].Position = new Vector2(525, 0);<br />
StaticBlock[99].Position = new Vector2(550, 0);<br />
StaticBlock[100].Position = new Vector2(575, 0);<br />
StaticBlock[101].Position = new Vector2(600, 0);<br />
StaticBlock[102].Position = new Vector2(625, 0);<br />
StaticBlock[103].Position = new Vector2(650, 0);<br />
StaticBlock[104].Position = new Vector2(675, 0);<br />
StaticBlock[105].Position = new Vector2(700, 0);<br />
StaticBlock[106].Position = new Vector2(725, 0);<br />
StaticBlock[107].Position = new Vector2(750, 0);<br />
#endregion<br />
}<br />
break;<br />
}<br />
}<br />
#endregion<br />
<br />
#region Collision<br />
public void CheckBounds(Player player, StaticBlock block)<br />
{<br />
if (GamePad.GetState(PlayerIndex.One).ThumbSticks.Left.X < 0)<br />
{<br />
if (player.Position.X < block.Position.X + 25<br />
&& player.Position.X + 25 > block.Position.X)<br />
{<br />
player.Position.X = block.Position.X + 25;<br />
}<br />
}<br />
}<br />
#endregion<br />
}<br />
#endregion<br />
<br />
#region Player<br />
public class Player<br />
{<br />
public Texture2D Texture_Player;<br />
<br />
public Vector2 Position = new Vector2(50, 50),<br />
ForwardMovement;<br />
<br />
public float Rotation = 0.0f;<br />
<br />
public void DrawPlayer(SpriteBatch spriteBatch, Texture2D player)<br />
{<br />
spriteBatch.Draw<br />
(player, Position, null, Color.White, 0, new Vector2(0, 0), .5f, SpriteEffects.None, 1);<br />
}<br />
}<br />
#endregion<br />
<br />
#region Flare<br />
public class Flare<br />
{<br />
public Texture2D Texture_Flare;<br />
<br />
public Vector2 Position,<br />
ForwardMovement;<br />
<br />
public void DrawFlare(SpriteBatch spriteBatch, Texture2D flare)<br />
{<br />
spriteBatch.Draw<br />
(flare, Position, Color.White);<br />
}<br />
}<br />
#endregion<br />
<br />
#region Static Block<br />
public class StaticBlock<br />
{<br />
public Texture2D Texture_StaticBlock;<br />
<br />
public Vector2 Position;<br />
<br />
public void DrawStaticBlock(SpriteBatch spriteBatch, Texture2D staticBlock)<br />
{<br />
spriteBatch.Draw<br />
(staticBlock, Position, Color.White);<br />
}<br />
}<br />
#endregion<br />
}<br />
Can anyone help me with this monster? I want to be able to do collision detection for ALL OF my StaticBLocks (with the Player: BTW both 25X25) and make them not move in the direction they are bumping. I can do collision for 1 block, but how would I do this for all 200?
- I love D-flat!
- Need. More. Code.
|