Solucionado (ver solução)
Solucionado
(ver solução)
26
respostas

Jogo de Dama

Boa noite , estou com uma pequena duvida na verdade duas duvida , estou fazendo um trabalho de faculdade e acabei travando em uma parte , eu estou fazendo um jogo de dama porem não tinha outro lugar para tirar duvida sem ser aqui .No caso gostaria de de fazer a peça da dama se movimentar e movimentando ela gostaria de remover a anterior.

Classe Posição


package damat;

public class Posicao {

    private char x;
    private int y;

    //E responsavel para mostrar x - linha e com letra e y - numeros.
    public Posicao() {
        this.x = 'a';
        this.y = 1;
    }

    public Posicao(char x, int y) {
        this.x = x;
        this.y = y;
    }

    @Override
    public String toString() {
        return "" + x + y;
    }

    public char getX() {
        return x;
    }

    public int getY() {
        return y;
    }

    public void setX(char x) {
        this.x = x;
    }

    public void setY(int y) {
        this.y = y;
    }
}

Classe Peca


public class Peca {

    private String nome;
    private Posicao posicao;

    // Responsavel pelo nome e posição da peça.
    public Peca(String nome, Posicao posicao) {
        this.nome = nome;
        this.posicao = posicao;
    }

    public String getNome() {
        return nome;
    }

    public void setNome(String nome) {
        this.nome = nome;
    }

    public Posicao getPosicao() {
        return posicao;
    }

    public void setPosicao(Posicao posicao) {
        this.posicao = posicao;
    }

}

Classe Tabuleiro

public class Tabuleiro {

// Criando o Tabuleiro
public char[][] matriz;
// Tamanha do tabuleiro
public static final int TAMANHO = 9;
private Peca peca;

//Percorrendo sobre a matriz no caso pelo "Tabuleiro", assim o Local vazio e preenchida com " - "
    public Tabuleiro() {
        matriz = new char[TAMANHO][TAMANHO];
        for (int i = 0; i < TAMANHO; i++) {
            for (int j = 0; j < TAMANHO; j++) {
                matriz[i] [j] = '-';
            }
        }
    }

   //Imprimindo o Tabuleiro com letras informando linha e numero colunas.
   public void imprimirTabuleiro() {

        System.out.println("\n            a   b   c   d   e   f   g  ");
        System.out.println("");

        for (int linha = TAMANHO - 2; linha > 0; linha--) {
            System.out.print("       " + linha + " ");

            for (int coluna = 1; coluna < TAMANHO - 1; coluna++) {
                System.out.print("   " + matriz[linha][coluna]);
            }

            System.out.println();
        }
        System.out.println("\n            a   b   c   d   e   f   g  ");


    }


    public void colocarPecaNoTabuleiro() {

        //Preenchendo fileira 1 e 2
        for (int i = 1; i < Tabuleiro.TAMANHO; i++) {
            matriz[1][i] = (char) ('J');

            for (int j = 1; j < Tabuleiro.TAMANHO; j++) {
            matriz[2][j] = (char) ('J');


      }
        }
        //Preenchendo fileira 7 e 6
        for (int i = 1; i < Tabuleiro.TAMANHO; i++) {
            matriz[7][i] = (char) ('J');

            for (int j = 1; j < Tabuleiro.TAMANHO; j++) {
            matriz[6][j] = (char) ('J');
          }
            }
                }


    public void movimento(int movimento  ){


    }
               }

Classe principal


public class DamaT {

    public static void main(String[] args) {
        Tabuleiro tab = new Tabuleiro();

        tab.colocarPecaNoTabuleiro();
        tab.imprimirTabuleiro();

        tab.matriz [3][2] = (char) ('J');
        tab.imprimirTabuleiro();



    }


}

Na Classe principal imprimir o tabuleiro e também fiz que a matriz recebesse as coordenada 3 e 2 recebendo a peça J , porem quando faço isso não sei como remover a anterior ou se caso tiver um jeito mais fácil aceito sugestões se alguém puder me ajudar fico grato

26 respostas

Oi, Jean!

