Jump to content

  • Log In with Google      Sign In   
  • Create Account

Joker123

Member Since 06 Jul 2012
Offline Last Active Feb 18 2014 04:49 PM

Topics I've Started

How can I use ads in a Windows Phone game?

17 February 2014 - 02:42 PM

I created an Application ID und an Ad unit ID in the Pubcenter, but I don't know how to use them in my XNA project. How can I use ads in a Windows Phone game?


How can I use Windows Phone sensors to move an object?

24 December 2013 - 09:24 AM

I want to use the Windows Phone sensors to move a ball in a Windows Phone game. I tried to move the ball with the accelerometer, but the ball doesn't move correctly if I tilt my Windows Phone device(Lumia 920) in a direction. 
For example, if I tilt the device to the left, the ball isn't moving to the left, instead the ball moves very strange. I don't know what I could change in my code so that the ball moves correctly.
What is wrong? Why is the ball not moving in the right direction when I tilt my Windows Phone device?

What should I change so that the ball moves correctly if I tilt the Windows Phone device?

public class Game1 : Microsoft.Xna.Framework.Game
{
    GraphicsDeviceManager graphics;
    SpriteBatch spriteBatch;
    Motion motion;
    Texture2D Ball;
    Vector2 BallPos = new Vector2(400, 300);
    Vector2 BallVelocity;

    void motion_CurrentValueChanged(object sender, SensorReadingEventArgs<MotionReading> e)
    {
        UpdateUI(e.SensorReading);
    }

    private void UpdateUI(MotionReading e)
    {               
        float accelerometerX = e.DeviceAcceleration.X;
        float accelerometerY = e.DeviceAcceleration.Y;
        speed.X += accelReading.X;
        speed.Y += -accelReading.Y;
        BallPos.X += speed.X *0.05f;
        BallPos.Y += speed.Y *0.05f;
    }

    public Game1()
    {
        graphics = new GraphicsDeviceManager(this);
        Content.RootDirectory = "Content";
        TargetElapsedTime = TimeSpan.FromTicks(333333);
        InactiveSleepTime = TimeSpan.FromSeconds(1);
        graphics.IsFullScreen = true;
    }

    protected override void Initialize()
    {
        if (Motion.IsSupported)
        {
            motion = new Motion();
            motion.TimeBetweenUpdates = TimeSpan.FromMilliseconds(20);
            motion.CurrentValueChanged += new EventHandler<SensorReadingEventArgs<MotionReading>>(motion_CurrentValueChanged);
            motion.Start();
        }

        base.Initialize();
    }


    protected override void LoadContent()
    {
        spriteBatch = new SpriteBatch(GraphicsDevice);
        Message = Content.Load<SpriteFont>("Arial");
        Ball = Content.Load<Texture2D>("ballbig");
    }

    protected override void Update(GameTime gameTime)
    {

        base.Update(gameTime);
    }

    protected override void Draw(GameTime gameTime)
    {
        GraphicsDevice.Clear(Color.CornflowerBlue);

        spriteBatch.Begin();
          spriteBatch.Draw(Ball, BallPos, null, Color.White, 0, new Vector2(Ball.Width/2,Ball.Height/2), 1f, SpriteEffects.None,1);          
        spriteBatch.End();

        base.Draw(gameTime);
    }
}

Difficulties with Animation class

03 March 2013 - 08:03 AM

I wrote a class to play my animations. But it just works if I play the entire animation. For example: If my spritesheet has 3 pictures, I call the Animation class like that to play the entire animation :

Player_Animation = new Animation(new List<Rectangle>(3), Content.Load<Texture2D>("walking"), TimeSpan.FromSeconds(1), Animation.Sequences.forwards, this, 0, 3);

 

That works.

But on the other hand: If my spritesheet has 3 pictures, and if I just want the first 2 pictures of the animation, I call the Animation class like this to play only the first 2 pictures of the animation:

Player_Animation = new Animation(new List<Rectangle>(3), Content.Load<Texture2D>("walking"), TimeSpan.FromSeconds(1), Animation.Sequences.forwards, this, 0, 2);

 

That doesn't work. I always get that "ArgumentOutOfRangeException was unhandled" error message in the following line(it's the last line of the Animation class):

batch.Draw(Texture, new Rectangle((int)PositionX, (int)PositionY, Texture.Width / SourceRects.Capacity, Texture.Height), SourceRects[_animIndex], Color.White,0,new Vector2(Texture.Width/2, Texture.Height/2),Flip,1);

 

 

