Exemple #1
0
        private void Move()
        {
            Point3D temp = this.position.Copy();

            temp.MoveFor(vector, 1);
            Grid targetGrid = World.GetAt(temp);

            if (targetGrid == null)
            {
                return;
            }

            if (targetGrid.Obj != null)
            {
                if (targetGrid.Obj is Food)
                {
                    EatFood((Food)targetGrid.Obj);
                }
                else
                {
                    return;
                }
            }

            World.Swap(position, temp);
            RegisterEvent(ObjEvent.posit);

            // 當照著路線走時,會把走過的標記移除.
            if (route != null && route.Count > 0)
            {
                if (route.Peek() == this.Vect) // 照著路線走.
                {
                    route.Pop();
                }
                else // 偏離路線,原本的路線已經沒用了.
                {
                    route = null;
                }
            }
        }