Por favor me ajudem com meu jogo!

E ae pessoal , preciso de uma ajuda , por favor respondam se possivel.
Tenho um tabuleiro com pecas.
Cada peca eh um objeto do tipo image. e foram desenhadas com o paint juntamente com o tabuleiro
Quando clico em uma posicao no tabuleiro reconheco o clique e sua posicao no tabuleiro (1,3 por exemplo se estiver na coluna 3 e linha 1 )
Porem gostaria de saber se tem alguem jeito que saber se ao especificar certa coordenada tem como reconhecer se existe um objeto la ou nao ( algo como isImageObject retornando um boolean?)
Por favor me ajudem!
Obrigado

Paulo Choi[/img]

Associa o teu objeto com a posicao… qdo vc “colocar” o objeto em alguma posicao, vc pega as coordenadas e relaciona… entao, qdo vc clicar de novo, verifica se tem algum objeto relacionada com a posiao clicada…

Rafael

Perdao, mas como poderia fazer isso?
Poderia me dar uma luz com um pseudocode?

Parece que você precisa de uma matriz 8 x 8 de um objeto génico face aos objecot que representam as peças do jogo. Casas vazias são setadas para null. Quando uma peça se move para uma casa essa posição na matriz é instanciada com um objeto do tipo da peça que foi para lá. Esse ojbeto é responsável por desenhar a imagem da peça. Cada classe (peça) faz um tipo de desenho. Deve ser importante ter uma propriedade tipo “Color” para saber de qual lado é a peça. As regras de movimentos ficam em cada classe diferente.

Olá Makwanza

Isto que você está fazendo é tipicamente implementado por um tilemap, que nada mais é que uma ou mais matrizes de duas dimensões que representam o mapa do jogo… no caso o tabuleiro. Cada matriz é um layer (camada)

Para o tabuleiro, eu particularmente recomendo a utilização de 2 layers, um para o tabuleiro e outro para as peças. No caso do tabuleiro, você usará duas imagens apenas, uma para cada cor de casa (dois tiles) e para as peças, uma para cada peça e uma imagem totalmente transparente, para indicar que está vazio.

Cada um desses tiles terá algo para identificá-los, tipicamente um inteiro é usado (porém um único tile pode ter muito mais informações). Assim, após você calcular a posição no tilemap onde foi clicado o mouse, basta verificar na camada das peças se é um tile transparente ou de uma peça.

Espero ter ajudado…

Falou :slight_smile:

Muito obrigado pela ajuda , porem, nao consegui entender direito, sera que poderiam me ajudar?
Estou fazendo um array 2d pos[x][y] que eh setado para 1 se a peca eh branca, 2 se eh preta, e 0 se nao contem pecas.
Estou desenhando as pecas do seguinte modo

		g.drawImage(whitePiece1,  COL_ZERO    ,ROW_ZERO ,null);
		g.drawImage(whitePiece2,  COL_ONE     ,ROW_ZERO ,null);	
		g.drawImage(whitePiece3,  COL_TWO     ,ROW_ZERO ,null);	
		g.drawImage(whitePiece4,  COL_THREE   ,ROW_ZERO ,null);
		g.drawImage(whitePiece5,  COL_FOUR    ,ROW_ZERO ,null);

Qaundo clico numa peca eu sei onde que ela esta, qual a sua posicao e cor, porem nao sei qual o nome dela, ou seja, se eh whitePiece1, 2 ou algo!
Procurei e procurei e parece que nao existe metodo que consiga descobrir o nome do objeto com clique do mouse, ou existe? Se existir, meu problema ja esta acabado
Muito obrigadoo

Paulo Choi

Pessoal aqui esta as imagens para tnetar esclarecer o que quero fazer

Guarde os nomes em algum lugar… por exemplo, usando um hashmap, a key eh a posicao, e o value eh o teu objeto, ou nome, ou qq coisa…

Rafael

Eu nao consigo=(
por favor me ajudem, preciso disso ate sexta =(

Erhm, voce poderia ser um tiquinho só mais específico do que “eu não consigo”? Assim fica dificil ajudar…

Ei, seu jogo tá bonitão! Parabéns!!!

Bom, se você sabe que lá tem uma peça branca ou preta ou vazia, então não vejo motivos para saber se é a white1, white2, etc… aliás, não há motivos para se instanciar estas várias imagens de peças, já que simplesmente uma imagem pra cada (uma branca e uma preta) da conta do recado.

Em outras palavras, todas as peças brancas serão da imagem whitePiece, e as pretas blackPiece. Isso também vai fazer você economizar muita memória, que é uma das razões principais para se utilizar tilemaps, pois as imagens são reaproveitadas em outras partes da tela.

Aliás, existe uma maneira ainda melhor para se desenhar um tilemap, que é através de dois laços for. Isso é conseguido através da utilização dos números desse seu vetor 2d que está armazenando o estado atual do mapa como índices.

Deixa eu tentar explicar melhor… vamos ver… você terá agora o que é comumente chamado de “tileset”, que são vários tiles indexados. Você pode implementar isto usando um simples vetor, desse jeito assim:

[code]Image tileset[] = new Image[3];
tileset[0] = transparentImage;
tileset[1] = whitePiece;
tileset[2] = blackPiece;

// aí, desenha o mapa usando dois laços for aninhados
for (i = 0; i < linhasNoMapa; i++) {
for(j = 0; j < colunasNoMapa; j++) {
// calcula a posição x e y na imagem
x = j * tileWidth;
y = i * tileHeight;
// desenha agora usando o tileset
g.drawImage(tileset[pos[j][i]], x, y, null);
}
}
[/code]

Assim fica bem mais fácil de deesnhar e de entender…

Espero ter clareado as suas idéias… falou :slight_smile:

MEU DEUS!
AGORA ENTENDI! MUITO OBRIGADO DUDASKANK!
Vou tentar implementar isso agora! obrigado.

hahaha… de nada…

e quando acabar me avisa pra eu ver o jogo tá? Claro, se você puder me mostrar…

:slight_smile: