// ============== ICommand ================ void ICommand.Exec(IContextWritable context) { IGhostBWritable ghostB = context.CharactardsContainer.Get <IGhostBWritable>(); if (_isScared) { IPacManWritable pacman = context.CharactardsContainer.Get <IPacManWritable>(); ePacmanPosition pacmanPosition = Direction.getPacmanPosition(pacman.X, pacman.Y, ghostB.X, ghostB.Y); List <eDirection> directions = Direction.RunFromPacman(pacmanPosition); foreach (eDirection direction in directions) { if (context.Field.IsCanMove(ghostB.X, ghostB.Y, direction)) { _direction = direction; break; } } } else { bool isCanMove = context.Field.IsCanMove(ghostB.X, ghostB.Y, _direction); while (!isCanMove) { ChangeDirection(); isCanMove = context.Field.IsCanMove(ghostB.X, ghostB.Y, _direction); } } (int x, int y)nextPositon = Direction.GetNextPosition(ghostB.X, ghostB.Y, _direction); ghostB.UpdatePositionB(nextPositon.x, nextPositon.y); context.EventManager.Get <IPacManEventsWritable>().UpdateGhostBPosition(nextPositon.x, nextPositon.y); }
// ============== ICommand ================ void ICommand.Exec(IContextWritable context) { IPacManWritable pacMan = context.CharactardsContainer.Get <IPacManWritable>(); bool isCanMove = context.Field.IsCanMove(pacMan.X, pacMan.Y, _direction); if (isCanMove) { (int x, int y)nextPositon = Direction.GetNextPosition(pacMan.X, pacMan.Y, _direction); pacMan.UpdatePosition(nextPositon.x, nextPositon.y); context.EventManager.Get <IPacManEventsWritable>().UpdatePacManPosition(nextPositon.x, nextPositon.y); } }
// ============== ICommand ================ void ICommand.Exec(IContextWritable context) { if (Constant.IsTwoPlayers) { IGhostAWritable ghostA = context.CharactardsContainer.Get <IGhostAWritable>(); bool isCanMove = context.Field.IsCanMove(ghostA.X, ghostA.Y, _direction); if (isCanMove) { (int x, int y)nextPositon = Direction.GetNextPosition(ghostA.X, ghostA.Y, _direction); ghostA.UpdatePositionA(nextPositon.x, nextPositon.y); context.EventManager.Get <IPacManEventsWritable>().UpdateGhostAPosition(nextPositon.x, nextPositon.y); } } else { IGhostAWritable ghostA = context.CharactardsContainer.Get <IGhostAWritable>(); IPacManWritable pacman = context.CharactardsContainer.Get <IPacManWritable>(); ePacmanPosition pacmanPosition = Direction.getPacmanPosition(pacman.X, pacman.Y, ghostA.X, ghostA.Y); List <eDirection> directions = new List <eDirection>(); if (_isScared) { directions = Direction.RunFromPacman(pacmanPosition); } else { directions = Direction.FindPacman(pacmanPosition); } foreach (eDirection direction in directions) { if (context.Field.IsCanMove(ghostA.X, ghostA.Y, direction)) { _direction = direction; break; } } (int x, int y)nextPositon = Direction.GetNextPosition(ghostA.X, ghostA.Y, _direction); ghostA.UpdatePositionA(nextPositon.x, nextPositon.y); context.EventManager.Get <IPacManEventsWritable>().UpdateGhostAPosition(nextPositon.x, nextPositon.y); } }
// ============== ICommand ================ void ICommand.Exec(IContextWritable context) { IGhostAWritable ghostA = context.CharactardsContainer.Get <IGhostAWritable>(); IPacManWritable pacman = context.CharactardsContainer.Get <IPacManWritable>(); ePacmanPosition pacmanPosition = Direction.getPacmanPosition(pacman.X, pacman.Y, ghostA.X, ghostA.Y); List <eDirection> directions = Direction.FindPacman(pacmanPosition); foreach (eDirection direction in directions) { if (context.Field.IsCanMove(ghostA.X, ghostA.Y, direction)) { _direction = direction; break; } } (int x, int y)nextPositon = Direction.GetNextPosition(ghostA.X, ghostA.Y, _direction); ghostA.UpdatePositionA(nextPositon.x, nextPositon.y); context.EventManager.Get <IPacManEventsWritable>().UpdateGhostAPosition(nextPositon.x, nextPositon.y); }