Muito legal isso! Mas antes de te ajudar, tem uma maneira mais fácil de fazer esse seu tabuleiro em Java, mas preciso saber se você conhece sobre Map e Interfaces.

Você conhece essas duas coisas? Além disso, você pode usar isso no seu projeto ou é uma exigência fazer o tabuleiro usando vetor?

Boa noite Arthur tudo jóia? Então eu até tinha falado com o meu professor se poderia ser com interface gráfica porém ele disse q quer dessa forma com vetor , eu já tinha ouvido falar mais nunca tinha feito algo parecido mais após esse trabalho pode ter certeza q vou da uma pesquisada . Então Arthur se teria como me dá essa força , travei nessa parte de movimentação e remover o objeto .

Sem problemas. Pela sua descrição eu imaginei que isso poderia ser uma exigência de professor hehe.

Outra pergunta para saber se é uma exigência: Ele obrigou a trabalhar com letras para as colunas e números para as linhas?

Então na verdade coloquei número é letra para diferenciar coluna e linha , agora no caso do J foi um exemplo para identificar a peça, mais a minha intenção e tirar a letra e os números coloquei no começo mais para identificação.

Meu professor ele sempre dificulta os trabalhos kkkkkkkkkk sempre dá forma mais difícil então prefiro as vezes comentar os códigos e até colocar letras e números para me achar dependendo do q for fazer

Oi Jean,

Sem problemas. Isso é normal. O bom é que nos força a sair de uma zona de conforto.

Eu vou precisar que você tenha paciência nesse tópico que vai ficar bastante grande. Vai ser um ping-pong entre eu e você para criarmos esse seu projeto.

Eu poderia escrever todo o seu código e te dar a solução, mas isso não seria nada bom para você. O ideal é que você quebre a cabeça o máximo possível como já está fazendo e eu vou só te ajudando quando você tiver dúvidas de como proceder ou travar em alguma coisa, como na movimentação da peça. Vamos lá!

Primeiro, sobre suas classes. Em orientação a objetos, como o nome já diz, nosso código é orientado a objetos. Ou seja, sua classe Posicao.java não faz sentido. Posição não é um objeto. No máximo é um atributo de outra classe. Pode descartar ela.

Já a classe Peca.java faz sentido, mas se o jogo fosse Xadrez ou outro onde as peças possuissem atributos e comportamentos diferentes. No jogo de damas, todas as peças são iguais e se movimentam da mesma forma. Ou seja, você não vai precisar dessa classe também.

Com isso, seu programa, por enquanto, se resume somente a duas classes:

  • Tabuleiro.java
  • DamaT.java (Seu programa)

Com isso em mente, lendo seu código, eu não entendi qual é a dimensão do seu tabuleiro. Você criou uma variável estática e final chamada TAMANHO igual a 9. Isso significa que o seu tabuleiro é de 9x9? Se for, seu tabuleiro está errado, pois está imprimindo somente 7 linhas e 7 colunas (A, B, C, D, E, F e G). O certo seriam 9 linhas e 9 colunas, não?

Tendo isso em mente, você precisa corrigir primeiro como o seu tabuleiro será carregado.

1) Deixe a criação do tabuleiro dinâmica

Pensando em damas, há dois tipos de tabuleiros. Tem o tabuleiro mais usado aqui no Brasil que é o de 8x8 (64 casas), mas também tem o de 10x10 (100 casas) que é mais utilizado em outros países.

Com isso, você pode deixar à escolha do jogador qual é a dimensão do tabuleiro que ele quer jogar. Sugiro que você remova a variável estática e final TAMANHO e trabalhe com um argumento no seu construtor, ficando assim:

public class Tabuleiro {

    // Vetor do Tabuleiro
    public char[][] matriz;

    // Tamanho do Tabuleiro
    private int tamanho;

