public GameCharacter(Maze maze) { Maze = maze; TargetSpeed = 4; Active = true; Lives = 3; }
public override void LoadContent() { _font = Resources.GetFont(Resources.FontResources.NinaB); var tempSheet = Resources.GetBitmap(Resources.BitmapResources.pacman); _spriteSheet = new Bitmap(tempSheet.Width, tempSheet.Height); _spriteSheet.DrawImage(0, 0, tempSheet, 0, 0, tempSheet.Width, tempSheet.Height); _spriteSheet.MakeTransparent(Microsoft.SPOT.Presentation.Media.Color.Black); _maze = new Maze(); _maze.Draw(Surface, Host); _pacman = new Player(_spriteSheet, _maze); #region Initialize Bonus Point Sprites _bonus200 = new Sprite(new AnimationSequence(_spriteSheet, 0, new Rect[] { new Rect(80, 104, 16, 8) })); _bonus400 = new Sprite(new AnimationSequence(_spriteSheet, 0, new Rect[] { new Rect(96, 104, 16, 8) })); _bonus800 = new Sprite(new AnimationSequence(_spriteSheet, 0, new Rect[] { new Rect(112, 104, 16, 8) })); _bonus1600 = new Sprite(new AnimationSequence(_spriteSheet, 0, new Rect[] { new Rect(128, 104, 16, 8) })); _bonus100 = new Sprite(new AnimationSequence(_spriteSheet, 0, new Rect[] { new Rect(0, 112, 16, 8) })); _bonus300 = new Sprite(new AnimationSequence(_spriteSheet, 0, new Rect[] { new Rect(16, 112, 16, 8) })); _bonus500 = new Sprite(new AnimationSequence(_spriteSheet, 0, new Rect[] { new Rect(32, 112, 16, 8) })); _bonus700 = new Sprite(new AnimationSequence(_spriteSheet, 0, new Rect[] { new Rect(48, 112, 16, 8) })); _bonus1000 = new Sprite(new AnimationSequence(_spriteSheet, 0, new Rect[] { new Rect(64, 112, 20, 8) })); _bonus2000 = new Sprite(new AnimationSequence(_spriteSheet, 0, new Rect[] { new Rect(84, 112, 20, 8) })); _bonus3000 = new Sprite(new AnimationSequence(_spriteSheet, 0, new Rect[] { new Rect(106, 112, 20, 8) })); _bonus5000 = new Sprite(new AnimationSequence(_spriteSheet, 0, new Rect[] { new Rect(128, 112, 16, 8) })); #endregion #region Initialize Ghosts _blinky = new Ghost(_spriteSheet, _maze, _pacman, 16, new Personality() { ScatterX = 13 * 16, ScatterY = -2 * 16, TargetOffsetX = 0, TargetOffsetY = 0, HouseX = 7 * 16, HouseY = 7 * 16, StartX = 7 * 16, StartY = 5 * 16 }); _blinky.CurrentDirection = Direction.Left; _pinky = new Ghost(_spriteSheet, _maze, _pacman, 32, new Personality() { ScatterX = 1 * 16, ScatterY = -2 * 16, TargetOffsetX = 4 * 16, TargetOffsetY = 0, HouseX = 6 * 16, HouseY = 7 * 16, StartX = 6 * 16, StartY = 7 * 16 }); _pinky.CurrentDirection = Direction.Left; _inky = new Ghost(_spriteSheet, _maze, _pacman, 48, new Personality() { ScatterX = 14 * 16, ScatterY = 15 * 16, TargetOffsetX = -3 * 16, TargetOffsetY = 0, HouseX = 7 * 16, HouseY = 7 * 16, StartX = 7 * 16, StartY = 7 * 16 }); _inky.CurrentDirection = Direction.Left; _clyde = new Ghost(_spriteSheet, _maze, _pacman, 64, new Personality() { ScatterX = 0 * 16, ScatterY = 15 * 16, TargetOffsetX = 0, TargetOffsetY = -2 * 16, HouseX = 8 * 16, HouseY = 7 * 16, StartX = 8 * 16, StartY = 7 * 16 }); _clyde.CurrentDirection = Direction.Left; #endregion _pacman.Enemies = new Ghost[] { _blinky, _pinky, _inky, _clyde }; #region Add objects to scene AddToScene(_showBonusCountDown); AddToScene(_showBonusScoreCountDown); AddToScene(_maze); AddToScene(_pacman); AddToScene(_blinky); AddToScene(_pinky); AddToScene(_inky); AddToScene(_clyde); #endregion _maze.LevelComplete += MazeLevelComplete; _showBonusCountDown.Expired += BonusCountDown_Expired; MessageService.Instance.Subscribe(typeof(Messages.PacmanDeadMessage), HandlePacmanDeadMessage); MessageService.Instance.Subscribe(typeof(Messages.PacmanAteGhostMessage), HandlePacmanAteGhostMessage); MessageService.Instance.Subscribe(typeof(Messages.AteBonusItemMessage), HandleAteBonusItem); base.LoadContent(); Reset(); }
public Player(Bitmap spriteSheet, Maze maze) : base(maze) { // NB: The sequence of the animations must match the // "Animation Selection Constants" defined above SetAnimationSequences( new AnimationSequence[] { // 0 - Left new AnimationSequence(spriteSheet, 12, new Rect[] { new Rect(128, 0, 16, 16), // Closed new Rect(0, 0, 16, 16), // Opening new Rect(16, 0, 16, 16), // Open }), // 1 - Right new AnimationSequence(spriteSheet, 12, new Rect[] { new Rect(128, 0, 16, 16), // Closed new Rect(32, 0, 16, 16), // Opening new Rect(48, 0, 16, 16), // Open }), // 2 - Up new AnimationSequence(spriteSheet, 12, new Rect[] { new Rect(128, 0, 16, 16), // Closed new Rect(64, 0, 16, 16), // Opening new Rect(80, 0, 16, 16), // Open }), // 3 - Down new AnimationSequence(spriteSheet, 12, new Rect[] { new Rect(128, 0, 16, 16), // Closed new Rect(96, 0, 16, 16), // Opening new Rect(112, 0, 16, 16), // Open }), // 4 - Dying new AnimationSequence(spriteSheet, 12, false, -1, new Rect[] { new Rect(128, 0, 16, 16), new Rect(64, 0, 16, 16), new Rect(80, 0, 16, 16), new Rect(0, 80, 16, 16), new Rect(16, 80, 16, 16), new Rect(32, 80, 16, 16), new Rect(48, 80, 16, 16), new Rect(64, 80, 16, 16), new Rect(80, 80, 16, 16), new Rect(96, 80, 16, 16), new Rect(112, 80, 16, 16), new Rect(128, 80, 16, 16), new Rect(144, 80, 16, 16), }), // 5 - Stop new AnimationSequence(spriteSheet, 12, false, -1, new Rect[] { new Rect(128, 0, 16, 16), }) }); this[AnimateDying].Completed += new EventHandler(Dying_Completed); MessageService.Instance.Subscribe(typeof(Messages.CollidedWithPacmanMessage), HandleCollidedWithPacman); Reset(); }
public Ghost(Bitmap spriteSheet, Maze maze, Player player, int spriteSheetYOffset, Personality personality) : base(maze) { _game = (PacmanGame)GameManager.Game; Player = player; _personality = personality; // NB: The sequence of the animations must match the // "Animation Selection Constants" defined above SetAnimationSequences(new AnimationSequence[] { // 0 - Left new AnimationSequence(spriteSheet, 6, new Rect[] { new Rect(0, spriteSheetYOffset, 16, 16), new Rect(16, spriteSheetYOffset, 16, 16), }), // 1 - Right new AnimationSequence(spriteSheet, 6, new Rect[] { new Rect(32, spriteSheetYOffset, 16, 16), new Rect(48, spriteSheetYOffset, 16, 16), }), // 2 - Up new AnimationSequence(spriteSheet, 6, new Rect[] { new Rect(64, spriteSheetYOffset, 16, 16), new Rect(80, spriteSheetYOffset, 16, 16), }), // 3 - Down new AnimationSequence(spriteSheet, 6, new Rect[] { new Rect(96, spriteSheetYOffset, 16, 16), new Rect(112, spriteSheetYOffset, 16, 16), }), // 4 - Frightened new AnimationSequence(spriteSheet, 6, new Rect[] { new Rect(128, 16, 16, 16), new Rect(144, 16, 16, 16), }), // 5 - Recovering new AnimationSequence(spriteSheet, 6, new Rect[] { new Rect(128, 16, 16, 16), new Rect(128, 32, 16, 16), new Rect(144, 16, 16, 16), new Rect(144, 32, 16, 16), }), // 6 - Left Dead new AnimationSequence(spriteSheet, 6, new Rect[] { new Rect(128, 48, 16, 16), }), // 7 - Right Dead new AnimationSequence(spriteSheet, 6, new Rect[] { new Rect(144, 48, 16, 16), }), // 8 - Up Dead new AnimationSequence(spriteSheet, 6, new Rect[] { new Rect(128, 64, 16, 16), }), // 9 - Down Dead new AnimationSequence(spriteSheet, 6, new Rect[] { new Rect(144, 64, 16, 16), }), }); Reset(); MessageService.Instance.Subscribe(typeof(Messages.AtePowerPillMessage), HandleAtePowerPillMessage); MessageService.Instance.Subscribe(typeof(Messages.PacmanDyingMessage), HandlePacmanDyingMessage); MessageService.Instance.Subscribe(typeof(Messages.PacmanDeadMessage), HandlePacmanDeadMessage); _stateCountDown.Expired += StateCountDown_Expired; }
public Character(Bitmap body, Maze maze) { this.body = body; this.maze = maze; direction = Direction.Right; }