Ir ao conteúdo
  • Cadastre-se

Renan Galina

Membro Pleno
  • Posts

    201
  • Cadastrado em

  • Última visita

  1. @Henrique PP Achei bacana este. Mas essa marca é confiavel? E qual seria o melhor cabo para utilizar?
  2. @grievous esse suporte dele não caberia na minha mesa
  3. Salve galera, to precisando trocar meu monitor. Quero comprar um monitor que não seja tão grande devido a espaço curto na mesa (máx 26 polegadas). Me indiquem monitores gamers até 1500 reais, se ultrapassar um pouco o valor, não tem problema. #edit: Qual é o melhor cabo para maior qualidade da imagem? DVI, HDMI, VGA, DisplayPort? Meu pc: Ryzen 2600 GTX 1060 6gb 8gb ram
  4. import java.util.Scanner; public class PalavrasCruzadas { public final static int FALSO = 0; public final static int VERD = 1; public static void main(String[] args) { Scanner sc = new Scanner(System.in); int MAX = 102; // tamanho máximo da matriz. int[][] a = new int[MAX][MAX]; int m, n; int cont; System.out.print("Digite m & n: "); m = sc.nextInt(); n = sc.nextInt(); System.out.println("Digite a matriz linha por linha"); for(int i = 1; i <= m; i++) { for(int j = 1; j <= n; j++) { a[i][j] = sc.nextInt(); } } for(int j = 0; j <= n + 1; j++) { a[0][j] = -1; a[m + 1][j] = -1; } for(int i = 1; i <= m; i++) { a[i][0] = -1; a[i][n + 1] = -1; } cont = 0; for(int i = 1; i <= m; i++) { for(int j = 1; j <= n; j++) { if(inicio(a, i, j) == VERD) { cont++; a[i][j] = cont; } } } System.out.println("Palavras cruzadas:"); for(int i = 1; i <= m; i++) { for(int j = 1; j <= n; j++) { System.out.printf("%3d", a[i][j]); } System.out.println(); } } public static int inicio(int[][] a, int i, int j) { if(a[i][j] != -1 && (a[i - 1][j] == -1 && a[i + 1][j] != -1 || a[i][j - 1] == -1 && a[i][j + 1] != -1)) { return VERD; } else { return FALSO; } } } Então pessoal, eu quero criar mais um caso de teste para essa matriz aí. Mas não sei como criar. Um exemplo: o usuário digita 2 (2 casos de teste). aí vai para o primeiro caso de teste, digita as linhas e colunas dessa matriz A, e depois resultado. aí em vez do código terminar, iria para o 2 caso, com uma matriz A de valores diferentes. Como proceder?
  5. @giu_d Obrigado pela ajuda giu_d!
  6. @giu_d O meu ficou assim: public class JogoDaVelha { public static void main(String[] args) { Menu menu = new Menu(); Tabuleiro tabuleiro = new Tabuleiro(); // Identifica o jogador 1 como humano ( usando id 1 ) Jogador jogador1 = new Jogador(1); Jogador jogador2 = new Jogador(2); // Impressão inicial para começar o jogo menu.imprimeTabuleiro(tabuleiro); // começa com o jogador humano Jogador jogador = jogador1; boolean acabou = false; do { if (jogador.getid() == 1) { // Faz a jogada do considerando o método para usuário humano jogador.jogada(tabuleiro, menu.lerLinha(), menu.lerColuna()); } else { // Faz a jogada do considerando o método para computador jogador.jogada(tabuleiro); } // troca de jogador if (jogador == jogador1) { jogador = jogador2; } else { jogador = jogador1; } // Imprime o tabuleiro para o usuário ver a situação atual menu.imprimeTabuleiro(tabuleiro); // Verifica se alguém venceu if (tabuleiro.verificaVitoria("X")) { System.out.println("Vitória do jogador X"); acabou = true; } else if (tabuleiro.verificaVitoria("O")) { System.out.println("Vitória do jogador O"); acabou = true; } else if ((jogador1.getQtd() + jogador2.getQtd()) == 9) { System.out.println("Deu velha!"); acabou = true; } } while (!acabou); } } public class Jogador { private int qtd, id; // o atributo qtd ainda não está em uso public Jogador(int id_jogador) { this.id = id_jogador; this.qtd = 0; } public int getQtd() { return qtd; } public int getid() { return this.id; } // Em um desses métodos aqui teria que validar se a posição da jogada está vazia public void jogada(Tabuleiro tabuleiro, int linha, int coluna) { if (id == 1) { tabuleiro.setPosicao(linha, coluna, "X"); } else { tabuleiro.setPosicao(linha, coluna, "O"); } qtd++; } public void jogada(Tabuleiro tabuleiro) { // aqui o computador deve escolher uma posição vazia do tabuleiro para jogar int linha = 0; // trocar o zero pela linha escolhida pelo computador; int coluna = 0; // trocar o zero pela coluna escolhida pelo computador; tabuleiro.setPosicao(linha, coluna, "O"); qtd++; } } Só que quando executo, mesmo problema: Precisa de uma lógica para quando jogar X, trocar para o O. adicionado 6 minutos depois Rodei seu código aqui, mas não da pra digitar a linha nem coluna: sempre aparece: "Erro essa jogada ja foi efetuada" sendo que nao ta preenchido. Consegui arrumar: em vez do continue; era break.
  7. Ok, consegui rodar finalmente o programa. Agora, há um dilema: Tenho que alterar para td vez não repetir o 'x' porque qualquer valor que eu digite em linha ou coluna me retorna apenas X.
  8. @r.c_lopez Tenta acessar as pastas dele, mas acho muito difícil conseguir pois o cel precisa ta ligado p você acessar os dados. Se tiver backup só pegar na google e ja era
  9. @giu_d O único erro para compilar agora, está na classe Jogador. Jogador.java:17: error: cannot find symbol tabuleiro.setPosicao(linha, coluna, "X"); ^ symbol: variable linha location: class Jogador Jogador.java:17: error: cannot find symbol tabuleiro.setPosicao(linha, coluna, "X"); ^ symbol: variable coluna location: class Jogador Jogador.java:19: error: cannot find symbol tabuleiro.setPosicao(linha, coluna, "O"); ^ symbol: variable linha location: class Jogador Jogador.java:19: error: cannot find symbol tabuleiro.setPosicao(linha, coluna, "O"); ^ symbol: variable coluna location: class Jogador Jogador.java:24: error: cannot find symbol if (posições[linha][coluna] == sinal || posições[linha][coluna] == 'O') { ^ symbol: variable posições location: class Jogador Jogador.java:24: error: cannot find symbol if (posições[linha][coluna] == sinal || posições[linha][coluna] == 'O') { ^ symbol: variable sinal location: class Jogador Jogador.java:24: error: cannot find symbol if (posições[linha][coluna] == sinal || posições[linha][coluna] == 'O') { ^ symbol: variable posições location: class Jogador Jogador.java:27: error: cannot find symbol posições[linha][coluna] = sinal; ^ symbol: variable posições location: class Jogador Jogador.java:27: error: cannot find symbol posições[linha][coluna] = sinal; ^ symbol: variable sinal location: class Jogador Jogador.java:28: error: cannot find symbol jogada++; ^ symbol: variable jogada location: class Jogador 10 errors
  10. Fiz alterações! > Tabuleiro public class Tabuleiro { public String[][] matriz; public String[][] posições; public Tabuleiro() { posições = new String[3][3]; for (int i = 0; i < posições.length; i++) { for (int j = 0; j < posições[i].length; j++) { posições[i][j] = ""; } } } public String getPosicao(int linha, int coluna) { return posições[linha][coluna]; } public String getPosicoes(int a, int b){ return matriz[a][b]; } public void setPosicao(int linha, int coluna, String valor) { posições[linha][coluna] = valor; } public boolean verificaVitoria(String sinal) { if ((posições[0][0] == sinal && posições[0][1] == sinal && posições[0][2] == sinal) || //linha 1 (posições[1][0] == sinal && posições[1][1] == sinal && posições[1][2] == sinal) || //linha 2 (posições[2][0] == sinal && posições[2][1] == sinal && posições[2][2] == sinal) || //linha 3 (posições[0][0] == sinal && posições[1][0] == sinal && posições[2][0] == sinal) || //coluna 1 (posições[0][1] == sinal && posições[1][1] == sinal && posições[2][1] == sinal) || //coluna 2 (posições[0][2] == sinal && posições[1][2] == sinal && posições[2][2] == sinal) || //coluna 3 (posições[0][0] == sinal && posições[1][1] == sinal && posições[2][2] == sinal) || //diagonal (posições[0][2] == sinal && posições[1][1] == sinal && posições[2][0] == sinal)) { //diagonal inversa return true; } return false; } } Jogador public class Jogador{ private int qtd, id, id_jogador; public int linha=0, coluna=0; //Construtor public Jogador(int id_jogador){ this.id_jogador = id_jogador; } public int getid(){ return this.id; } public void jogada(Tabuleiro tabuleiro, int linha, int coluna){ this.linha = linha; this.coluna = coluna; if (posições[linha][coluna] == sinal || posições[linha][coluna] == 'O') { return false; } else { //jogada válida posições[linha][coluna] = sinal; jogada++; return true; } } public void jogada(Tabuleiro tabuleiro){ System.out.println(tabuleiro); menu.lerLinha(); menu.lerColuna(); } public void jogada(Tabuleiro tabuleiro){ if (id ==1) tabuleiro.setPosicao(linha, coluna, "X"); else tabuleiro.setPosicao(linha, coluna, "O"); } } Menu import java.util.Scanner; public class Menu{ private Scanner sc = new Scanner (System.in); private int linha=0, coluna=0; public Menu(){ } public void imprimeTabuleiro(int oi, int ola, Tabuleiro tabuleiro){ String[][] matriz = tabuleiro.getPosicoes(); for (int a = 0; a < matriz.length; a++) { for (int b = 0; b < matriz[0].length; b++) { System.out.print(matriz[a][b] + " | "); } System.out.println(); } } public int lerLinha(){ System.out.println("Digite a linha: "); this.linha = sc.nextInt(); return linha; } public int lerColuna(){ System.out.println("Digite a coluna: "); this.coluna = sc.nextInt(); return coluna; } } Main public class JogoDaVelha { public static void main(String[] args) { Menu menu = new Menu(); Tabuleiro tabuleiro = new Tabuleiro(); int linha, coluna, contador=0; Jogador jogador1; Jogador jogador2; boolean vitoriaX=false, vitoriaO=false; //Identifica o jogador 1 como humano ( usando id 1 ) jogador1 = new Jogador(1); jogador2 = new Jogador(2); //Impressão inicial para começar o jogo menu.imprimeTabuleiro(tabuleiro); do{ //Faz a jogada do primeiro jogador, considerando o método para usuário humano jogador1.jogada(tabuleiro,menu.lerLinha(), menu.lerColuna()); //contabiliza a jogada com sucesso, visto que os métodos já garantem que a jogada sempre acontecerá com sucesso contador++; //Imprime o tabuleiro para o usuário ver a situação atual menu.imprimeTabuleiro(tabuleiro); //Verifica se alguém venceu vitoriaX = tabuleiro.verificaVitoria("X"); vitoriaO = tabuleiro.verificaVitoria("O"); //Caso ngm tenha vencido ainda e não tenha acabado as jogadas, o segundo jogador joga. if(vitoriaX == false && vitoriaO == false && contador < 9){ //Faz a jogada do primeiro jogador, considerando o método para usuário computador jogador2.jogada(tabuleiro); //contabiliza a jogada com sucesso, visto que os métodos já garantem que a jogada sempre acontecerá com sucesso contador++; //Imprime o tabuleiro para o usuário ver a situação atual menu.imprimeTabuleiro(tabuleiro); //Verifica se alguém venceu vitoriaX = tabuleiro.verificaVitoria("X"); vitoriaO = tabuleiro.verificaVitoria("O"); } //Repete a estrutura enquanto ngm vencer e houver jogadas disponíveis. }while(vitoriaX == false && vitoriaO == false && contador < 9); //Verifica se o jogador 1 ganhou if (vitoriaX) { System.out.println("Vitória do jogador X"); }else{ //Verifica se o jogador 2 ganhou if (vitoriaO) { System.out.println("Vitória do jogador O"); }else{ //Verifica se deu velha System.out.println("Deu velha!"); } } } } Agora, dá os seguintes erros: .\Jogador.java:29: error: method jogada(Tabuleiro) is already defined in class J ogador public void jogada(Tabuleiro tabuleiro){ ^ JogoDaVelha.java:15: error: method imprimeTabuleiro in class Menu cannot be appl ied to given types; menu.imprimeTabuleiro(tabuleiro); ^ required: int,int,Tabuleiro found: Tabuleiro reason: actual and formal argument lists differ in length JogoDaVelha.java:23: error: method imprimeTabuleiro in class Menu cannot be appl ied to given types; menu.imprimeTabuleiro(tabuleiro); ^ required: int,int,Tabuleiro found: Tabuleiro reason: actual and formal argument lists differ in length JogoDaVelha.java:34: error: method imprimeTabuleiro in class Menu cannot be appl ied to given types; menu.imprimeTabuleiro(tabuleiro); ^ required: int,int,Tabuleiro found: Tabuleiro reason: actual and formal argument lists differ in length .\Menu.java:8: error: method getPosicoes in class Tabuleiro cannot be applied to given types; String[][] matriz = tabuleiro.getPosicoes(); ^ required: int,int found: no arguments reason: actual and formal argument lists differ in length .\Jogador.java:15: error: cannot find symbol if (posições[linha][coluna] == sinal || posições[linha][coluna] == 'O') { ^ symbol: variable posições location: class Jogador .\Jogador.java:15: error: cannot find symbol if (posições[linha][coluna] == sinal || posições[linha][coluna] == 'O') { ^ symbol: variable sinal location: class Jogador .\Jogador.java:15: error: cannot find symbol if (posições[linha][coluna] == sinal || posições[linha][coluna] == 'O') { ^ symbol: variable posições location: class Jogador .\Jogador.java:16: error: incompatible types: unexpected return value return false; ^ .\Jogador.java:19: error: cannot find symbol posições[linha][coluna] = sinal; ^ symbol: variable posições location: class Jogador .\Jogador.java:19: error: cannot find symbol posições[linha][coluna] = sinal; ^ symbol: variable sinal location: class Jogador .\Jogador.java:20: error: cannot find symbol jogada++; ^ symbol: variable jogada location: class Jogador .\Jogador.java:21: error: incompatible types: unexpected return value return true; ^ .\Jogador.java:26: error: cannot find symbol menu.lerLinha(); ^ symbol: variable menu location: class Jogador .\Jogador.java:27: error: cannot find symbol menu.lerColuna(); ^ symbol: variable menu location: class Jogador 15 errors
  11. @giu_d Mas ta com sinal de + no UML. O que tem sinal de - é apenas o teclado, que eu declarei: private Scanner sc = new Scanner (System.in); Pensei em um método para criar o jogada: boolean validarJogada(Tabuleiro tabuleiro) { if (posições[linha][coluna] == sinal || posições[linha][coluna] == 'O') { return false; } else { //jogada válida posições[linha][coluna] = sinal; jogada++; return true; } }

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...