Movimento de uma imagem

5 respostas
dm_thiago

Olá pessoal,

Eu tenho que desenvolver um jogo, mas não tenho nem idéia de como simular o movimento. Meu personagem deveria ser movido pelo teclado, mas como eu faço para ele se mover?

Eu tentei fazer da seguinte forma: criei um ImageIcon, depois um JLabel e adicionei a imagem no JLabel pelo método setIcon. Adicionei um KelListner a esse JLabel e no método eu coloquei para quando se colocasse para o lado, o Insets desse Label (estou usando GridBagLayout) mudaria. Não funcionou. E isso também está parecendo uma guambiarra. Alguem sabe qual seria o jeito correto de simular o movimento de uma imagem na tela? Ou teria algum exemplo da onde eu pudesse tirar uma idéia?

Agradeço desde já.

5 Respostas

ViniGodoy

Olá.

Você deve usar uma thread para desenhar continuamente o seu label. Essa será a main thread do jogo.

Na verdade, ao invés de usar label, você sobrescreve o método paintComponent do painel principal do seu jogo e pinta tudo (imagens, fundo, etc) diretamente, sem usar os componentes do Swing.

A primeira dica que te dou é ler o livro Killer Game Programming in Java, que está completo no site do autor. Lá essa sua dúvida será resolvida.

A thread que desenha continuamente o jogo é chamada de MainLoop. Existem duas principais técnicas para implementar o main loop. A primeira é manter a taxa de frames por segundo e updates por segundo no máximo possível. E isso pode variar a cada iteração do loop. Ou seja, para desenhar as coisas corretamente, você deverá saber quanto tempo transcorreu entre uma execução do loop e a outra.

A segunda técnica, que descrevo nesse artigo é baseada na implementação do Killer. Consiste em deixar a taxa de updates por segundo constante, enquanto a taxa de frames por segundo fica maximizada. Assim, não é necessário saber quanto tempo transcorreu entre uma iteração e outra. Embora o algoritmo do loop em si seja um pouco mais complexo, o jogo todo fica mais simples.

A uns tempos atrás deixei aqui no GUJ um jogo que eu fiz, simples, com os códigos fontes e tudo mais. O jogo está cheio de comentários e já contém uma framework simples que implementei que te auxilia a mexer com recursos de som e imagem. O jogo chama-se Vikanoid e é uma implementação de um jogo muito conhecido, chamado Arkanoid.

dm_thiago

Nossaaaaaaaaaaaaa! Que ajuda, hein, cara! Poxa, nunca tinha visto uma resposta tão completa. Valeu mesmo! Brigadão!

Vo da uma estudada nesse material que você passou e depois provavelmente volto a postar as duvidas que apareceram. Valeu de novo!

ViniGodoy

E olha só, quase me esqueço!

Existe esse ótimo tutorial do Coke and Code, com um código do Space Invaders. Achei ele bem legalzinho e serve de introdução enquanto o site do Killer não está lá 100%. :wink:

dm_thiago

\o/

Se eu te achar no orkut, te adiciono e viro teu fã!

Valeu de novo!

[]´s

Ironlynx

Se eu te achar no orkut, te adiciono e viro teu fã!

Dica: existe uma comunidade do GUJ lá. :smiley:

Eu já tinha feito(e usado como modelo) um PacMan, mas bacaninha esse Space Invaders!!!

Criado 5 de abril de 2007
Ultima resposta 5 de abr. de 2007
Respostas 5
Participantes 3