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; } } }
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; } }