    // Constrói o tabuleiro com o tamanho escolhido pelo jogador
    public Tabuleiro(int tamanho) {
        // Salva o tamanho do tabuleiro criado.
        this.tamanho = tamanho;

        // Cria uma nova matriz preenchendo todas as posições com - 
        this.matriz = new char[tamanho][tamanho];
        for (int i = 0; i < tamanho; i++) {
            for (int j = 0; j < tamanho; j++) {
                this.matriz[i][j] = '-';
            }
        }
    }

Essa parte eu adiantei para você.

Comente ou remova os outros métodos por enquanto e vamos nos concentrar primeiro em criar o tabuleiro corretamente. Ok? Uma coisa de cada vez!

2) Escrevendo as linhas e Colunas dinamicamente

O seu segundo problema é que você está escrevendo as linhas e colunas de maneira fixa. Isso é ruim em orientação a objetos. Quanto mais dinâmico e mais flexível for seu código, melhor. Vamos deixar a criação de linhas e colunas de forma dinâmica para o programa renderizar a tabela sozinho de acordo com a dimensão.

Seu método imprimeTabuleiro precisa ser revisto. Ele não pode imprimir as letras de forma fixa como você está fazendo. Precisa ser dinâmico.

Primeira dica: Crie um atributo privado, estático e final com todas as letras do alfabeto:

// Letras para as colunas 
private static final String ALFABETO = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";

Você vai usar esse atributo no seu método imprimeTabuleiro para imprimir as colunas de acordo com o tamanho do tabuleiro.

Pense: Se o tabuleiro tiver 8 posições, você vai imprimir as colunas até a oitava letra, certo? Se tiver 10, até a décima. Você vai usar essa String aí. Dica, use o charAt do String!

Segunda dica: Você imprime as letras duas vezes. Uma em cima do tabuleiro, outra em baixo. Ou seja, você não deve repetir o código. Você vai criar um método para isso! Pode ser um método chamado imprimeColunas. Nele você vai colocar a regra para imprimir as letras do tabuleiro.

Terceira dica: Seu código de imprimir as linhas está quase certo, mas tem um problema na lógica do seu for. Ele está imprimindo menos duas linhas segundo a sua lógica. Analise o seu for e corrija para imprimir todas as linhas de acordo com o tamanho.

Corrija seu código e tente novamente. Vamos tentar primeiro só imprimir o tabuleiro corretamente, sem colocar as peças.

Certamente você vai ter erros de compilação e dúvidas. Tente corrigir os erros lendo as mensagens. Nela sempre tem onde corrigir. Se tiver dúvidas, volte aqui que eu tento ajudar.

Boa sorte!

Oi Arthur muito obrigado pela ajuda peguei a suas dicas e consegui fazer o tabuleiro com a quantidade de casas que eu colocar o codigo ficou assim:

Classe principal:


public class DamaT {

    public static void main(String[] args) {
        Tabuleiro tab = new Tabuleiro(6);

        tab.imprimirTabuleiro();



    }


}

Classe Tabuleiro:

public class Tabuleiro {

    // Vetor do Tabuleiro
    public char[][] matriz;

    // Tamanho do Tabuleiro
    private int tamanho;

    // Constrói o tabuleiro com o tamanho escolhido pelo jogador
    public Tabuleiro(int tamanho) {
        // Salva o tamanho do tabuleiro criado.
        this.tamanho = tamanho;

        // Cria uma nova matriz preenchendo todas as posições com - 
        this.matriz = new char[tamanho][tamanho];
        for (int i = 0; i < tamanho; i++) {
            for (int j = 0; j < tamanho; j++) {
                this.matriz[i][j] = '-';
            }
        }
    }
   //Imprimindo o Tabuleiro com letras informando linha e numero colunas.
   public void imprimirTabuleiro() {



        for (int linha = 0 ; linha < tamanho; linha++) {
            System.out.print("       " + linha + " ");

            for (int coluna = 0; coluna < tamanho ; coluna++) {
                System.out.print("   " + matriz[linha][coluna]);
            }

            System.out.println();
        }


    }

