Então, acho que não entendi muito bem. Fiz o seguinte: Criei mais uma classe chamada “Menus”, renomeei a antiga para “Iniciar”. Nessa nova classe Menus coloquei 2 métodos: menuPrincipal e menuCriarNavios. Em “Iniciar” eu instancio o objeto de Menus e faço menuPrincipal rolar enquanto nao receber 0(sair). Depois na classe principal eu finalmente instancio o objeto de Menus pra de fato rolar o jogo. Problemas: Não acontece nenhum erro porém não consigo mais execultar o jogo. Apenas constroi e pronto. Um outro problema que vinha enfrentando desde antes é que das opções de criar navios a unica que funciona é a 1(Criar navios Manualmente) e a 2(criar navio Aleatoriamente). Quando as outras opçoes, como por exemplo "criar navio tamanho 5 " é acionada, o programa cria um navio tamanho 2. isso acontece em todas as opções: Criar navio tamanho 2 3 4 e 5. Mesmo eu passando como parametro o tamanho respectivo desejado. Não entendi.
Veja como ficou minha organização do código:
[code]public class Menus {
Navio criarNavios = new Navio();
Mapa map = new Mapa();
Menssagens msg = new Menssagens();
public boolean menuPrincipal() {
int escolha = msg.menuPrincipal(); //funcao apresenta menu principal
boolean vfp = false;
switch (escolha) {
case 1:
int size = msg.mapaSize();// funcao retorna tamanho do mapa
map.criarMapa(size);
break;
case 2:
JOptionPane.showMessageDialog(null, map.apresentarMapa());
break;
case 3:
boolean vf;
do {
vf = this.menuCriacaoDeNavios();
} while (vf = false);
break;
case 0:
vfp = true;
break;
}
return vfp;
}
public boolean menuCriacaoDeNavios() {
boolean vf = false;
int menu3_1 = msg.menuCriacaoNavios();
switch (menu3_1) {// aqui é um sub menu do menu principal, aonde eu crio os navios da maneira como desejada
case 1:
criarNavios.criarNavioManualmente(map, msg.recebeDirecao(), msg.tamanhoDoNavio(), msg.recebeLinha(), msg.recebeColuna());
break;
case 2:
criarNavios.criarNavioAleatoriamente(map);
break;
case 3:
criarNavios.criarNavioDois(map, msg.recebeDirecao(), msg.recebeLinha(), msg.recebeColuna());
break;
case 4:
criarNavios.criarNavioTres(map, msg.recebeDirecao(), msg.recebeLinha(), msg.recebeColuna());
break;
case 5:
criarNavios.criarNavioDois(map, msg.recebeDirecao(), msg.recebeLinha(), msg.recebeColuna());
break;
case 6:
criarNavios.criarNavioDois(map, msg.recebeDirecao(), msg.recebeLinha(), msg.recebeColuna());
case 0:
vf = true;
break;
}
return vf;
}
}
[/code]
[code]public class Iniciar {
Menus menus = new Menus();
public Iniciar() {
boolean loop;
do {
loop = menus.menuPrincipal();
} while (loop == false);
}
}
[/code]
[code]public class Principal {
public static void main(String args[]) {
Iniciar start=new Iniciar();
}
}[/code]
Há ainda a classe Navio, Mensagens e Mapa. Vou mostrar um dos métodos da classe navio pra você ver se consegue identificar oque está errado com o problema da criação desses navios.
[code]public class Navio {
Menssagens m = new Menssagens();
Random random = new Random();//usada em criarNavioAleatoriamente
public void criarNavioManualmente(Mapa n, int direcao, int tamanho, int x, int y){…}
public void criarNavioAleatoriamente(Mapa n){…}
public void criarNavioDois(Mapa n, int direcao, int x, int y){…}
public void criarNavioTres(Mapa n, int direcao, int x, int y){…}
public void criarNavioQuatro(Mapa n, int direcao, int x, int y){…}
public void criarNavioCinco(Mapa n, int direcao, int x, int y) {
this.inserindoNavio(n, direcao, 5, x, y);
}
public void inserindoNavio(Mapa n, int direcao, int tamanho, int x, int y) {
switch (direcao) {
case 1: //lembrando que 1 é horizontal
System.out.println(tamanho);
for (int a = 0; a < tamanho; a++) {
Mapa.mapa[x][y] = tamanho;
y++;
}
break;
case 2:
for (int a = 0; a < tamanho; a++) {
Mapa.mapa[x][y] = tamanho;
x++;
}
break;
}
}
}
[/code]
Obrigado =D