Ejemplo n.º 1
0
    private void DestruirParedeAdjacente(int linha, int coluna)
    {
        bool paredeDestruida = false;

        while (!paredeDestruida)
        {
            int direcao = GeradorSeed.GerarNovaSeed();

            if (direcao == Direcao.Norte && linha > 0 && matrizCelulas [linha - 1, coluna].visitada)
            {
                DestruirParedeCasoExista(matrizCelulas [linha, coluna].paredeNorte);
                DestruirParedeCasoExista(matrizCelulas [linha - 1, coluna].paredeSul);
                paredeDestruida = true;
            }
            else if (direcao == Direcao.Sul && linha < (linhas - 2) && matrizCelulas [linha + 1, coluna].visitada)
            {
                DestruirParedeCasoExista(matrizCelulas [linha, coluna].paredeSul);
                DestruirParedeCasoExista(matrizCelulas [linha + 1, coluna].paredeNorte);
                paredeDestruida = true;
            }
            else if (direcao == Direcao.Leste && coluna > 0 && matrizCelulas [linha, coluna - 1].visitada)
            {
                DestruirParedeCasoExista(matrizCelulas [linha, coluna].paredeOeste);
                DestruirParedeCasoExista(matrizCelulas [linha, coluna - 1].paredeLeste);
                paredeDestruida = true;
            }
            else if (direcao == Direcao.Oeste && coluna < (colunas - 2) && matrizCelulas [linha, coluna + 1].visitada)
            {
                DestruirParedeCasoExista(matrizCelulas [linha, coluna].paredeLeste);
                DestruirParedeCasoExista(matrizCelulas [linha, coluna + 1].paredeOeste);
                paredeDestruida = true;
            }
        }
    }
Ejemplo n.º 2
0
    private void Kill()
    {
        while (RotaDisponivel(linhaAtual, colunaAtual))
        {
            int direcao = GeradorSeed.GerarNovaSeed();

            if (direcao == Direcao.Norte && CelulaDisponivel(linhaAtual - 1, colunaAtual))
            {
                // norte
                DestruirParedeCasoExista(matrizCelulas [linhaAtual, colunaAtual].paredeNorte);
                DestruirParedeCasoExista(matrizCelulas [linhaAtual - 1, colunaAtual].paredeSul);
                linhaAtual--;
            }
            else if (direcao == Direcao.Sul && CelulaDisponivel(linhaAtual + 1, colunaAtual))
            {
                // sul
                DestruirParedeCasoExista(matrizCelulas [linhaAtual, colunaAtual].paredeSul);
                DestruirParedeCasoExista(matrizCelulas [linhaAtual + 1, colunaAtual].paredeNorte);
                linhaAtual++;
            }
            else if (direcao == Direcao.Leste && CelulaDisponivel(linhaAtual, colunaAtual + 1))
            {
                // leste
                DestruirParedeCasoExista(matrizCelulas [linhaAtual, colunaAtual].paredeLeste);
                DestruirParedeCasoExista(matrizCelulas [linhaAtual, colunaAtual + 1].paredeOeste);
                colunaAtual++;
            }
            else if (direcao == Direcao.Oeste && CelulaDisponivel(linhaAtual, colunaAtual - 1))
            {
                // oeste
                DestruirParedeCasoExista(matrizCelulas [linhaAtual, colunaAtual].paredeOeste);
                DestruirParedeCasoExista(matrizCelulas [linhaAtual, colunaAtual - 1].paredeLeste);
                colunaAtual--;
            }

            matrizCelulas [linhaAtual, colunaAtual].visitada = true;
        }
    }