   /*
    public void colocarPecaNoTabuleiro() {

        //Preenchendo fileira 1 e 2
        for (int i = 1; i < Tabuleiro.TAMANHO; i++) {
            matriz[1][i] = (char) ('J');

            for (int j = 1; j < Tabuleiro.TAMANHO; j++) {
            matriz[2][j] = (char) ('J');


      }
        }
        //Preenchendo fileira 7 e 6
        for (int i = 1; i < Tabuleiro.TAMANHO; i++) {
            matriz[7][i] = (char) ('J');

            for (int j = 1; j < Tabuleiro.TAMANHO; j++) {
            matriz[6][j] = (char) ('J');
          }
            }
                }

 */
    public void movimento(int movimento  ){


    }
               }

Como consegui imprimir o tabuleiro perfeitamente tirei a opção de colocar letras nas colunas , porem testei da forma que vc tinha dito e consegui , agora minha duvida seria para colocar as peças e movimentação , posso esquecer essa função de preenchimento do tabuleiro? ou teria uma outra forma mais pratica?

Muito bom, Jean!

A movimentação podemos fazer uma regra bastante simples. Vamos usar o sistema "de-para". Serão dois argumentos. Onde a peça está agora e para onde ela vai.

O jogador vai colocar qual peça ele quer mover usando as informações de linha&coluna. E depois ele vai dizer para onde quer mover essa peça, também usando linha&coluna.

Exemplo: quero mover minha peça que está na casa 2A (linha 2, coluna A) para a casa 3B (linha 3, coluna B).

Com essas informações, no seu código você vai remover a peça que está na posição 2A (matriz[1][0]) e colocar uma peça na posição 3B (matriz[2][1]).

Entendeu a ideia?

Mas, pra isso, precisamos das linhas e colunas. Não acha melhor resolver isso antes?

Sim , verifiquei que não dá para utilizar a mesma função que tinha utilizado para preencher as linhas e colunas , teria um jeito mais pratico ou seria seguindo a mesma logica?

Arthur , verifiquei de um jeito :

public void colocarPecaNoTabuleiro(int pecas, int Jog1F1, int Jog1F2, int Jog2F1 , int Jog2F2) {


        this.tamanho = pecas;



        for (int i = 0; i < pecas; i++) {
            matriz[Jog1F1][i] = (char) ('J');
            matriz[Jog1F2][i] = (char) ('J');

        for (int j = 0; j < pecas; j++) {
            matriz[Jog2F1][i] = (char) ('J');
            matriz[Jog2F2][i] = (char) ('J');

    }



    }

Dessa forma criei uma função pecas , ai chamo ela na principal e coloco a quantidade de peças que desejar

public class DamaT {

    public static void main(String[] args) {
        Tabuleiro tab = new Tabuleiro(6);


        tab.imprimirTabuleiro();
        tab.colocarPecaNoTabuleiro(6,0,1,4,5);
        tab.imprimirTabuleiro();

}

Porem creio que a varias forma mais fácil , ficou um pouco grande mais deu certo.

Agora nessa parte de movimentação que ficou um pouco confuso você poderia me explica novamente por favor? no caso até entendi Arthur porem não estou conseguindo assimilar muito bem

Justo!

Assim como refatoramos a renderização, agora temos que refatorar a escrita das linhas e colunas!

Tem duas formas de fazer isso.

1) Formatar com espaços

Isso é fazer como você estava fazendo antes e imprimindo as linhas e colunas formatadas usando espaço.

Vantagem: Você pode fzer um template de espaços como quiser.

Desvantagem: Dá trabalho e o código fica grande com os espaços em branco.

2) Usar a matriz

Se parar pra pensar, o tabuleiro com linhas e colunas não deixa de fazer parte da matriz, certo? Os fatos seriam:

  • A posição matriz[0][0] fica vazia sem nada.
  • A primeira linha da matriz (matriz[0][X]) fica reservada para as letras. Onde X é maior ou igual a 1 (pois o 0 é vazio)
  • A primeira coluna da matriz (matriz[X][0]) fica reservada para os números. Onde X é maior ou igual a 1 (pois o 0 é vazio)
  • O tabuleiro começa da matriz[1][1] em diante.

Nesse segundo exemplo, você quando for usar as posições das peças, terá de usar um índice a mais. Por exemplo, a posição 1A não é matriz[0][0] como seria hoje. Ela seria a posição matriz[1][1].

