Exemple #1
0
        public static bool compruebaPosDir(ref Sopa s, string pal, Par pos, Par dir)
        {
            bool encontrado = true;
            int  indice     = 0;

            int x = pos.x;
            int y = pos.y;

            while (encontrado && indice < pal.Length)
            {
                if (x < 0)
                {
                    x = s.alto - 1;
                }
                else if (x >= s.alto)
                {
                    x = 0;
                }
                if (y < 0)
                {
                    y = s.ancho - 1;
                }
                else if (y >= s.ancho)
                {
                    y = 0;
                }
                encontrado = s.matriz[x][y] == pal[indice];
                indice++;
                x += dir.x;
                y += dir.y;
            }

            return(encontrado);
        }
Exemple #2
0
        public static bool buscaPal(ref Sopa s, string pal, out Par pos, out Par dir)
        {
            Par p = new Par {
                x = 0, y = 0
            };
            bool posEncontrada = false;

            pos = p;
            dir = p;
            while (p.x < s.alto && !posEncontrada)
            {
                p.y = 0;
                while (p.y < s.ancho && !posEncontrada)
                {
                    if (buscaDir(ref s, pal, p, out dir))
                    {
                        pos           = p;
                        posEncontrada = true;
                    }
                    p.y++;
                }
                p.x++;
            }
            return(posEncontrada);
        }
Exemple #3
0
        public static bool buscaDir(ref Sopa s, string pal, Par pos, out Par dir)
        {
            Par[] direcciones   = dirs();
            bool  dirEncontrada = false;
            int   indice        = 0;

            dir = new Par {
                x = 0, y = 0
            };
            while (!dirEncontrada && indice < direcciones.Length)
            {
                Par dirActual = direcciones [indice++];
                if (compruebaPosDir(ref s, pal, pos, dirActual))
                {
                    dir           = dirActual;
                    dirEncontrada = true;
                }
            }
            return(dirEncontrada);
        }