public Collectible(Texture2D sprite, Vector2 position, Tile currentTile) { Active = true; drawing = sprite; this.position = position; CurrentTile = currentTile; }
/// <summary> /// Moves the character. /// </summary> /// <param name="actualTile">The actual tile.</param> /// <returns>Tile.</returns> public Tile MoveCharacter(Tile actualTile) { Tile destination = actualTile; if (police.actualTile.GetPosition().X == police.Player.actualTile.GetPosition().X) { if (police.actualTile.GetPosition().Y > police.Player.actualTile.GetPosition().Y) { police.XSpeed = 0; police.YSpeed = -DespicableGame.SPEED * 2; return actualTile.TopTile; } else { police.XSpeed = 0; police.YSpeed = DespicableGame.SPEED * 2; return actualTile.BotomTile; } } else { if (police.actualTile.GetPosition().X > police.Player.actualTile.GetPosition().X) { police.XSpeed = -DespicableGame.SPEED * 2; police.YSpeed = 0; return actualTile.LeftTile; } else { police.XSpeed = DespicableGame.SPEED * 2; police.YSpeed = 0; return actualTile.RightTile; } } }
/// <summary> /// Initializes a new instance of the <see cref="ExitShip"/> class. /// </summary> /// <param name="image">The image.</param> /// <param name="tile">The tile.</param> public ExitShip(Texture2D image, Tile tile) { this.position = tile.GetPosition(); this.image = image; this.tile = tile; visible = false; }
/// <summary> /// Initializes a new instance of the <see cref="Teleporter"/> class. /// </summary> /// <param name="topTile">The top tile.</param> /// <param name="botomTile">The botom tile.</param> /// <param name="leftTile">The left tile.</param> /// <param name="rightTile">The right tile.</param> public Teleporter(Tile topTile, Tile botomTile, Tile leftTile, Tile rightTile) { this.TopTile = topTile; this.BotomTile = botomTile; this.LeftTile = leftTile; this.RightTile = rightTile; }
/// <summary> /// Initializes a new instance of the <see cref="Money"/> class. /// </summary> /// <param name="image">The image.</param> /// <param name="tile">The tile.</param> public Money(Texture2D image, Tile tile) { this.position = tile.GetPosition(); this.image = image; this.tile = tile; visible = true; }
/// <summary> /// Initializes a new instance of the <see cref="Character"/> class. /// </summary> /// <param name="sprite">The sprite.</param> /// <param name="position">The position.</param> /// <param name="actualTile">The actual tile.</param> public Character(Texture2D sprite, Vector2 position, Tile actualTile) { XSpeed = 0; YSpeed = 0; drawing = sprite; this.position = position; this.actualTile = actualTile; }
/// <summary> /// Initializes a new instance of the <see cref="Police"/> class. /// </summary> /// <param name="drawing">The drawing.</param> /// <param name="position">The position.</param> /// <param name="actualTile">The actual tile.</param> /// <param name="player">The player.</param> public Police(Texture2D drawing, Vector2 position, Tile actualTile, PlayableCharacter player) : base(drawing, position, actualTile) { this.drawing = drawing; this.position = position; this.actualTile = actualTile; this.state = new NormalState(this); this.player = player; }
/// <summary> /// Initializes a new instance of the <see cref="Character" /> class. /// </summary> /// <param name="sprite">The sprite.</param> /// <param name="position">The position.</param> /// <param name="actualTile">The actual tile.</param> public PlayableCharacter(Texture2D sprite, Vector2 position, Tile actualTile) : base(sprite, position, actualTile) { Destination = null; nbOfCurrentLives = NUMBER_OF_LIVES_AT_BEGINING; Alive = true; hardcoreMode = false; onStarPower = false; armed = false; }
/// <summary> /// Initializes a new instance of the <see cref="Projectile"/> class. /// </summary> /// <param name="sprite">The sprite.</param> /// <param name="position">The position.</param> /// <param name="actualTile">The actual tile.</param> /// <param name="directions">The directions.</param> public Projectile(Texture2D sprite, Vector2 position, Tile actualTile, Directions directions) { drawing = sprite; this.position = position; this.actualTile = actualTile; this.direction = directions; this.hasExpired = false; this.XSpeed = 0; this.YSpeed = 0; }
public PlayerCharacter(Texture2D drawing, Vector2 position, Tile currentTile) : base(drawing, position, currentTile) { unleashed = false; powerUpInStore = null; ResetLives(); baseSpeed = 4; Speed = baseSpeed; goalCollected = 0; looksScary = false; }
public Character(Texture2D sprite, Vector2 position, Tile currentTile, bool isFriendly = true) { SpeedX = 0; SpeedY = 0; drawing = sprite; this.position = position; CurrentTile = currentTile; Destination = currentTile; this.isFriendly = isFriendly; stunned = false; }
/// <summary> /// Move the AI. /// </summary> /// <param name="aiTile">The ai tile.</param> /// <returns>Tile.</returns> public override Tile AIMovement(Tile aiTile) { Random r = new Random(); if (labyrinth == null) { return actualTile; } while (true) { int randomChoice = r.Next(4); if (randomChoice == 0) { if (actualTile.yOrder > 0) { XSpeed = 0; YSpeed = -DespicableGame.SPEED; return labyrinth.GetTile(actualTile.xOrder, actualTile.yOrder - 1); } } if (randomChoice == 1) { if (actualTile.yOrder < 9) { XSpeed = 0; YSpeed = DespicableGame.SPEED; return labyrinth.GetTile(actualTile.xOrder, actualTile.yOrder + 1); } } if (randomChoice == 2) { if (actualTile.xOrder > 0) { XSpeed = -DespicableGame.SPEED; YSpeed = 0; return labyrinth.GetTile(actualTile.xOrder - 1, actualTile.yOrder); } } if (randomChoice == 3) { if (actualTile.xOrder < 13) { XSpeed = DespicableGame.SPEED; YSpeed = 0; return labyrinth.GetTile(actualTile.xOrder + 1, actualTile.yOrder); } } } }
//AI totalement random et qui ne peut pas entrer dans les téléporteurs. À revoir absolument. /// <summary> /// Ais the movement. /// </summary> /// <param name="aiTile">The ai tile.</param> /// <returns>Tile.</returns> public virtual Tile AIMovement(Tile aiTile) { Random r = new Random(); while (true) { int randomChoice = r.Next(4); if (randomChoice == 0) { //Plus efficace qu'un &&, dès que la première condition courante est remplie, on arrête le test if (!(aiTile.TopTile == null || aiTile.TopTile is Teleporter)) { XSpeed = 0; YSpeed = -DespicableGame.SPEED; return aiTile.TopTile; } } if (randomChoice == 1) { if (!(aiTile.BotomTile == null || aiTile.BotomTile is Teleporter)) { XSpeed = 0; YSpeed = DespicableGame.SPEED; return aiTile.BotomTile; } } if (randomChoice == 2) { if (!(aiTile.LeftTile == null || aiTile.LeftTile is Teleporter)) { XSpeed = -DespicableGame.SPEED; YSpeed = 0; return aiTile.LeftTile; } } if (randomChoice == 3) { if (!(aiTile.RightTile == null || aiTile.RightTile is Teleporter)) { XSpeed = DespicableGame.SPEED; YSpeed = 0; return aiTile.RightTile; } } } }
/// <summary> /// Initializes a new instance of the <see cref="PowerUp"/> class. /// </summary> /// <param name="position">The position.</param> /// <param name="actualTile">The actual tile.</param> public PowerUp(Vector2 position, Tile actualTile) { //this.drawing = drawing; this.position = position; this.actualTile = actualTile; int rnGesus = rand.Next(2); if (rnGesus == 0) type = PowerUpType.star; else type = PowerUpType.weapon; duration = new Timer(LIFESPAN); duration.Elapsed += ExpirationTimeHasPassed; duration.Enabled = true; hasExpired = false; }
public NonPlayerCharacter(Texture2D drawing, Vector2 position, Tile currentTile, bool isFriendly) : base(drawing, position, currentTile, isFriendly) { baseSpeed = 2; Speed = baseSpeed; }
public float DistanceToTile(Tile tile) { Vector2 currentPosition = new Vector2(Destination.GetPosition().X, Destination.GetPosition().Y); Vector2 testDistance = new Vector2(tile.GetPosition().X, tile.GetPosition().Y); return Vector2.Distance(testDistance, currentPosition); }
/// <summary> /// Initializes a new instance of the <see cref="Labyrinth"/> class. /// </summary> public Labyrinth() { _tiles = new Tile[WIDTH][]; for (int i = 0; i < WIDTH; i++) { _tiles[i] = new Tile[HEIGHT]; } policeSpawnPoints.Add(new KeyValuePair<int, int>(6, 0)); policeSpawnPoints.Add(new KeyValuePair<int, int>(7, 0)); policeSpawnPoints.Add(new KeyValuePair<int, int>(0, 4)); policeSpawnPoints.Add(new KeyValuePair<int, int>(0, 5)); policeSpawnPoints.Add(new KeyValuePair<int, int>(6, 9)); policeSpawnPoints.Add(new KeyValuePair<int, int>(7, 9)); policeSpawnPoints.Add(new KeyValuePair<int, int>(13, 4)); policeSpawnPoints.Add(new KeyValuePair<int, int>(13, 5)); _tiles[0][0] = new Tile(5, 0, 0); _tiles[0][1] = new Tile(6, 0, 1); _tiles[0][2] = new Tile(5, 0, 2); _tiles[0][3] = new Tile(6, 0, 3); _tiles[0][4] = new Tile(13, 0, 4); _tiles[0][5] = new Tile(14, 0, 5); _tiles[0][6] = new Tile(5, 0, 6); _tiles[0][7] = new Tile(4, 0, 7); _tiles[0][8] = new Tile(12, 0, 8); _tiles[0][9] = new Tile(6, 0, 9); _tiles[1][0] = new Tile(3, 1, 0); _tiles[1][1] = new Tile(9, 1, 1); _tiles[1][2] = new Tile(10, 1, 2); _tiles[1][3] = new Tile(1, 1, 3); _tiles[1][4] = new Tile(4, 1, 4); _tiles[1][5] = new Tile(12, 1, 5); _tiles[1][6] = new Tile(2, 1, 6); _tiles[1][7] = new Tile(3, 1, 7); _tiles[1][8] = new Tile(5, 1, 8); _tiles[1][9] = new Tile(10, 1, 9); _tiles[2][0] = new Tile(3, 2, 0); _tiles[2][1] = new Tile(13, 2, 1); _tiles[2][2] = new Tile(4, 2, 2); _tiles[2][3] = new Tile(2, 2, 3); _tiles[2][4] = new Tile(9, 2, 4); _tiles[2][5] = new Tile(6, 2, 5); _tiles[2][6] = new Tile(3, 2, 6); _tiles[2][7] = new Tile(11, 2, 7); _tiles[2][8] = new Tile(3, 2, 8); _tiles[2][9] = new Tile(7, 2, 9); _tiles[3][0] = new Tile(1, 3, 0); _tiles[3][1] = new Tile(12, 3, 1); _tiles[3][2] = new Tile(10, 3, 2); _tiles[3][3] = new Tile(9, 3, 3); _tiles[3][4] = new Tile(6, 3, 4); _tiles[3][5] = new Tile(9, 3, 5); _tiles[3][6] = new Tile(8, 3, 6); _tiles[3][7] = new Tile(6, 3, 7); _tiles[3][8] = new Tile(1, 3, 8); _tiles[3][9] = new Tile(10, 3, 9); _tiles[4][0] = new Tile(3, 4, 0); _tiles[4][1] = new Tile(5, 4, 1); _tiles[4][2] = new Tile(6, 4, 2); _tiles[4][3] = new Tile(5, 4, 3); _tiles[4][4] = new Tile(8, 4, 4); _tiles[4][5] = new Tile(4, 4, 5); _tiles[4][6] = new Tile(6, 4, 6); _tiles[4][7] = new Tile(9, 4, 7); _tiles[4][8] = new Tile(8, 4, 8); _tiles[4][9] = new Tile(6, 4, 9); _tiles[5][0] = new Tile(9, 5, 0); _tiles[5][1] = new Tile(2, 5, 1); _tiles[5][2] = new Tile(3, 5, 2); _tiles[5][3] = new Tile(3, 5, 3); _tiles[5][4] = new Tile(5, 5, 4); _tiles[5][5] = new Tile(10, 5, 5); _tiles[5][6] = new Tile(9, 5, 6); _tiles[5][7] = new Tile(4, 5, 7); _tiles[5][8] = new Tile(4, 5, 8); _tiles[5][9] = new Tile(10, 5, 9); _tiles[6][0] = new Tile(7, 6, 0); _tiles[6][1] = new Tile(3, 6, 1); _tiles[6][2] = new Tile(9, 6, 2); _tiles[6][3] = new Tile(8, 6, 3); _tiles[6][4] = new Tile(10, 6, 4); _tiles[6][5] = new Tile(5, 6, 5); _tiles[6][6] = new Tile(12, 6, 6); _tiles[6][7] = new Tile(2, 6, 7); _tiles[6][8] = new Tile(3, 6, 8); _tiles[6][9] = new Tile(7, 6, 9); _tiles[7][0] = new Tile(11, 7, 0); _tiles[7][1] = new Tile(1, 7, 1); _tiles[7][2] = new Tile(4, 7, 2); _tiles[7][3] = new Tile(12, 7, 3); _tiles[7][4] = new Tile(6, 7, 4); _tiles[7][5] = new Tile(3, 7, 5); _tiles[7][6] = new Tile(5, 7, 6); _tiles[7][7] = new Tile(2, 7, 7); _tiles[7][8] = new Tile(3, 7, 8); _tiles[7][9] = new Tile(11, 7, 9); _tiles[8][0] = new Tile(13, 8, 0); _tiles[8][1] = new Tile(2, 8, 1); _tiles[8][2] = new Tile(9, 8, 2); _tiles[8][3] = new Tile(6, 8, 3); _tiles[8][4] = new Tile(9, 8, 4); _tiles[8][5] = new Tile(8, 8, 5); _tiles[8][6] = new Tile(2, 8, 6); _tiles[8][7] = new Tile(9, 8, 7); _tiles[8][8] = new Tile(0, 8, 8); _tiles[8][9] = new Tile(14, 8, 9); _tiles[9][0] = new Tile(5, 9, 0); _tiles[9][1] = new Tile(8, 9, 1); _tiles[9][2] = new Tile(6, 9, 2); _tiles[9][3] = new Tile(9, 9, 3); _tiles[9][4] = new Tile(4, 9, 4); _tiles[9][5] = new Tile(12, 9, 5); _tiles[9][6] = new Tile(10, 9, 6); _tiles[9][7] = new Tile(5, 9, 7); _tiles[9][8] = new Tile(8, 9, 8); _tiles[9][9] = new Tile(14, 9, 9); _tiles[10][0] = new Tile(3, 10, 0); _tiles[10][1] = new Tile(5, 10, 1); _tiles[10][2] = new Tile(0, 10, 2); _tiles[10][3] = new Tile(12, 10, 3); _tiles[10][4] = new Tile(8, 10, 4); _tiles[10][5] = new Tile(12, 10, 5); _tiles[10][6] = new Tile(6, 10, 6); _tiles[10][7] = new Tile(3, 10, 7); _tiles[10][8] = new Tile(5, 10, 8); _tiles[10][9] = new Tile(6, 10, 9); _tiles[11][0] = new Tile(3, 11, 0); _tiles[11][1] = new Tile(3, 11, 1); _tiles[11][2] = new Tile(1, 11, 2); _tiles[11][3] = new Tile(6, 11, 3); _tiles[11][4] = new Tile(5, 11, 4); _tiles[11][5] = new Tile(12, 11, 5); _tiles[11][6] = new Tile(8, 11, 6); _tiles[11][7] = new Tile(2, 11, 7); _tiles[11][8] = new Tile(3, 11, 8); _tiles[11][9] = new Tile(3, 11, 9); _tiles[12][0] = new Tile(9, 12, 0); _tiles[12][1] = new Tile(2, 12, 1); _tiles[12][2] = new Tile(11, 12, 2); _tiles[12][3] = new Tile(1, 12, 3); _tiles[12][4] = new Tile(8, 12, 4); _tiles[12][5] = new Tile(12, 12, 5); _tiles[12][6] = new Tile(4, 12, 6); _tiles[12][7] = new Tile(8, 12, 7); _tiles[12][8] = new Tile(10, 12, 8); _tiles[12][9] = new Tile(3, 12, 9); _tiles[13][0] = new Tile(13, 13, 0); _tiles[13][1] = new Tile(8, 13, 1); _tiles[13][2] = new Tile(12, 13, 2); _tiles[13][3] = new Tile(10, 13, 3); _tiles[13][4] = new Tile(13, 13, 4); _tiles[13][5] = new Tile(14, 13, 5); _tiles[13][6] = new Tile(9, 13, 6); _tiles[13][7] = new Tile(12, 13, 7); _tiles[13][8] = new Tile(12, 13, 8); _tiles[13][9] = new Tile(10, 13, 9); for (int i = 0; i < WIDTH; i++) { for (int j = 0; j < HEIGHT; j++) { if (!_tiles[i][j].IsTopWall()) { _tiles[i][j].TopTile = _tiles[i][j - 1]; } if (!_tiles[i][j].IsBotomWall()) { _tiles[i][j].BotomTile = _tiles[i][j + 1]; } if (!_tiles[i][j].IsLeftWall()) { _tiles[i][j].LeftTile = _tiles[i - 1][j]; } if (!_tiles[i][j].IsRightWall()) { _tiles[i][j].RightTile = _tiles[i + 1][j]; } } } //Pour tester le policier, on lui offre une ouverture _tiles[6][9].TopTile = _tiles[6][8]; _tiles[7][9].TopTile = _tiles[7][8]; _tiles[6][0].BotomTile = _tiles[6][1]; _tiles[7][0].BotomTile = _tiles[7][1]; _tiles[0][4].RightTile = _tiles[1][4]; _tiles[0][5].RightTile = _tiles[1][5]; _tiles[13][4].LeftTile = _tiles[12][4]; _tiles[13][5].LeftTile = _tiles[12][5]; //On place le téléporteur Teleporter teleporter = new Teleporter(_tiles[0][0], _tiles[13][0], _tiles[0][9], _tiles[13][9]); _tiles[6][4].RightTile = teleporter; _tiles[7][4].LeftTile = teleporter; }
public Minion(Texture2D dessin, Vector2 position, Tile currentTile, bool isFriendly) : base(dessin, position, currentTile, isFriendly) { CurrentState = new Wander(this); }
public void VerifyMovement(Tile tileDestionation, int xSpeed, int ySpeed) { //Si la direction choisie n'est pas nulle if (tileDestionation != null) { //On vérifie si la case est un téléporteur Tile teleportationTest = TestTeleporter(tileDestionation); //Si non, on bouge if (teleportationTest == null) { Destination = tileDestionation; XSpeed = xSpeed; YSpeed = ySpeed; } //Si oui, on se téléporte. else { actualTile = teleportationTest; position = new Vector2(actualTile.GetPosition().X, actualTile.GetPosition().Y); } CheckIfTileContainsMoney(tileDestionation); } }
public ConfusedGhostMinion(Texture2D drawing, Vector2 position, Tile actualTile, Labyrinth lab) : base(drawing, position, actualTile) { labyrinth = lab; Destination = AIMovement(actualTile); }
/// <summary> /// Checks if tile contains money. /// </summary> /// <param name="tileDestionation">The tile destionation.</param> /// <returns><c>true</c> if XXXX, <c>false</c> otherwise.</returns> private bool CheckIfTileContainsMoney(Tile tileDestionation) { if (tileDestionation.Money != null) return tileDestionation.Money.CheckIfWasTaken(this); return false; }
/// <summary> /// Moves the character. /// </summary> /// <param name="actualTile">The actual tile.</param> /// <returns>Tile.</returns> public Tile MoveCharacter(Tile actualTile) { int loopBreaker = 0; while (true) { int randomChoice = r.Next(4); if (randomChoice == 0) { if (!(actualTile.TopTile == null || actualTile.TopTile is Teleporter)) { if (actualTile.TopTile.GetPosition().Y > police.Player.actualTile.GetPosition().Y || loopBreaker > 50) { police.XSpeed = 0; police.YSpeed = -DespicableGame.SPEED; return actualTile.TopTile; } } } if (randomChoice == 1) { if (!(actualTile.BotomTile == null || actualTile.BotomTile is Teleporter)) { if (actualTile.BotomTile.GetPosition().Y < police.Player.actualTile.GetPosition().Y || loopBreaker > 50) { police.XSpeed = 0; police.YSpeed = DespicableGame.SPEED; return actualTile.BotomTile; } } } if (randomChoice == 2) { if (!(actualTile.LeftTile == null || actualTile.LeftTile is Teleporter)) { if (actualTile.LeftTile.GetPosition().X > police.Player.actualTile.GetPosition().X || loopBreaker > 50) { police.XSpeed = -DespicableGame.SPEED; police.YSpeed = 0; return actualTile.LeftTile; } } } if (randomChoice == 3) { if (!(actualTile.RightTile == null || actualTile.RightTile is Teleporter)) { if (actualTile.RightTile.GetPosition().X < police.Player.actualTile.GetPosition().X || loopBreaker > 50) { police.XSpeed = DespicableGame.SPEED; police.YSpeed = 0; return actualTile.RightTile; } } } loopBreaker++; } }
/// <summary> /// Prepares character's movement. /// </summary> /// <param name="tileDestionation">The tile destionation.</param> /// <param name="xSpeed">The x speed.</param> /// <param name="ySpeed">The y speed.</param> public void PrepareMovement(Tile tileDestionation, int xSpeed, int ySpeed) { Destination = tileDestionation; XSpeed = xSpeed; YSpeed = ySpeed; }
public Powerup(Texture2D drawing, Vector2 position, Tile CurrentTile, PowerupType type) : base(drawing, position, CurrentTile) { this.type = type; }
private Tile TestTeleporter(Tile theTile) { if (theTile is Teleporter) { return ((Teleporter)theTile).Teleport(); } return null; }
private void MinionDropPowerup(Tile spawnTile) { Vector2 visualPosition = new Vector2(labyrinth.GetTile(spawnTile.PositionX, spawnTile.PositionY).GetPosition().X, labyrinth.GetTile(spawnTile.PositionX, spawnTile.PositionY).GetPosition().Y); Collectible newPowerup = CollectibleFactory.CreateCollectible(CollectibleFactory.CollectibleType.POWERUP, visualPosition, spawnTile); collectiblesToCreate.Add(newPowerup); newPowerup.AddObserver(this); }
public PoliceOfficer(Texture2D dessin, Vector2 position, Tile currentTile, bool isFriendly) : base(dessin, position, currentTile, isFriendly) { CurrentState = new Patrol(this); }
/// <summary> /// Initializes a new instance of the <see cref="NPC"/> class. /// </summary> /// <param name="drawing">The drawing.</param> /// <param name="position">The position.</param> /// <param name="actualTile">The actual tile.</param> public NPC(Texture2D drawing, Vector2 position, Tile actualTile) : base(drawing, position, actualTile) { Destination = AIMovement(actualTile); }
public Goal(Texture2D drawing, Vector2 position, Tile CurrentTile) : base(drawing, position, CurrentTile) { }
public void CheckMovement(Tile tileDestination, int vitesseX, int vitesseY) { if (tileDestination != null) { //Check if the tile is a teleporter Tile testTeleportation = TestTeleporter(tileDestination); //If not, we move if (testTeleportation == null) { Destination = tileDestination; SpeedX = vitesseX; SpeedY = vitesseY; } //If so, we teleport ourselves else { CurrentTile = testTeleportation; Destination = CurrentTile; SpeedX = 0; SpeedY = 0; } } }