public PreviewMove ( Point playerLocation ) : Point | ||
playerLocation | Point | |
리턴 | Point |
public virtual Point PreviewMove(Point playerLocation)
{
Point preview = new Point(position.X, position.Y);
int xDistance = Math.Abs(playerLocation.X - preview.X);
int yDistance = Math.Abs(playerLocation.Y - preview.Y);
if(xDistance >= yDistance)
{
if (playerLocation.X > preview.X)
{
preview.X += 1;
}
else if (playerLocation.X < preview.X)
{
preview.X -= 1;
}
}
else
{
if (playerLocation.Y > preview.Y)
{
preview.Y += 1;
}
else if (playerLocation.Y < preview.Y)
{
preview.Y -= 1;
}
}
return preview;
}
private void MoveMonster(Monster monster) { Point previewMove = monster.PreviewMove(player.Position); if (previewMove.X == player.Position.X && previewMove.Y == player.Position.Y) { UserMessage message = new UserMessage(); bool hasHelmet = false; CastleItem helmet = ItemManager.FindItemInInventory("helmet"); if (helmet != null) { hasHelmet = true; } if (player.Hit(hasHelmet)) { message.AddLine(String.Format("The {0}", monster.Name)); message.AddLine("killed you!"); PrintUserMessage(message); GameResult = GameResult.Failed; EndGame(); gameOver = true; } else { message.AddLine(String.Format("The {0}", monster.Name)); message.AddLine("struck you!"); if (hasHelmet) { message.AddLine("The Helmet"); message.AddLine("helped."); } PrintUserMessage(message); } } else { switch (CollisionDetection(previewMove)) { case ObjectType.None: monster.Move(previewMove); break; } } }