[RESOLVIDO] Jogo usando componentes swing?

tenho uma certa experiencia usando componentes swing no meu ambiente de trabalho mas me foi pedido na faculdade para fazer um jogo utilizando apenas componentes swing…

foi sugerido fazer jogos de tabuleiro, xadrez, damas…

mas não estou conseguindo entender como fazer isso com swing…
a busca no google também não ajudou…
alguma ideia?

Jogos de xadrez, damas etc. são quase bobocas para se fazer em swing, porque você pode usar componentes prontos como o JLabel ou o JButton. A única coisa não trivial é o gesto de arrastar uma peça de uma casa para outra.

Na minha Universidade no 3º período sempre pedem pra fazer um jogo em swing, sai muitos jogos legais, use labels com imagens e voce vai setando seus locais, sai muito jogo de nave, de labirinto, de carro. São os mais fáceis de se fazer!

Ah, se eu puder usar imagens nos labels e definir algum container como casas por exemplo no layout da pra fazer.

Não sabia que podia usar imagem em label, e ainda não esta claro, mas vou continuar pesquisando e tentar achar alguma coisa pra ter uma ideia do que exatamente estão pedindo.

obrigado.

Olha, a forma mais básica creio que seja usando Java 2D.

Basta você colocar um JPanel simples que ocupe toda a sua janela e sobrescrever o método paintComponent(), que recebe um objeto do tipo Graphics.
Dá uma olhada no código abaixo:

[code]// Classe que representa um objeto qualquer a ser pintado na tela
public class Personagem {
public void paint(Graphics g) {
// Lógica para desenhar seu personagem
}
}

// “Canvas” do jogo
public class GamePanel extends JPanel {
protected void paintComponent(Graphics g) {
Personagem p = new Personagem();
// Passe o objeto Graphics para o objeto a ser desenhado na tela
p.paint(g);
}
}[/code]

Ahhh… Esqueci de falar: quando você sobrescrever o método paintComponent(), a primeira linha do seu método deve ser uma chamada ao método implementado na superclasse.

protected void paintComponent(Graphics g) { // Não esquecer: super.paintComponent(g); }

tnaires, o paintComponent é um metodo do java2d né?
eu concordo com você, apesar de nenhuma experiencia fazendo, do que eu ja vi sobre java2d me parece que seria mais facil assim…
mas não podemos usar. tem que ser só com os componentes swing mesmo…

No fim das contas eu vou fazer um jogo de dama usando as casas do tabuleiro com jButtons, e as imagens vão mudando de lugar nos clicks do mouse…
Vou começar no fim de semana.

o mais facil é o jogo da velha.
crie 9 botoes representando as casas, e a cada vez que voce clicar em um botao voce poe X ou O dependendo do que foi posto por ultimo.
Aí a cada jogada é so voce verificar se fechou a reta e mostrar se foi X ou O quem ganhou.

[quote=vtr88]tnaires, o paintComponent é um metodo do java2d né?
eu concordo com você, apesar de nenhuma experiencia fazendo, do que eu ja vi sobre java2d me parece que seria mais facil assim…
mas não podemos usar. tem que ser só com os componentes swing mesmo…

No fim das contas eu vou fazer um jogo de dama usando as casas do tabuleiro com jButtons, e as imagens vão mudando de lugar nos clicks do mouse…
Vou começar no fim de semana.[/quote]
Não, o paintComponent() é um método da classe JPanel, que pertence ao Swing. O que tem de Java 2D aí é o objeto Graphics.

Agora, se você só puder usar componentes Swing já prontos, aí tudo bem. Você poderia inclusive criar seus próprios componentes. Algumas idéias:

  • crie uma classe JBoard que herde de JComponent e renderize a imagem do tabuleiro;
  • crie uma classe JPiece que herde de JButton e renderize a imagem da peça;
  • e assim sucessivamente.

O jogo da velha parece muito mais simples mesmo, vou levar em consideração…

e tnaires muito obrigado,

unica duvida que ficou é: não seria melhor herdar o ‘board’ do jogo de um jpanel ?
herdando de jcomponent que vantagens eu teria ?

[quote=vtr88]O jogo da velha parece muito mais simples mesmo, vou levar em consideração…

e tnaires muito obrigado,

unica duvida que ficou é: não seria melhor herdar o ‘board’ do jogo de um jpanel ?
herdando de jcomponent que vantagens eu teria ?[/quote]
Sim, sim, tem razão.