Isso de certa forma até te facilitaria, pois não teria que ficar reduzindo o índice em 1 como teria de fazer no outro formato.

Apesar de assustar um pouco mais, usar a matriz é mais fácil.

Qual você prefere?

Pelo visto achei a segunda opção mais eficiente , prefiro ela, alem de ser uma forma de aprender mais sobre matriz , qual seria o próximo passo por favor ?

Perfeito!

Você já vai preencher essas informações no construtor do Tabuleiro!!!

O número de linhas e colunas sempre será fixo junto com o tamanho do tabuleiro.

Você algumas coisas a fazer no construtor:

  • Antes de preencher todas as posições, preencher as linhas e colunas.
  • Depois de preencher as linhas e colunas, colocar as peças no tabuleiro e preencher com "-" os quadrados em branco.

Então, como fazer com as colunas? Lembra do código que eu sugeri com o alfabeto como atributo estático e final? Vamos precisar dele para preencher as colunas. O primeiro valor é zero (0) pois a letra A precisa começar no número 1 para funcionar o método charAt como queremos. Você vai ver mais abaixo

public class Tabuleiro {

    // Letras para as colunas
    private static final String ALFABETO = "0ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    // Criando o Tabuleiro
    public char[][] matriz;

(...)

Você vai fazer dois loops no seu construtor. Um irá preencher todas as colunas da primeira linha do seu vetor e o outro irá preencher todos os números. Esses códigos eu vou te dar de graça, pois envolve uma biblioteca que você não deve conhecer facilmente. Seu construtor fica assim:

// Constrói um tabuleiro com tamanho dinâmico
public Tabuleiro(int tamanho) {
    // Salva o tamanho do tabuleiro criado.
    this.tamanho = tamanho;

    // Cria uma nova matriz de tabuleiro 
    this.matriz = new char[tamanho][tamanho];

    // Preenchendo as colunas
    for(int coluna = 1; coluna < this.tamanho; coluna++) {
        // Recupera a letra do alfabeto da String usando charAt de acordo com o número da coluna.
        this.matriz[0][coluna] = ALFABETO.charAt(coluna);
    }

    // Preenchendo as linhas
    for(int linha = 1; linha < this.tamanho; linha++) {
        // Transforma o número da linha em char usando o método forDigit
        this.matriz[linha][0] = Character.forDigit(linha, 10);
    }

    // Preenche todas as posições com -
    // TODO: TEM QUE CORRIGIR!!! Se deixar assim, ele sobrescreve as letras e os números que você escreveu!!!!
    for (int i = 0; i < tamanho; i++) {
        for (int j = 0; j < tamanho; j++) {
            matriz[i][j] = '-';
        }
    }
}

Já te dei boa parte do código ;) Agora seu trabalho é corrigir duas coisas:

1) Corrigir o loop onde preenche todas as posições com "-". Se deixar o loop da forma como está, vai perder as letras e números que você já inseriu na matriz!!!

2) Corrigir o método imprimeTabuleiro. Dica: a primeira coisa que seu método tem que fazer é imprimir um espaço em branco relativo à posição [0][0] e o seu loop deve começar da posição 1!!!

Qualquer dúvida fala!

Buguei um pouco kkkkkkkk , na verdade não sei se era dessa forma mais coloquei todas as letras nas colunas até ai tudo bem só que esta imprimindo dentro do tabuleiro seria isso mesmo ?

public class Tabuleiro {

    private static final String ALFABETO = "0ABCDEFGHIJKLMNOPQRSTUVWXYZ";

    // Vetor do Tabuleiro
    public char[][] matriz;

    // Tamanho do Tabuleiro
    private int tamanho;

    //Peças
    public int peca;

