j<7; j++){ sala[i][j]="N"; trap[i][j]="N"; inimigo[i][j]="N"; cor[i][j]="N"; tesouro[i][j]="N"; dadosInimigo[i][j]="N"; } } // garanto a linha zero da matriz das salas para as saidas. for (int j=0; j<7; j++){ sala[0][j]="SAIDA"; } String caminhonome=""; // serve para pegar o 'caminhonome' do arquivo int n=0; // serve para guardar o numero da sala em String String aux=""; // serve para auxiliar as conversoes de int para String String direcao=""; // serve para guardar a direcao da conexao Scanner entra = new Scanner(System.in); while(caminhonome==""){ System.out.println("Digite o caminho, nome e extensao do arquivo do labirinto:"); caminhonome = entra.next(); } try { FileInputStream fis = new FileInputStream(caminhonome); Scanner scanner = new Scanner(fis); while (scanner.hasNext("room")) { scanner.next(); // guarda o numero da sala n = scanner.nextInt(); tesouro[n][1]=tes.arma(); tesouro[n][2]=tes.armadura(); tesouro[n][3]=tes.Chave(); tesouro[n][4]=tes.cura(); tesouro[n][5]=tes.fogodragao(); while (scanner.hasNext("south")||scanner.hasNext("north")||scanner.hasNext("east")||scanner.hasNext("west")||scanner.hasNext("up")||scanner.hasNext("down")){ // pula e guarda a proxima direcao direcao = scanner.next(); if(direcao.equals("north")){ nDirecao=1; } if(direcao.equals("south")){ nDirecao=2; } if(direcao.equals("east")){ nDirecao=3; } if(direcao.equals("west")){ nDirecao=4; } if(direcao.equals("up")){ nDirecao=5; } if(direcao.equals("down")){ nDirecao=6; } // busco o numero da sala de conexao e guardo na sala: aux = scanner.next(); sala[n][nDirecao] = aux; cor[n][nDirecao] = cor(); if(scanner.hasNext("TRAP")){ // se tiver TRAP, somo ao numero da sala de conexao a String 'TRAP' e guardo na matriz trap: aux = " "+scanner.next(); trap[n][nDirecao] = aux; } // crio inimigo para a conexao inimigo[n][nDirecao]=ini.Tipo(); if(!inimigo[n][nDirecao].equals("N")){ geraInimigo(inimigo[n][nDirecao], n, nDirecao); } // limpo a aux para proximo uso aux=""; } // limpo a n para proximo uso n=0; } } catch (Exception e) { e.printStackTrace(); } for (int i=0; i<40; i++) { System.out.println("Sala " + i + " Norte " +sala[i][1] + trap[i][1] + inimigo[i][1] + " Sul " +sala[i][2] + trap[i][2] + inimigo[i][2] + " Leste " +sala[i][3] + trap[i][3] + inimigo[i][3] + " Oeste " +sala[i][4] + trap[i][4] + inimigo[i][4] + " Acima " +sala[i][5] + trap[i][5] + inimigo[i][5] + " Abaixo " +sala[i][6] + trap[i][6] + inimigo[i][6]); } } // cria a localizacao incial public void LugarInicial(){ int w=0; int k=1; while(w==0){ k = (int) (1+(Math.random() * 1000)); if(!sala[k][1].equals("N") || !sala[k][2].equals("N") || !sala[k][3].equals("N") || !sala[k][4].equals("N") || !sala[k][5].equals("N") || !sala[k][6].equals("N")){ w=1; } } posicao = k; i.criaInventario(); salaPresa(); descrever(); } public void salaPresa(){ int r=0, n=0; String aux=""; // testo se todas as portas estao fechadas aux = tesouro[posicao][3]; for(int j=0;j<7;j++){ // testo se ha chave no chao para abrir uma das portas da sala if(!cor[posicao][j].equals("N")){ if(!cor[posicao][j].equals(aux)){ r++; } n++; } } for(int j=0;j<7;j++){ if(cor[posicao][j].equals("Marrom")){ r=0; } } if(r==n){ descrever(); System.out.println("\n Voce esta preso nesta sala."); System.exit(0); } } // Descreve o lugar onde o personagem esta public void descrever(){ String a=""; if(posicao==0){ System.out.println("Parabens! Voce conseguiu escapar do Labirinto!"); System.exit(0); } a += "Voce esta na Sala " + posicao +"\n"; if(!sala[posicao][1].equals("N")){ a += "Porta "+cor[posicao][1]+" ao norte. "; if(!inimigo[posicao][1].equals("N")){ a+="Ha um "+inimigo[posicao][1]+" bloquando esta porta. "; } if(!trap[posicao][1].equals("N")){ a+="Ha uma armadilha nesta porta. "; } a+="\n"; } if(!sala[posicao][2].equals("N")){ a += "Porta "+cor[posicao][2]+" ao sul. "; if(!inimigo[posicao][2].equals("N")){ a+="Ha um "+inimigo[posicao][2]+" bloquando esta porta."; } if(!trap[posicao][2].equals("N")){ a+="Ha uma armadilha nesta porta. "; } a+="\n"; } if(!sala[posicao][3].equals("N")){ a += "Porta "+cor[posicao][3]+" ao leste; "; if(!inimigo[posicao][3].equals("N")){ a+="Ha um "+inimigo[posicao][3]+" bloquando esta porta."; } if(!trap[posicao][3].equals("N")){ a+="Ha uma armadilha nesta porta. ";