Exemple #1
0
        public static bool VectorHasLetters(this IWordGrid g, WordVector vec)
        {
            Point p = vec.Pos;

            for (int i = 0; i < vec.Length; i++)
            {
                if (g[p] == null)
                {
                    return(false);
                }

                p = p.NextPoint(vec.Dir);
            }

            return(true);
        }
Exemple #2
0
        /// <summary>
        /// Returns the longest possible vector that occupies valid letters in the grid
        /// </summary>
        /// <param name="pos">Start pos</param>
        /// <param name="dir">Direction</param>
        /// <returns>null id no vector is possible</returns>
        public static WordVector FindLongestWordVector(this IWordGrid g, Point pos, Dir2D dir)
        {
            if (dir == Dir2D.None)
            {
                return(null);
            }

            Point p   = pos;
            int   len = 0;

            while (g.InBounds(p) && (g[p] != null))
            {
                len++;
                p = p.NextPoint(dir);
            }

            return((len > 0) ? new WordVector(pos, dir, len) : null);
        }
Exemple #3
0
        public static void placeWord(this IWordGrid g, string text, WordVector vec)
        {
            if (vec.Dir == Dir2D.None)
            {
                return;
            }

            Point p   = vec.Pos;
            int   len = 0;

            while (g.InBounds(p) &&
                   (len < vec.Length))
            {
                g[p] = text[len];
                len++;
                p = p.NextPoint(vec.Dir);
            }
        }
Exemple #4
0
        public static string GetWord(this IWordGrid g, WordVector vec)
        {
            if (vec.Dir == Dir2D.None)
            {
                return(null);
            }

            Point  p   = vec.Pos;
            int    len = 0;
            string str = "";

            while (g.InBounds(p) && (g[p] != null) && (len < vec.Length))
            {
                str = str + g[p].Value;
                len++;
                p = p.NextPoint(vec.Dir);
            }

            return((len == vec.Length) ? str : null);
        }
Exemple #5
0
        /// <summary>
        /// Can this word be placed along the vector with out altering any existing letters?
        /// </summary>
        /// <param name="vec"></param>
        /// <param name="str"></param>
        /// <returns></returns>
        public static bool AnyConflicts(this IWordGrid g, WordVector vec, string str)
        {
            if (vec.Dir == Dir2D.None)
            {
                return(true);
            }

            Point p   = vec.Pos;
            int   len = 0;

            while (g.InBounds(p) &&
                   (len < vec.Length) &&
                   isSameLetterOrNull(g[p], str[len])
                   )
            {
                len++;
                p = p.NextPoint(vec.Dir);
            }

            return((len - 1) == vec.Length);
        }