   public Tabuleiro(int tamanho) {
    // Salva o tamanho do tabuleiro criado.
    this.tamanho = tamanho;

    // Cria uma nova matriz de tabuleiro 
    this.matriz = new char[tamanho][tamanho];

    // Preenchendo as colunas
    for(int coluna = 1; coluna < this.tamanho; coluna++) {
        // Recupera a letra do alfabeto da String usando charAt de acordo com o número da coluna.
        this.matriz[0][coluna] = ALFABETO.charAt(coluna);
    }

    // Preenchendo as linhas
    for(int linha = 1; linha < this.tamanho; linha++) {
        // Transforma o número da linha em char usando o método forDigit
        this.matriz[linha][0] = Character.forDigit(linha, 10);
    }

    // Preenche todas as posições com -
    for (int i = 0; i < tamanho; i++) {
        for (int j = 0; j < tamanho; j++) {
            matriz[i][j] = ALFABETO.charAt(j + 1);
            }
    }
}

E no caso da Impressão não entendi muito bem , tentei implementar um loop for no caso parecido com

for (int i = 0; i < tamanho; i++) {
        for (int j = 0; j < tamanho; j++) {
            matriz[i][j] = ' J '
            }

Seria mais ou menos isso ?Coloquei i e j , já que os dois tem valor 0 .

Então Arthur buguei um pouco mesmo haha, no caso da coluna que nem eu tinha dito esta imprimindo dentro do tabuleiro creio que para imprimir fora não e bicho de 7 cabeça , eu só não entendi muito bem na parte de imprimir , que acho que ai já entra a parte de movimentação da peça pela coluna e linha ne? No caso quando você fala de imprimir o espaço vazio e o espaço que a peça saiu, correto?

for (int i = 0; i < tamanho; i++) {
        for (int j = 0; j < tamanho; j++) {
          this.matriz[0][j] = ALFABETO.charAt(j);

            }

Cheguei nesse código ele imprimi as letras porem dentro do tabuleiro , teria como eu imprimir mais para cima no caso em cima do tabuleiro ?

Não exatamente.

Você precisa preencher as posições começando do índice 1!!! Veja:

    //Percorrendo sobre a matriz no caso pelo "Tabuleiro", assim o Local vazio e preenchida com " - "
    public Tabuleiro(int tamanho) {
        // Salva o tamanho do tabuleiro criado.
        this.tamanho = tamanho;

        // cria uma nova matriz de tabuleiro 
        this.matriz = new char[tamanho][tamanho];

        // Preenchendo as colunas
        for(int coluna = 1; coluna < this.tamanho; coluna++) {
            this.matriz[0][coluna] = ALFABETO.charAt(coluna);
        }

        // Preenchendo as linhas
        for(int linha = 1; linha < this.tamanho; linha++) {
            this.matriz[linha][0] = Character.forDigit(linha, 10);
        }

        // Preenche todas as posições com -
        for (int i = 1; i < tamanho; i++) {
            for (int j = 1; j < tamanho; j++) {
                matriz[i][j] = '-';
            }
        }
    }

Se você não fizer assim, todas as posições (incluindo a linha zero e a coluna zero que são os números e letras) serão "-".

Além disso, você precisa melhorar seu método imprimirTabuleiro ficando da seguinte forma:

    //Imprimindo o Tabuleiro com letras informando linha e numero colunas.
    public void imprimirTabuleiro() {
        // Imprimindo o vazio da posição 0x0
        System.out.print(" ");

        // Imprimindo os outros valores
        for (int linha = 0 ; linha < tamanho; linha++) {
            for (int coluna = 0; coluna < tamanho ; coluna++) {
                System.out.print(matriz[linha][coluna]);
            }

            System.out.println("");
        } 

    } // fim imprimirTabuleiro

Dessa forma, quando você mandar imprimir, o resultado será:

 ABCDEFG
1-------
2-------
3-------
4-------
5-------
6-------
7-------

Teste e veja se o resultado será o mesmo.

Nossa cara me senti burro kkk , era tão simples não precisava ter mudado o codigo como eu tinha feito , fiz o teste, fiz desssa forma que vc me disse e fiz outra forma

public void imprimirTabuleiro() {


        // Estou definindo as linhas conforme o tamanho que defini.
        for (int linha = 0 ; linha < tamanho; linha++) {
            System.out.print("       " + linha + " ");

            // Estou definindo as Colunas
            for (int coluna = 1; coluna < tamanho ; coluna++) {
                System.out.print("   " + matriz[linha][coluna]);

            }

            System.out.println();
        }


        System.out.println("\n");
    }

E o mesmo que tinha porem apenas modifiquei a coluna para ele imprimir certo ,, agora creio que entra a parte de movimentação correto?

Não. Agora temos que pensar em posicionar as peças, que não é algo tão simples assim.

Mas vou demorar um pouco para colocar a explicação.

Antes disso, o vetor só pode ser de char? Não pode ser de String, por exemplo? Fica mais fácil.

Pode Ser String sim , sem problemas , por enquanto vou quebrando a cabeça aqui já que tenho que entregar ainda hoje até meia noite hahahaha , mais fico no aguardo da explicação Arthur obrigado.

Eita, sem pressão haha

Tirei o Char deixe como String:

public void colocarPecaNoTabuleiro(int pecas, int Jog1F1, int Jog1F2, int Jog2F1 , int Jog2F2) {


        this.tamanho = pecas;


        // Aqui esta definindo a quantidade de peças e a fileira do Jogador1
        for (int i = 0; i < pecas; i++) {
            matriz[Jog1F1][i] = ('#');
            matriz[Jog1F2][i] = ('#');

        // Aqui esta definindo a quantidade de peças e a fileira do Jogador2    
        for (int j = 0; j < pecas; j++) {
            matriz[Jog2F1][i] = ('#');
            matriz[Jog2F2][i] = ('#');

    }

kkkkkkk tranquilo

solução!

Então, como seu tempo é curto, eu vou te dar um desconto, mas tem que me prometer que vai ler o código e entender. Se não seu professor vai fazer perguntas sobre o código e você não vai saber responder. Tire dúvidas aqui.

Eu tentei comentar ele ao máximo...

Coloquei o código num Gist do Github:

https://gist.github.com/anonymous/c398a0463518f0e9469588b8b50686a6

O Arthur muito obrigado mesmo cara , pode ter certeza que irei estudar o código sim , e desculpe por encher o seu saco durante esse tempo kkkkkk, gostei muito de aprender coisas novas pode ter certeza que quando tiver duvidas irei fazer aqui sim .

Valeu pela força .

abraço.

Arthur voltando no assunto eu professor mudou que a entrega pode ser até dia 17/09 domingo kkkkkk, gostaria de saber se teria algo que no caso vc não me explicou e gostaria de me explicar para fazer o jogo?

Maravilha, hein! Hahaha!

Bom, agora você teria que fazer o jogo ficar decente. Tipo:

  • Ter uma tela de início com duas opções: Uma que crie um tabuleiro de 8x8 e uma que crie um tabuleiro de 10x10. Você captura a entrada do teclado que o jogador fizer. Se for a opção 1, você passa o valor 8 no construtor do Tabuleiro. Se for opção 2, você passa o valor 10 no construtor do tabuleiro.
  • Modificar seu programa para ficar em loop esperando pelas coordenadas da próxima jogada até o jogo terminar (e você encerrar o jogo) ou até o jogador digitar um texto para sair como "sair" e encerrar o programa.
  • Eu fiz o tabuleiro de 10x10, falta agora fazer o de 8x8. É a mesma regra, só mudam os valores. Talvez dê até para colocar esse código num método para não ter que ficar copiando e colando linha de código. Lembre-se sempre, se você faz CTRL+C/CTRL+V, significa que seu código pode ser refatorado e reaproveitado num método de alguma forma.
  • Corrigir possíveis bugs no jogo. Por exemplo, uma peça só pode se mover na diagonal adjacente à posição onde está. Não pode ir para frente, trás ou para os lados e também não pode se mover duas casas a não ser que vá "comer" uma peça adversária.
  • Implementar a funcionalidade da "Dama", onde uma peça chega na margem oposta e ela possui liberdade para se mover em mais de uma casa na diagonal.

Que eu me lembre, são essas coisas que você pode fazer para melhorar.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software