• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

codder

Jogo Reversi/ Othello

9 mensagens neste tópico

Boas

Tenho um trabalho para fazer que é uma programa em java que permita jogar o jogo Reversi ou Othello, já fiz as primeiras linhas de código que permitem ao utilizador criar um tabuleiro com as dimensões pretendidas. Agora tenho de conseguir pô-lo a jogar o que se está a revelar um tanto dificil, alguem me pode dar umas luzes?

import java.util.Scanner;

public class Reversi {

public static void main (String args[]){

Escolha();


}
  
  public static void Tabuleiro(){
  
    Scanner S = new Scanner(System.in);
    
    System.out.println("Qual é o tamanho do tabuleiro?");
    
    int N = S.nextInt();
    
    
    
       
    String [][] matriz = new String [N][N];
    
    
   
    
      for(int i=0;i<N;i++)
      
      {

          for(int j=0;j<N;j++)
          
          matriz[i][j]= ("| ");
          
          
          
          
          
          }
    
      for(int i=0;i<N;i++)
      
      {

          for(int j=0;j<N;j++)
          
          System.out.print(matriz[i][j]+ "");
          
          System.out.println();
          
          }
          
          Scanner B = new Scanner(System.in);
          
          System.out.println("Insira a linha onde quer jogar.");
          
          Integer linha = B.nextInt();
          
          System.out.println("Insira a coluna onde quer jogar.");
          
          char[] coluna ={'a','b','c','d','e','f','g','h'};
          
          Integer col =   B.nextInt();
          
          
          
          for(int i=0; i<=linha; i++){
             for(int j=0; j<=col; j++){
             
             coluna[col]=0;
             
          }
          }
          
          for(int i=0; i<=linha; i++){
             for(int j = 0; j<=col; j++){
             
             System.out.print(coluna[col] + "");
             
             }
             
             }
          
              
          
         
     }

   public static void Escolha(){

   Scanner s = new Scanner(System.in);
   
   System.out.println("Escolha uma opção!");
   
   System.out.println("0: Sair");
   System.out.println("1: Jogar Reversi ");
   
   int n = s.nextInt();
   
   boolean x = true;;
   
   if (n==1){
     
     x = true;
     
     Tabuleiro();
     
   }else if(n==0){
     
     x = false;
     
     
   }
       
       
     
     
}
     
} 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Esses nomes de método e de variáveis deveriam ser em minúsculas.

Em que ponto tens dúvidas? Até que ponto estás  a usar Java? Estás a aprender POO?

Esse código não diz nada de especial, podes explicar melhor o objectivo do programa?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
Esses nomes de método e de variáveis deveriam ser em minúsculas.

Em que ponto tens dúvidas? Até que ponto estás  a usar Java? Estás a aprender POO?

 

Esse código não diz nada de especial, podes explicar melhor o objectivo do programa?

Ok, depois vou fazer isso.

Vou meter aqui o enunciado para explicar melhor. Ainda não estou a dar POO. As minhas dúvidas neste momento são como é que para tal jogador vou colocar uma bola ou um "X" na linha pretendida e na coluna pretendida.

1 Problema

O objectivo do trabalho é a construção de um programa em Java que permita

jogar Reversi (também conhecido por Othello). Para informações sobre as

regras do jogo consulte por exemplo: Wikipedia.

2 Objectivos

A construção do programa poderá (e deverá) ser feito incrementalmente, de

modo a ser possível satisfazer os requisitos a seguir:

2.1 Entrada

Para começar a jogar deverá ser invocado o comando java Reversi e o

programa deve apresentar o seguinte menu:

Reversi

0 - Sair

1 - Jogar

Ao ler 0 (zero) do standard de output o programa deve sair.

2.2 Tabuleiro Inicial

Caso seja lido 1 do standard de output na alínea anterior o programa deve

perguntar qual a o tamanho do tabuleiro, e depois inicializar um tabuleiro

com essas dimensões:

Qual o tamanho do tabuleiro?

[8]

a b c d e f g h

  - - - - - - - -

1| | | | | | | | |1

  - - - - - - - -

2| | | | | | | | |2

  - - - - - - - -

3| | | | | | | | |3

  - - - - - - - -

4| | | |O|X| | | |4

  - - - - - - - -

5| | | |X|O| | | |5

  - - - - - - - -

6| | | | | | | | |6

  - - - - - - - -

7| | | | | | | | |7

  - - - - - - - -

8| | | | | | | | |8

  - - - - - - - -

a b c d e f g h

2.3 Jogar entre humanos

Satisfazendo as regras do Reversi (quem começa é o jogador das peças X), o

programa deve perguntar se o jogador quer jogar ou passar. Caso pretenda

jogar, deve solicitar o seu movimento (inteiro respeitante à linha e caracter

da coluna). E depois escrever o tabuleiro resultante. Caso pretenda passar

ou após efectuar a jogada, o programa deve alternar para o outro jogador.

Jogador X pretende:

0 - passar

1 - jogar

[1]

Insira a linha (entre 1 e 8)

[6]

Insira a coluna (entre a e h)

[e]

  a b c d e f g h

  - - - - - - - -

1| | | | | | | | |1

  - - - - - - - -

