• Advertisement
Sign in to follow this  

Help with Rectangle Lists (C# XNA)

This topic is 2108 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

[color=#4A4A4A]Basically, I've been taking a tutorial I found, and I added a Rectangle.[/color]
[color=#4A4A4A]A lot of people have said I should turn these two separate rectangles into a list. [/color]

[color=#4A4A4A]Looking at tutorials and posts, I've come up with this idea, but it doesn't work. When it hits a score>10, it doesn't stop drawing, unlike anything <10.[/color]

[color=#4A4A4A]Any advice on this would be great. Here's a link to the project, source code below. [url="http://dl.dropbox.com/u/30101266/SquareChaseHelp.zip"]http://dl.dropbox.co...reChaseHelp.zip[/url][/color]

[color=#4A4A4A][code]using System;
using System.Collections.Generic;
using System.Linq;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.GamerServices;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Media;

namespace SquareChase
{
/// <summary>
/// This is the main type for your game
/// </summary>
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
SpriteBatch spriteBatch;
Random rand = new Random();

Texture2D squareTexture;
Texture2D squareTexture2;
Texture2D squareTexture3;

Rectangle currentSquare;
Rectangle currentSquare2;
Rectangle currentSquare3;

List<Rectangle> rectangles = new List<Rectangle>();




int playerScore = 11;


int numberOfTextures = 2;


float timeRemaining = 0.0f;

const float TimePerSquare = 0.85f;
const float TimePerSquare2 = 1.00f;
const float TimePerSquare3 = 1.95f;
Color[] colors = new Color[3] { Color.Red, Color.Green, Color.Blue };

public Game1()
{
graphics = new GraphicsDeviceManager(this);
Content.RootDirectory = "Content";




}

/// <summary>
/// Allows the game to perform any initialization it needs to before starting to run.
/// This is where it can query for any required services and load any non-graphic
/// related content. Calling base.Initialize will enumerate through any components
/// and initialize them as well.
/// </summary>
protected override void Initialize()
{
// TODO: Add your initialization logic here
this.IsMouseVisible = true;




rectangles.Add(new Rectangle(
rand.Next(0, this.Window.ClientBounds.Width - 25),
rand.Next(0, this.Window.ClientBounds.Height - 25),
25, 25));

base.Initialize();
}

/// <summary>
/// LoadContent will be called once per game and is the place to load
/// all of your content.
/// </summary>
protected override void LoadContent()
{
// Create a new SpriteBatch, which can be used to draw textures.
spriteBatch = new SpriteBatch(GraphicsDevice);
squareTexture = Content.Load<Texture2D>(@"Textures\SQUARE");
squareTexture2 = Content.Load<Texture2D>(@"Textures\SQUARE2");
squareTexture3 = Content.Load<Texture2D>(@"Textures\SQUARE3");

Texture2D[] textures = new Texture2D[numberOfTextures];
for (int i = 0; i < numberOfTextures; i++)
{
string randomBackgroundAssetName = string.Concat("Content\\background", i);
textures[i] = Content.Load<Texture2D>(randomBackgroundAssetName) as Texture2D;
}


// TODO: use this.Content to load your game content here
}

/// <summary>
/// UnloadContent will be called once per game and is the place to unload
/// all content.
/// </summary>
protected override void UnloadContent()
{
// TODO: Unload any non ContentManager content here
}

/// <summary>
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input, and playing audio.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Update(GameTime gameTime)
{
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();

// TODO: Add your update logic here
if (timeRemaining == 0.0f && playerScore >= 10)
{
rectangles.Add(new Rectangle(rand.Next(0, this.Window.ClientBounds.Width - 25),
rand.Next(0, this.Window.ClientBounds.Height - 25),
25, 25));
timeRemaining = TimePerSquare;
}

if (timeRemaining == 0.0f && playerScore >= 5 && playerScore <= 9)
{
currentSquare2 = new Rectangle(
rand.Next(0, this.Window.ClientBounds.Width - 25),
rand.Next(0, this.Window.ClientBounds.Height - 25),
25, 25);
timeRemaining = TimePerSquare2;
}

if (timeRemaining == 0.0f && playerScore < 5)
{
currentSquare3 = new Rectangle(
rand.Next(0, this.Window.ClientBounds.Width - 25),
rand.Next(0, this.Window.ClientBounds.Height - 25),
25, 25);
timeRemaining = TimePerSquare3;

currentSquare2 = new Rectangle(
rand.Next(0, this.Window.ClientBounds.Width - 25),
rand.Next(0, this.Window.ClientBounds.Height - 25),
25, 25);
timeRemaining = TimePerSquare3;
}



MouseState mouse = Mouse.GetState();




if ((mouse.LeftButton == ButtonState.Pressed) &&
(currentSquare2.Contains(mouse.X, mouse.Y)))
{
playerScore++;
timeRemaining = 0.0f;
}
timeRemaining = MathHelper.Max(0, timeRemaining -
(float)gameTime.ElapsedGameTime.TotalSeconds);
this.Window.Title = "Click and hold the LMB and catch the squares! Score : " + playerScore.ToString();


if ((mouse.LeftButton == ButtonState.Pressed) &&
(currentSquare3.Contains(mouse.X, mouse.Y)))
{
playerScore++;
timeRemaining = 0.0f;
}
timeRemaining = MathHelper.Max(0, timeRemaining -
(float)gameTime.ElapsedGameTime.TotalSeconds);
this.Window.Title = "Click and hold the LMB and catch the squares! Score : " + playerScore.ToString();

foreach (Rectangle rect in rectangles)
{
if ((mouse.LeftButton == ButtonState.Pressed) &&
(rect.Contains(mouse.X, mouse.Y)))
{
playerScore++;
timeRemaining = 0.0f;
}
timeRemaining = MathHelper.Max(0, timeRemaining -
(float)gameTime.ElapsedGameTime.TotalSeconds);
this.Window.Title = "Click and hold the LMB and catch the squares! Score : " + playerScore.ToString();
}

base.Update(gameTime);
}

/// <summary>
/// This is called when the game should draw itself.
/// </summary>
/// <param name="gameTime">Provides a snapshot of timing values.</param>
protected override void Draw(GameTime gameTime)
{
GraphicsDevice.Clear(Color.Gray);
spriteBatch.Begin();
if (playerScore >= 10)
{
foreach (Rectangle rect in rectangles)
spriteBatch.Draw(squareTexture, rect, colors[playerScore % 3]);
}

if(playerScore >= 5 && playerScore <= 9)
{
spriteBatch.Draw(squareTexture2, currentSquare2, colors[playerScore % 3]);
}
if (playerScore < 5)
{
spriteBatch.Draw(squareTexture3, currentSquare3, colors[playerScore % 3]);
spriteBatch.Draw(squareTexture2, currentSquare2, colors[playerScore % 3]);
}

spriteBatch.End();

// TODO: Add your drawing code here

base.Draw(gameTime);
}
}
} [/code][/color]

Share this post


Link to post
Share on other sites
Advertisement
Sign in to follow this  

  • Advertisement