#region Using Statements
using System;
using System.Collections.Generic;
using Microsoft.Xna.Framework;
using Microsoft.Xna.Framework.Audio;
using Microsoft.Xna.Framework.Content;
using Microsoft.Xna.Framework.Graphics;
using Microsoft.Xna.Framework.Input;
using Microsoft.Xna.Framework.Storage;
#endregion
namespace MarcoPolo
{
///
/// This is the main type for your game
///
public class Game1 : Microsoft.Xna.Framework.Game
{
GraphicsDeviceManager graphics;
ContentManager content;
//Sprites
private static Texture2D SpriteShark;
private static Texture2D SpriteShark2;
private static Texture2D SpriteSharkc;
private static Texture2D SpriteShark2c;
private static Texture2D SpriteSharkAnimate;
private static Texture2D SpriteDragon;
private static Texture2D SpriteOrange;
private static Texture2D SpriteOrange2;
private static Texture2D SpriteOrangeAnimate;
private static Texture2D SpriteFish;
private static Texture2D SpriteFish2;
private static Texture2D SpriteFishc;
private static Texture2D SpriteFish2c;
private static Texture2D SpriteFishAnimate;
private static Texture2D SpriteWallpaper;
private static SpriteBatch SpriteBatch;
private Rectangle Wallpaper;
/*
* Class player
* int x
* int y
* Boolean jumping
* Boolean right // is facing right
*/
//player1
private int x = 0;
private int y = 0;
private Boolean jumping = false;
private Boolean right = false;
private Boolean still = true;
private int jumpIncrease = 0;
private int blinkCounter = 0;
// player2
private int x2 = 0;
private int y2 = 0;
private Boolean jumping2 = false;
private Boolean right2 = false;
private Boolean still2 = true;
private int jumpIncrease2 = 0;
private int blinkCounter2 = 0;
// player3
private int x3 = 0;
private int y3 = 0;
private Boolean jumping3 = false;
private Boolean right3 = false;
private Boolean still3 = true;
private int jumpIncrease3 = 0;
private int blinkCounter3 = 0;
//other
private Boolean countdown = false;
//ADDED
private Vector2 position2 = new Vector2(0f, 0f); // Specify Position of our Sprite ( unless CenterToScreen == true )
private Vector2 position3 = new Vector2(0f, 0f); // Specify Position of our Sprite ( unless CenterToScreen == true )
private Vector2 position = new Vector2(0f, 0f); // Specify Position of our Sprite ( unless CenterToScreen == true )
private Vector2 origin = new Vector2(32f, 28f); // Change the Sprite Center of Origin to specified coordinates. Default is 0, 0 ( Top, Left corner )
private bool originCentered = false; // If true, Sprite will Rotate around the SpriteTexture's Center
private bool centerToScreen = true; // Position the Sprite to Center of Screen
private Vector3 rotation = Vector3.Zero; // The starting rotation value in Radians
private float spriteSpeed = 4.0f; // A stimulant ingested by rowdy Sprites
private bool inverted = false; // Invert Controller Joystick Y
public Game1()
{
graphics = new GraphicsDeviceManager(this);
content = new ContentManager(Services);
//if all else fails use SpriteTexture = Texture.FromFile(...)
}
///
/// 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.
///
protected override void Initialize()
{
// TODO: Add your initialization logic here
base.Initialize();
}
///
/// Load your graphics content. If loadAllContent is true, you should
/// load content from both ResourceManagementMode pools. Otherwise, just
/// load ResourceManagementMode.Manual content.
///
/// Which type of content to load.
protected override void LoadGraphicsContent(bool loadAllContent)
{
if (loadAllContent)
{
// TODO: Load any ResourceManagementMode.Automatic content
SpriteBatch = new SpriteBatch(graphics.GraphicsDevice);
SpriteFish = content.Load("gfx/fish");
SpriteOrange = content.Load("gfx/orange");
//SpriteDragon = content.Load("gfx/dragon");
SpriteShark = content.Load("gfx/shark");
SpriteShark2 = content.Load("gfx/shark2");
SpriteSharkc = content.Load("gfx/sharkc");
SpriteShark2c = content.Load("gfx/shark2c");
SpriteFish2 = content.Load("gfx/fish2");
SpriteOrange2 = content.Load("gfx/orange2");
SpriteWallpaper = content.Load("gfx/background");
SpriteFishAnimate = content.Load("gfx/fish"); //SpriteFish;
SpriteOrangeAnimate = content.Load("gfx/orange"); //SpriteOrange;
Wallpaper = new Rectangle(0, 0, graphics.GraphicsDevice.Viewport.Width,
graphics.GraphicsDevice.Viewport.Height);
}
// TODO: Load any ResourceManagementMode.Manual content
}
///
/// Unload your graphics content. If unloadAllContent is true, you should
/// unload content from both ResourceManagementMode pools. Otherwise, just
/// unload ResourceManagementMode.Manual content. Manual content will get
/// Disposed by the GraphicsDevice during a Reset.
///
/// Which type of content to unload.
protected override void UnloadGraphicsContent(bool unloadAllContent)
{
if (unloadAllContent)
{
// TODO: Unload any ResourceManagementMode.Automatic content
content.Unload();
}
// TODO: Unload any ResourceManagementMode.Manual content
}
///
/// Allows the game to run logic such as updating the world,
/// checking for collisions, gathering input and playing audio.
///
/// Provides a snapshot of timing values.
protected override void Update(GameTime gameTime)
{
// SpriteBatch.Begin(SpriteBlendMode.AlphaBlend);
//***PLAYER1***
// Allows the game to exit
if (GamePad.GetState(PlayerIndex.One).Buttons.Back == ButtonState.Pressed)
this.Exit();
if ((GamePad.GetState(PlayerIndex.One).ThumbSticks.Left.X == 0) &&
(GamePad.GetState(PlayerIndex.One).ThumbSticks.Left.Y == 0) &&
(GamePad.GetState(PlayerIndex.One).DPad.Right != ButtonState.Pressed) &&
(GamePad.GetState(PlayerIndex.One).DPad.Left != ButtonState.Pressed) &&
(GamePad.GetState(PlayerIndex.One).DPad.Up != ButtonState.Pressed) &&
(GamePad.GetState(PlayerIndex.One).DPad.Down != ButtonState.Pressed))
{
still = true;
if (right)
{
SpriteFishAnimate = SpriteFish2c;
}
else
{
//set animation to
SpriteFishAnimate = SpriteFish2;
}
}
else
{
still = false; //movement is happening
}
// TODO: Add your update logic here
if ((GamePad.GetState(PlayerIndex.One).DPad.Right == ButtonState.Pressed)
|| (GamePad.GetState(PlayerIndex.One).ThumbSticks.Left.X >0))
{
x+=5;
position.X += GamePad.GetState(PlayerIndex.One).ThumbSticks.Left.X * spriteSpeed;
right = true;
}
if ((GamePad.GetState(PlayerIndex.One).DPad.Left == ButtonState.Pressed)
|| (GamePad.GetState(PlayerIndex.One).ThumbSticks.Left.X <0))
{
x-=5;
position.X -= GamePad.GetState(PlayerIndex.One).ThumbSticks.Left.X * spriteSpeed;
right = false;
}
if ((GamePad.GetState(PlayerIndex.One).DPad.Down == ButtonState.Pressed)
|| (GamePad.GetState(PlayerIndex.One).ThumbSticks.Left.Y < 0))
{
y+=5;
position.Y += GamePad.GetState(PlayerIndex.One).ThumbSticks.Left.Y * spriteSpeed;
}
if ((GamePad.GetState(PlayerIndex.One).DPad.Up == ButtonState.Pressed)
|| (GamePad.GetState(PlayerIndex.One).ThumbSticks.Left.Y > 0))
{
y-=5;
position.Y -= GamePad.GetState(PlayerIndex.One).ThumbSticks.Left.Y * spriteSpeed;
}
if (GamePad.GetState(PlayerIndex.One).Buttons.X == ButtonState.Pressed)
{
jumping = true;
}
if (jumping)
{
if (jumpIncrease < 280)
jumpIncrease+=5;
else
{
jumping = false;
}
}
if (!jumping)
{
if (jumpIncrease > 0)
{
jumpIncrease--;
}
}
//***PLAYER2***
// Allows the game to Exit
if (GamePad.GetState(PlayerIndex.Two).Buttons.Back == ButtonState.Pressed)
this.Exit();
if ((GamePad.GetState(PlayerIndex.Two).ThumbSticks.Left.X == 0) &&
(GamePad.GetState(PlayerIndex.Two).ThumbSticks.Left.Y == 0) &&
(GamePad.GetState(PlayerIndex.Two).DPad.Right != ButtonState.Pressed) &&
(GamePad.GetState(PlayerIndex.Two).DPad.Left != ButtonState.Pressed) &&
(GamePad.GetState(PlayerIndex.Two).DPad.Up != ButtonState.Pressed) &&
(GamePad.GetState(PlayerIndex.Two).DPad.Down != ButtonState.Pressed))
{
still2 = true;
if (right2)
{
SpriteSharkAnimate = SpriteShark2c;
}
else
{
//set animation to
SpriteSharkAnimate = SpriteShark2;
}
}
else
{
still2 = false; //movement is happening
}
// TODO: Add your update logic here
if ((GamePad.GetState(PlayerIndex.Two).DPad.Right == ButtonState.Pressed)
|| (GamePad.GetState(PlayerIndex.Two).ThumbSticks.Left.X > 0))
{
x2++;
position2.X += GamePad.GetState(PlayerIndex.Two).ThumbSticks.Left.X * spriteSpeed;
right2 = true;
}
if ((GamePad.GetState(PlayerIndex.Two).DPad.Left == ButtonState.Pressed)
|| (GamePad.GetState(PlayerIndex.Two).ThumbSticks.Left.X < 0))
{
x2--;
position2.X -= GamePad.GetState(PlayerIndex.Two).ThumbSticks.Left.X * spriteSpeed;
right2 = false;
}
if ((GamePad.GetState(PlayerIndex.Two).DPad.Down == ButtonState.Pressed)
|| (GamePad.GetState(PlayerIndex.Two).ThumbSticks.Left.Y < 0))
{
y2 += 2;
position2.Y += GamePad.GetState(PlayerIndex.Two).ThumbSticks.Left.Y * spriteSpeed;
}
if ((GamePad.GetState(PlayerIndex.Two).DPad.Up == ButtonState.Pressed)
|| (GamePad.GetState(PlayerIndex.Two).ThumbSticks.Left.Y > 0))
{
y2 -= 2;
position2.Y -= GamePad.GetState(PlayerIndex.Two).ThumbSticks.Left.Y * spriteSpeed;
}
if (GamePad.GetState(PlayerIndex.Two).Buttons.X == ButtonState.Pressed)
{
jumping2 = true;
}
if (jumping2)
{
if (jumpIncrease2 < 280)
jumpIncrease2 += 2;
else
{
jumping2 = false;
}
}
if (!jumping2)
{
if (jumpIncrease2 > 0)
{
jumpIncrease2--;
}
}
//***PLAYER3***
// Allows the game to Exit
if (GamePad.GetState(PlayerIndex.Three).Buttons.Back == ButtonState.Pressed)
this.Exit();
if ((GamePad.GetState(PlayerIndex.Three).ThumbSticks.Left.X == 0) &&
(GamePad.GetState(PlayerIndex.Three).ThumbSticks.Left.Y == 0) &&
(GamePad.GetState(PlayerIndex.Three).DPad.Right != ButtonState.Pressed) &&
(GamePad.GetState(PlayerIndex.Three).DPad.Left != ButtonState.Pressed) &&
(GamePad.GetState(PlayerIndex.Three).DPad.Up != ButtonState.Pressed) &&
(GamePad.GetState(PlayerIndex.Three).DPad.Down != ButtonState.Pressed))
{
still3 = true;
if (right3)
{
SpriteSharkAnimate = SpriteOrange2;// SpriteShark2c;
}
else
{
//set animation to
SpriteSharkAnimate = SpriteOrange2;
}
}
else
{
still3 = false; //movement is happening
}
// TODO: Add your update logic here
if ((GamePad.GetState(PlayerIndex.Three).DPad.Right == ButtonState.Pressed)
|| (GamePad.GetState(PlayerIndex.Three).ThumbSticks.Left.X > 0))
{
x3++;
position3.X += GamePad.GetState(PlayerIndex.Three).ThumbSticks.Left.X * spriteSpeed;
right3 = true;
}
if ((GamePad.GetState(PlayerIndex.Three).DPad.Left == ButtonState.Pressed)
|| (GamePad.GetState(PlayerIndex.Three).ThumbSticks.Left.X < 0))
{
x3--;
position3.X -= GamePad.GetState(PlayerIndex.Three).ThumbSticks.Left.X * spriteSpeed;
right3 = false;
}
if ((GamePad.GetState(PlayerIndex.Three).DPad.Down == ButtonState.Pressed)
|| (GamePad.GetState(PlayerIndex.Three).ThumbSticks.Left.Y < 0))
{
y3 += 2;
position3.Y += GamePad.GetState(PlayerIndex.Three).ThumbSticks.Left.Y * spriteSpeed;
}
if ((GamePad.GetState(PlayerIndex.Three).DPad.Up == ButtonState.Pressed)
|| (GamePad.GetState(PlayerIndex.Three).ThumbSticks.Left.Y > 0))
{
y3 -= 2;
position3.Y -= GamePad.GetState(PlayerIndex.Three).ThumbSticks.Left.Y * spriteSpeed;
}
if (GamePad.GetState(PlayerIndex.Three).Buttons.X == ButtonState.Pressed)
{
jumping3 = true;
}
if (jumping3)
{
if (jumpIncrease3 < 280)
jumpIncrease3 += 2;
else
{
jumping3 = false;
}
}
if (!jumping3)
{
if (jumpIncrease3 > 0)
{
jumpIncrease3--;
}
}
//***ALL***
base.Update(gameTime);
}
///
/// This is called when the game should draw itself.
///
/// Provides a snapshot of timing values.
protected override void Draw(GameTime gameTime)
{
//
graphics.GraphicsDevice.Clear(Color.Black);//CornflowerBlue);
SpriteBatch.Begin();
SpriteBatch.Draw(SpriteWallpaper, Wallpaper, null, Color.White);
//PLAYER 1
if (right)
{
SpriteFishAnimate = SpriteFish2;
blinkCounter++;
if (blinkCounter == 50)
{
SpriteFishAnimate = SpriteFish2c;
}
if (blinkCounter < 55)
{
}
else
{
blinkCounter = 0;
SpriteFishAnimate = SpriteFish2;
}
SpriteBatch.Draw(SpriteFishAnimate, new Vector2(x + 60, y + 100 + jumpIncrease), null, Color.White, rotation.Z, origin, 1.0f, SpriteEffects.None, 0.0f);
}
else
{
SpriteFishAnimate = SpriteFish;
blinkCounter++;
if (blinkCounter == 50)
{
SpriteFishAnimate = SpriteFishc;
blinkCounter = 0;
}
if (blinkCounter < 55)
{
}
else
{
blinkCounter = 0;
SpriteFishAnimate = SpriteFish;
}
SpriteBatch.Draw(SpriteFishAnimate, new Vector2(x + 60, y + 100 + jumpIncrease), null, Color.White, rotation.Z, origin, 1.0f, SpriteEffects.None, 0.0f);
}
//PLAYER 2
if (right2)
{
SpriteSharkAnimate = SpriteShark2;
blinkCounter2++;
if (blinkCounter2 == 50)
{
SpriteSharkAnimate = SpriteShark2c;
}
if (blinkCounter2 < 95)
{
}
else
{
blinkCounter2 = 0;
}
SpriteBatch.Draw(SpriteSharkAnimate, new Vector2(x2 + 550, y2 + 100 + jumpIncrease2), null, Color.White, rotation.Z, origin, 1.0f, SpriteEffects.None, 0.0f);
}
else
{
SpriteSharkAnimate = SpriteShark;
blinkCounter2++;
if (blinkCounter2 == 50)
{
SpriteSharkAnimate = SpriteSharkc;
}
if (blinkCounter2 < 95)
{
}
else
{
blinkCounter2 = 0;
}
SpriteBatch.Draw(SpriteSharkAnimate, new Vector2(x2 + 550, y2 + 100 + jumpIncrease2), null, Color.White, rotation.Z, origin, 1.0f, SpriteEffects.None, 0.0f);
}
//PLAYER 2
if (right3)
{
SpriteOrangeAnimate = SpriteOrange2;
blinkCounter3++;
if (blinkCounter3 == 50)
{
SpriteOrangeAnimate = SpriteOrange2;// SpriteOrange2c;
}
if (blinkCounter3 < 95)
{
}
else
{
blinkCounter3 = 0;
}
SpriteBatch.Draw(SpriteOrangeAnimate, new Vector2(x3 + 50, y3 + 450 + jumpIncrease3), null, Color.White, rotation.Z, origin, 1.0f, SpriteEffects.None, 0.0f);
}
else
{
SpriteOrangeAnimate = SpriteOrange;// SpriteShark;
blinkCounter3++;
if (blinkCounter3 == 50)
{
SpriteOrangeAnimate = SpriteOrange;// SpriteSharkc;
}
if (blinkCounter3 < 95)
{
}
else
{
blinkCounter3 = 0;
}
SpriteBatch.Draw(SpriteOrangeAnimate, new Vector2(x3 + 50, y3 + 450 + jumpIncrease3), null, Color.White, rotation.Z, origin, 1.0f, SpriteEffects.None, 0.0f);
}
SpriteBatch.End();
base.Draw(gameTime);
}
protected void CenterToScreen()
{
Viewport viewport = SpriteBatch.GraphicsDevice.Viewport;
position.X = viewport.Width / 2;
position.Y = viewport.Height / 2;
rotation.Z = 0;
}
}
}