2| | | | | | | | |2

  - - - - - - - -

3| | | | | | | | |3

- - - - - - - -

4| | | |O|X| | | |4

- - - - - - - -

5| | | |X|X| | | |5

- - - - - - - -

6| | | | |X| | | |6

- - - - - - - -

7| | | | | | | | |7

- - - - - - - -

8| | | | | | | | |8

- - - - - - - -

a b c d e f g h

Jogador O pretende:

0 - passar

1 - jogar

[1]

Insira a linha (entre 1 e 8)

[6]

Insira a coluna (entre a e h)

[d]

a b c d e f g h

- - - - - - - -

1| | | | | | | | |1

- - - - - - - -

2| | | | | | | | |2

- - - - - - - -

3| | | | | | | | |3

- - - - - - - -

4| | | |O|X| | | |4

  - - - - - - - -

5| | | |O|X| | | |5

  - - - - - - - -

6| | | |O|X| | | |6

  - - - - - - - -

7| | | | | | | | |7

  - - - - - - - -

8| | | | | | | | |8

  - - - - - - - -

a b c d e f g h

Jogador X pretende:

0 - passar

1 - jogar

2.4 Tabuleiro nal

Caso os 2 jogadores passem consecutivamente, o programa deve apresentar

o tabuleiro nal, o número de peças de cada jogador assim como o nome do

vencedor.

2.5 Jogar com ajudas

Para preencher este resquisito o programa deve jogar em modo de ajuda

indicando no tabuleiro quais as jogadas possíveis. Por exemplo, o tabuleiro

inicial seria:

a b c d e f g h

- - - - - - - -

1| | | | | | | | |1

- - - - - - - -

2| | | | | | | | |2

- - - - - - - -

3| | | |?| | | | |3

- - - - - - - -

4| | |?|O|X| | | |4

- - - - - - - -

5| | | |X|O|?| | |5

- - - - - - - -

6| | | | |?| | | |6

  - - - - - - - -

7| | | | | | | | |7

  - - - - - - - -

8| | | | | | | | |8

  - - - - - - - -

a b c d e f g h

Para tal deve alterar o menu da alínea 2.1 para:

Reversi

0 - Sair

1 - Jogar

2 - Jogar com Ajuda

2.6 Inteligência Articial

Para satisfazer este objectivo o programa deve ser capaz de conseguir defrontar

um oponente humano. Para tal deve alterar o menu da alínea anterior

para

Reversi

0 - Sair

1 - Jogar

2 - Jogar com Ajuda

3 - Jogar contra computador

Caso o utilizador insira 3, o programa deverá perguntar com que preça é

que o utilizador pretende jogar

0 - utilizar X

1 - utilizar O

e depois jogar de acordo.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vou meter aqui o enunciado para explicar melhor. Ainda não estou a dar POO. As minhas dúvidas neste momento são como é que para tal jogador vou colocar uma bola ou um "X" na linha pretendida e na coluna pretendida

Se o tabuleiro é um vector cada posição terá o valor a imprimir, um "X", um "O" ou o caracter que corresponder à acção.

Depois será só imprimir o vector.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Deverás ter o guardado o estado do tabuleiro.

Deverás implementar uma função que retorne a lista de jogadas possíveis mediante a regras, tendo como entrada o estado de um tabuleiro e indicar a vez de quem é a jogar.

Daqui terás de implementar uma função que te retorne mediante um estado de tabuleiro qual o valor que este tem para o jogador escolhido.

Depois terás de implementar usando a função anterior uma função recursiva que te retorne o valor com x jogadas em avanço.

Pesquisa coisas como minmax function, alpha-beta pruning.

Tens um longo caminho a percorrer até isso ficar decente.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Vou meter aqui o enunciado para explicar melhor. Ainda não estou a dar POO. As minhas dúvidas neste momento são como é que para tal jogador vou colocar uma bola ou um "X" na linha pretendida e na coluna pretendida

Se o tabuleiro é um vector cada posição terá o valor a imprimir, um "X", um "O" ou o caracter que corresponder à acção.

Depois será só imprimir o vector.

Isso é que eu não tou a ver como vou fazer, tenho de me desenrascar.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Deverás ter o guardado o estado do tabuleiro.

Deverás implementar uma função que retorne a lista de jogadas possíveis mediante a regras, tendo como entrada o estado de um tabuleiro e indicar a vez de quem é a jogar.

Daqui terás de implementar uma função que te retorne mediante um estado de tabuleiro qual o valor que este tem para o jogador escolhido.

Depois terás de implementar usando a função anterior uma função recursiva que te retorne o valor com x jogadas em avanço.

Pesquisa coisas como minmax function, alpha-beta pruning.

Tens um longo caminho a percorrer até isso ficar decente.

O problema é que o professor não nos deixa usar funções predefinidas, tem de ser tudo à lá pata.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hummm trabalhinho de P1 em Eng Informática de Évora não ?

Se for estão 1 cadinho atrasados se não me engano isso é para entregar amanhÂ.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Hummm trabalhinho de P1 em Eng Informática de Évora não ?

Se for estão 1 cadinho atrasados se não me engano isso é para entregar amanhÂ.

Lol ya é;

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora