コード例 #1
0
        public static bool Gerar(Palavra[] palavras, char[,] matriz)
        {
            Random rdn = new Random();

            int nPalavras  = 0;
            int tentativas = 0;

            for (int i = 0; i < palavras.Length; i++)
            {
                tentativas = 0;

                //definindo número max de tentativas
                while (true)
                {
                    tentativas += 1;
                    //gerando direcao e posicao inicial
                    DirecaoECelulaInicialPalavra dl = gerarDirecaoELocalAleatorios(matriz.GetLength(0), JogoExecucao.jogo.NivelDificuldade);

                    //verificando se a direcao e a posicao inicial são
                    if (verificarDirecao(dl, matriz, palavras[i].TextoPalavra))
                    {
                        nPalavras++;
                        palavras[i].CelulaInicial = dl.CelulaInicial;
                        CoordenadasPalavraEMatriz coordenadas = inserirCoordenadas(dl, palavras[i], matriz);

                        matriz = coordenadas.Matriz;

                        palavras[i].PosicaoPalavra = coordenadas.CoordenadaPalavra;

                        if (nPalavras == palavras.Length)
                        {
                            matriz = preencherEspacosMatriz(matriz, rdn);

                            JogoExecucao.jogo.MatrizJogo = matriz;
                            JogoExecucao.jogo.Palavras   = palavras;

                            return(true);
                        }
                        else
                        {
                            break;
                        }
                    }
                    else
                    {
                        tentativas++;

                        if (tentativas >= 1000000)
                        {
                            MessageBox.Show("ESSA RODADA FOI FALHA, TENTEI MAIS DE 1000X MONTAR A MATRIZ, MAS NÃO OBTIVE SUCESSO :(");
                            return(false);
                        }
                    }
                }
            }
            return(false);
        }
コード例 #2
0
        private static CoordenadasPalavraEMatriz inserirCoordenadas(DirecaoECelulaInicialPalavra dl, Palavra palavra, char[,] matriz)
        {
            CoordenadasPalavraEMatriz coordenadas = new CoordenadasPalavraEMatriz();

            //criando obj coordenada palavra com tamanho de linhas igual ao de letras da palavra
            coordenadas.CoordenadaPalavra = new int[palavra.TextoPalavra.Length, 2];

            for (int i = 0; i < palavra.TextoPalavra.Length; i++)
            {
                matriz[dl.CelulaInicial[0, 0] + (i * dl.X), dl.CelulaInicial[0, 1] + (i * dl.Y)] = palavra.TextoPalavra[i];

                coordenadas.CoordenadaPalavra[i, 0] = dl.CelulaInicial[0, 0] + (i * dl.X);
                coordenadas.CoordenadaPalavra[i, 1] = dl.CelulaInicial[0, 1] + (i * dl.Y);
            }
            coordenadas.Matriz = matriz;

            return(coordenadas);
        }