Jogo Dominó

8 respostas
marcelomformiga

Boa noite pessoal!
Preciso fazer um jogo de Dominó em Java. Eu criei a classe Peças que tem o seguinte contrutor:

public Peças ( int lado1 , int lado2 )

{

this.lado1 = lado1 ;

this.lado2 = lado2 ;

}

E tenho na classe Jogo, um atributo “peças” que é uma Lista Sequencial e o seguinte método pra formar as 28 peças:

public void formarPeças ( )

{

for ( int i = 0 ; i <= 6 ; i ++ )

{ // for1

for ( int j = 0 ; j <= 6 ; j ++ )

{ // for2

p = new Peças ( i , j ) ;

peças.add( p ) ;

} // for2

} // for1

} // método

Mas acontece que quando mano imprimir a Lista, sai todas as peças com valor 0. Não sei o q estou fazendo de errado. Alguém sabe dizer onde está o erro?

Obrigado!!!

8 Respostas

pmlm

Esse método não vai gerar 28 peças mas sim 49. Por exemplo a peça 0-5 e a 5-0 são a mesma peça e no teu código vais gerar 2 diferentes.

Em relação ao imprimir 0, não vejo nada de errado, mostra o método onde imprimes.

pvrsouza

marcelomformiga,

Duas dicas:

[list]Evita usar caracteres especiais no teu código. Escrever Peças não é uma boa prática.[/list]
[list]Tua classe não deve ser Pecas e sim Peca, afinal seu modelo de Peca representa uma unidade de Peca.[/list]

Bem, eu não testei seu código, mas de cara eu ja faria de outra forma. Pense que as pedras do Dominó são formadas mais ou menos desta forma http://upload.wikimedia.org/wikipedia/commons/8/8d/Dominomatrix.svg . Sendo assim vc tem 6 pedras com o número 6, 5 pedras com número 5, e por ai vai...entendeu o raciocínio?

Então em código ficaria assim:

public ArrayList<Pecas> formarPecas()
    
    {
        ArrayList<Pecas> pedras = new ArrayList<Pecas>();   
        int contador = 0;
        for (int x = 6; x >= 0; x--)
        {
            for (int y = 0; y <= 6 - contador; y++)
            {
                pedras.add(new Peca(x, y)); //veja que eu estou usando a classe Peca e não Pecas. Rs.
            }
            contador++;
        }
        return pedras;
    }
pedroroxd

Na realidade é 1 a mais…

1 peça com o número 0
2 peças com o número 1
3 peças com o número 2
4 peças com o número 3
5 peças com o número 4
6 peças com o número 5
7 peças com o número 6

marcelomformiga

Desculpa, eu postei errado o meu método.
Na verdade o valor de “j” é igual a “i”, ficando assim o método:

public void formarPeças ( )

{

for ( int i = 0 ; i <= 6 ; i ++ )

{ // for1

for ( int j = i ; j <= 6 ; j ++ )

{ // for2

p = new Peças ( i , j ) ;

peças.add( p ) ;

} // for2

} // for1

} // método

Acho que desse modo também era pra dar certo, né?

Obrigado pelas dicas até agora!!!

M

NSMutableSet *set = [NSMutableSet set]; for (int i = 0; i < 6; i++) { for (int j = 0; j < (i + 1); j++) { Piece *piece = [[Piece alloc] initWithIndexPath:[NSIndexPath indexPathForRow:i inSection:j]]; [set addObject:piece]; [piece release]; } } pieces = [set retain];

Allan_Barcelos

O cara, tu estuda na Unisinos ?, deram um trabalho sobre isso tambem, me falaram que era complicado . . .

marcelomformiga

Estudo na Unisinos, sim! Estou precisando fazer esse trabalho agora.
Descobri já onde estava esse erro, era no método add() da classe SequentialList. Porém está dando valor de retorno assim:

Domino.Pedra@66848c
Domino.Pedra@8813f2
Domino.Pedra@1d58aae
Domino.Pedra@83cc67
Domino.Pedra@e09713
.
.
.

e assim segue até a última peça. Alguém saberia dizer o pq disso?

Como posso fazer pra trabalhar com os valores de cada peça ( i , j )?

pmlm

Adiciona o toString à tua classe Pedra:

public String toString(){ return lado1 +", " + lado2; }

Criado 25 de abril de 2010
Ultima resposta 27 de abr. de 2010
Respostas 8
Participantes 6