What is wrong? Why can't I play an interval of the animation without getting that error message? Here's my Animation class:

public class Animation
{
    public SpriteEffects Flip;
    private Game1 game1;
    private int _animIndex, numberofsourceRects, framewidth, frameheight;
    private TimeSpan PassedTime;
    private List<Rectangle> SourceRects;
    private Texture2D Texture;
    private TimeSpan Duration;
    private Sequences Sequence;

        public enum Sequences
        {
          forwards, backwards, forwards_backwards, backwards_forwards
        }

        private void forwards(List<Rectangle> sourceRects, int framewidth, int frameheight, int start, int end)
        {
        numberofsourceRects = end;
        for (int i = start; i < numberofsourceRects; i++)
            sourceRects.Add(new Rectangle(i * framewidth, 0, framewidth, frameheight));
        }

        private void backwards(List<Rectangle> sourceRects, int framewidth, int frameheight, int start, int end)
        {
        numberofsourceRects = end;
        for (int i = start; i < numberofsourceRects; i++)
            sourceRects.Add(new Rectangle((numberofsourceRects - 1 - i) * framewidth, 0, framewidth, frameheight));
        }

        private void forwards_backwards(List<Rectangle> sourceRects, int framewidth, int frameheight, int start, int end)
        {
        numberofsourceRects = end;
        for (int i = start; i < numberofsourceRects; i++)
            sourceRects.Add(new Rectangle(i * framewidth, 0, framewidth, frameheight));
        for (int i = start; i < numberofsourceRects; i++)
            sourceRects.Add(new Rectangle((numberofsourceRects - 1 - i) * framewidth, 0, framewidth, frameheight));     
        }

        private void backwards_forwards(List<Rectangle> sourceRects, int framewidth, int frameheight, int start, int end)
        {
        numberofsourceRects = end;
        for (int i = start; i < numberofsourceRects; i++)
            sourceRects.Add(new Rectangle((numberofsourceRects - 1 - i) * framewidth, 0, framewidth, frameheight));
        for (int i = start; i < numberofsourceRects; i++)              
            sourceRects.Add(new Rectangle(i * framewidth, 0, framewidth, frameheight));
        }


    public Animation(List<Rectangle> sourceRects, Texture2D texture, TimeSpan duration, Sequences sequences, Game1 game, int start_interval, int end_interval) 
    {
        game1 = game;
        numberofsourceRects = sourceRects.Capacity;
        framewidth = texture.Width / numberofsourceRects;
        frameheight = texture.Height;

        switch (sequences)
        {
            case Sequences.forwards:
                {
                    forwards(sourceRects,framewidth,frameheight, start_interval, end_interval);
                    break;
                }

            case Sequences.backwards:
                {
                    backwards(sourceRects, framewidth, frameheight, start_interval, end_interval);
                    break;
                }

            case Sequences.forwards_backwards:
                {
                    forwards_backwards(sourceRects, framewidth, frameheight, start_interval, end_interval);           
                    break;
                }

            case Sequences.backwards_forwards:
                {
                    backwards_forwards(sourceRects, framewidth, frameheight, start_interval, end_interval);                 
                    break;
                }
        }
    SourceRects = sourceRects;
    Texture = texture;
    Duration = duration;
    Sequence = sequences;
 }

        public void Update(GameTime dt)
        {
            PassedTime += dt.ElapsedGameTime;
            if (PassedTime > Duration)
            {
                PassedTime -= Duration; 
            }
            var percent = PassedTime.TotalSeconds / Duration.TotalSeconds;
            _animIndex = (int)Math.Round(percent * (SourceRects.Capacity  -1));
        }

        public void Draw(SpriteBatch batch, float PositionX, float PositionY)
        {              
            numberofsourceRects = SourceRects.Capacity /2;
            if ((Sequence == Sequences.forwards_backwards) || (Sequence == Sequences.backwards_forwards))
              batch.Draw(Texture, new Rectangle((int)PositionX, (int)PositionY, Texture.Width / numberofsourceRects, Texture.Height), SourceRects[_animIndex], Color.White,0,new Vector2(Texture.Width/2, Texture.Height/2),Flip,1);
            else
              batch.Draw(Texture, new Rectangle((int)PositionX, (int)PositionY, Texture.Width / SourceRects.Capacity, Texture.Height), SourceRects[_animIndex], Color.White,0,new Vector2(Texture.Width/2, Texture.Height/2),Flip,1);
        }
 }     

 

 


How to save an integer variable to an XML file?

16 July 2012 - 05:31 AM

I know how to read content from an XML file , but I don't know how to write something into itPosted Image For example, I read an integer variable from an XML file and modify it. After modifying, I want to save the integer variable to the same XML file. The old integer value must be replaced with the new value. My game runs on Windows 7.
I load the XML file with this code:
	    List<Gamescore> scorexml = new List<Gamescore>();
protected override void LoadContent()
	    {
		    scorexml = Content.Load<List<Gamescore>>("Score");
		    foreach (Gamescore score in scorexml)
		    {
			    score.Load(Content);
		    }   
}
public class Gamescore
    {
	    int score;
	    public int Score
	    {
		    get { return score; }
		    set { score = value; }
	    }

ArgumentNullException was unhandled. What is wrong?

06 July 2012 - 08:53 AM

I have written a class to load an XML file but I always get this error message:

ArgumentNullException was unhandled
This method does not accept null for this parameter.
Parameter name: texture

What is wrong in the Sprite class?

Here is the entire code of Game1 and Sprite class(where I load the XML file):
namespace WindowsGame16
{
    public class Game1 : Microsoft.Xna.Framework.Game
    {
	    GraphicsDeviceManager graphics;
	    SpriteBatch spriteBatch;
	    Texture2D licht;
	    List<Sprite> sprites = new List<Sprite>();
	    public Game1()
	    {
		    graphics = new GraphicsDeviceManager(this);
		    Content.RootDirectory = "Content";
	    }
   
		
	    protected override void Initialize()
	    {
		    base.Initialize();
	    }
	    protected override void LoadContent()
	    {
		    spriteBatch = new SpriteBatch(GraphicsDevice);		  
		    sprites = Content.Load<List<Sprite>>("Levelinf");
		  
	    }
	    protected override void UnloadContent()
	    {
	    }
	    protected override void Update(GameTime gameTime)
	    {
		    base.Update(gameTime);
	    }
	    protected override void Draw(GameTime gameTime)
	    {
		    GraphicsDevice.Clear(Color.CornflowerBlue);
		    spriteBatch.Begin();
		    foreach (Sprite sprite in sprites)
			    sprite.Draw(spriteBatch);
		    spriteBatch.End();
		    base.Draw(gameTime);
	    }
    }
}
namespace SharedContent
{
    public class Sprite
{
    Vector2 position;
    float rotation;
    Vector2 scale;
    string textureAsset;
    Texture2D texture;
    public Vector2 Position
    {
	    get { return position; }
	    set { position = value; }
    }
    public float Rotation
    {
	    get { return rotation; }
	    set { rotation = value; }
    }
    public Vector2 Scale
    {
	    get { return scale; }
	    set { scale = value; }
    }
    public string TextureAsset
    {
	    get { return textureAsset; }
	    set { textureAsset = value; }
    }
    [ContentSerializerIgnore]
    public Texture2D Texture
    {
	    get { return texture; }
    }
    public void Load(ContentManager content)
    {
	    texture = content.Load<Texture2D>(textureAsset);
    }
    public void Draw(SpriteBatch batch)
    {
	    batch.Draw(
		    texture,
		    position,
		    null,
		    Color.White,
		    rotation,
		    Vector2.Zero,
		    scale,
		    SpriteEffects.None,
		    0f);
	    }
    }
}
And my XML file:
<?xml version="1.0" encoding="utf-8" ?>
<XnaContent>
  <Asset Type="System.Collections.Generic.List[SharedContent.Sprite]">
    <Item>
	  <Position>100 100</Position>
	  <Rotation>0</Rotation>
	  <Scale>.1 .1</Scale>
	  <TextureAsset>light</TextureAsset>
    </Item>
    <Item>
	  <Position>200 100</Position>
	  <Rotation>0</Rotation>
	  <Scale>.1 .1</Scale>
	  <TextureAsset>light</TextureAsset>
    </Item>
    <Item>
	  <Position>400 100</Position>
	  <Rotation>0</Rotation>
	  <Scale>.1 .1</Scale>
	  <TextureAsset>light</TextureAsset>
    </Item>
  </Asset>
</XnaContent>



WebRep

currentVote


noRating
noWeight

PARTNERS