public override void Show() { short oldX, oldY, oldXMap, oldYMap; DateTime timeStampFromLastShot = DateTime.Now; DateTime timeStampFromLastScoreIncrement = DateTime.Now; DateTime timeStampFromLastDamage = DateTime.Now; map.BackGround.MoveTo(0, 0); audio.PlayMusic(0, -1); gameOver = false; isFalling = false; isJumping = true; verticalSpeed = 100.0f; horizontalSpeed = 0.0f; movement_increment = 1.2f + mainCharacter.STEP_LENGHT; do { if ((DateTime.Now - timeStampFromLastScoreIncrement).TotalMilliseconds > 1000) { timeStampFromLastScoreIncrement = DateTime.Now; UpdatePoints(); } //1.-Draw_EveryThing //TO DO hardware.ClearScreen(); hardware.DrawImageMap(map.BackGround, map.XMap, map.YMap); foreach (Wall wall in map.Walls) { hardware.DrawImageMap(wall.SpriteImage, map.XMap, map.YMap); } foreach (Platform platform in map.Platforms) { hardware.DrawImageMap(platform.SpriteImage, map.XMap, map.YMap); } foreach (DangerousFloor spikes in map.DangerousFloors) { hardware.DrawImageMap(spikes.SpriteImage, map.XMap, map.YMap); } foreach (Ladder ladder in map.Ladders) { hardware.DrawImageMap(ladder.SpriteImage, map.XMap, map.YMap); } foreach (Enemy enemy in map.Enemy) { enemy.SpriteImage.MoveTo(enemy.X, enemy.Y); hardware.DrawImageMap(enemy.SpriteImage, map.XMap, map.YMap); } mainCharacter.SpriteImage.MoveTo(mainCharacter.X, mainCharacter.Y); hardware.DrawImageMap(mainCharacter.SpriteImage, map.XMap, map.YMap); foreach (Weapon w in mainCharacter.Weapons) { hardware.DrawImageMap(w.SpriteImage, map.XMap, map.YMap); } foreach (Enemy Enemy in Enemies) { Enemy.SpriteImage.MoveTo(Enemy.X, Enemy.Y); hardware.DrawImageMap(Enemy.SpriteImage, map.XMap, map.YMap); } hardware.UpdateScreen(); //2.-Move_Character_from_keyboard_input oldX = mainCharacter.X; oldY = mainCharacter.Y; oldXMap = map.XMap; oldYMap = map.YMap; MoveCharacter(); if (hardware.IsKeyPressed(Hardware.KEY_C) || Hardware.JoystickPressed(2)) { if ((DateTime.Now - timeStampFromLastShot).TotalMilliseconds > SHOT_INTERVAL) { timeStampFromLastShot = DateTime.Now; mainCharacter.AddWeapon(); } if (mainCharacter.Weapons.Count > 7) { mainCharacter.RemoveWeapon(0); } } //TO DO //3.-Move_Enemies_And_Objects MoveEnemy(ref timeStampFromLastDamage); MoveWeapon(); //TO DO //4-.Check_Colisions_AndUpdateGameState isFalling = !isJumping; map.CollideWeaponsWithWalls(mainCharacter); short points = map.CollideWeaponsWithEnemies(mainCharacter); if (points > 0) { mainCharacter.Points += points; } foreach (Platform platforms in map.Platforms) { if (mainCharacter.IsOver(platforms.SpriteImage)) { mainCharacter.MoveTo(mainCharacter.X, (short) (platforms.SpriteImage.Y - mainCharacter.SPRITE_HEIGHT)); isFalling = false; isJumping = false; } } foreach (Wall walls in map.Walls) { if (mainCharacter.IsOver(walls.SpriteImage)) { mainCharacter.MoveTo(mainCharacter.X, (short) (walls.SpriteImage.Y - mainCharacter.SPRITE_HEIGHT)); isFalling = false; isJumping = false; } else if (mainCharacter.CollidesWithImage(walls.SpriteImage)) { mainCharacter.X = oldX; mainCharacter.Y = oldY; map.XMap = oldXMap; map.YMap = oldYMap; mainCharacter.MoveTo(mainCharacter.X, mainCharacter.Y); isFalling = false; isJumping = false; } } foreach (DangerousFloor spikes in map.DangerousFloors) { if (mainCharacter.CollidesWithImage(spikes.SpriteImage)) { mainCharacter.Lives = 0; } } foreach (Ladder ladder in map.Ladders) { if (mainCharacter.CollidesWithImage(ladder.SpriteImage) && hardware.IsKeyPressed(Hardware.KEY_UP)) { mainCharacter.Y -= 2; isFalling = false; } } foreach (Enemy Enemy in Enemies) { oldX = Enemy.X; oldY = Enemy.Y; foreach (Platform platforms in map.Platforms) { if (Enemy.IsOver(platforms.SpriteImage)) { Enemy.MoveTo(Enemy.X, (short) (platforms.SpriteImage.Y - Enemy.SPRITE_HEIGHT)); isFalling = false; isJumping = false; } } if (Enemy.Y >= floorPosition - mainCharacter.SPRITE_HEIGHT) { Enemy.MoveTo(Enemy.X, (short) (floorPosition - Enemy.SPRITE_HEIGHT)); isFalling = false; isJumping = false; } foreach (Wall walls in map.Walls) { if (Enemy.IsOver(walls.SpriteImage)) { Enemy.MoveTo(Enemy.X, (short) (walls.SpriteImage.Y - Enemy.SPRITE_HEIGHT)); } else if (Enemy.CollidesWithImage(walls.SpriteImage)) { Enemy.X = oldX; Enemy.Y = oldY; map.XMap = oldXMap; map.YMap = oldYMap; Enemy.MoveTo(Enemy.X, Enemy.Y); } } } if (mainCharacter.CollidesWith(map.Exit)) { gameOver = true; } //5.-Puse_Game //TO DO if (hardware.IsKeyPressed(Hardware.KEY_ESC) || keyPressed == Hardware.KEY_ESC) { gameOver = true; } if (mainCharacter.Lives <= 0) { gameOver = true; } } while (!gameOver); audio.StopMusic(); Save(); }