import java.awt.Color;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.util.Random;
import javax.swing.JFrame;
/**
* Site: http://programjm.blogspot.com.br/
* @author João Matheus Santos Assis
* @version 1.00 2013-06-29
*/
@SuppressWarnings("serial")
public class Fantasma extends JFrame {
// Diretório onde a imagem encontrasse.
String imagem = "C:\\Users\\Cliente\\Desktop\\fantasma.JPG";
// Carregando a imagem.
Image image = Toolkit.getDefaultToolkit().getImage(imagem);
Random numberRandon = new Random();
// Atributos dos fantasmas.
private int moverX = 40;
private int moverY = 40;
private int transparenciaDaImagem;
private int larguraDaImagem;
private int alturaDaImagem;
/**
* É aqui que é repintada a tela depois que o sleep
* acaba seu repouso de 0,5 segundos.
*/
public void desenharGraficos() {
Graphics g = getGraphics();
Graphics2D g2d = (Graphics2D) g.create();
g2d.setColor(Color.WHITE);
g2d.fillRect(0, 0, getWidth(), getHeight());
AlphaComposite alpha =
AlphaComposite.getInstance(
AlphaComposite.SRC_OVER,
(float) transparenciaDaImagem / 100
);
g2d.setComposite(alpha);
g2d.drawImage(
image,
moverX,
moverY,
larguraDaImagem,
alturaDaImagem,
this
);
g2d.dispose();
}
/**
* A transparência do fantasma será definida neste método.
* O máximo valor que transparenciaDaImagem poderá atingir
* é 90 e o mínimo 10.
*/
public void transparencia() {
transparenciaDaImagem = 10 + numberRandon.nextInt(80);
}
/**
* Aqui é definido a largura e a altura da imagem,
* que é gerada aleatoriamente para deixar a aplicação
* mas dinâmica e "imprevisível".
*/
public void tamanho() {
larguraDaImagem = 200 + numberRandon.nextInt(160);
alturaDaImagem = 101 + numberRandon.nextInt(71);
}
/**
* Se a variável moverX for menor do que a largura
* da janela subtraido por 120, esta será acrescida
* de 10, caso o contrário é atribuido a ela o valor 40.
*
* Se a variável moverY for menor do que a altura
* da janela subtraido por 120, esta será acrescida
* de 10, caso o contrário é atribuido a ela o valor 40.
*/
public void mover(){
moverX = (moverX < getWidth() - 120) ? moverX += 10 : 40;
moverY = (moverY < getHeight() - 120) ? moverY += 10 : 40;
}
/** Aqui chamamos o método mover, tamanho e transparência.*/
public void atualizar() {
mover();
tamanho();
transparencia();
}
/**
* Propriedades da Janela, ou seja,
* o título, o que acontecerá quando for solicitado
* o fechamento do JFrame, o tamanho, se ele
* poderá ser maximizada ou não, a localização
* inicial, o layout e a visibilidade da janela.
*/
public void inicializar() {
setTitle("Fantasma!");
setDefaultCloseOperation(EXIT_ON_CLOSE);
setSize(700, 700);
setResizable(false);
setLocationRelativeTo(null);
setLayout(null);
setVisible(true);
}
/**
* Método gerenciador da execução da aplicação.
*/
public void run() {
inicializar();
while (true) {
atualizar();
desenharGraficos();
/*
* De 0,5 segundos(500 milissegundos) em
* 0,5 segundos a janela é atualizada.
*/
try {
Thread.sleep(500);
} catch (Exception e) {
System.out.println("Thread Interrompida!");
}
}
}
/**
* Método Principal da aplicação.
*/
public static void main(String[] args) {
Fantasma janela = new Fantasma();
janela.run();
}
}
Palavras-Chaves: Animação, Java 2D, Mover Imagem na tela, Transparência da Imagem, Randomização, Largura, Altura, Atualizar, Inicializar, Métodos, Segundos, Milissegundos, Thread, Laço Infinito, Gerenciador, Execução, Diretório, Aplicação, Propriedades da Janela, Fantasma, Java.
Nota.: Para que este programa execute perfeitamente é necessário ter uma imagem no diretório indicado no Código-Fonte. Baixe uma imagem de um fantasma (recomendamos) ou algo que desejar. O diretório também pode ser perfeitamente alterado para atender as necessidades do programador e/ou usuário.
Artigos relacionados em Java:
- Desenhando Espiral Quadrático em Java
- Desenhando Circulos côncentricos no meio da tela em Java
- Reproduzindo a palheta RGB em Java
- Criando um JFrame em Java
- Desenhando linhas a partir do canto superior esquerdo em Java
- Eventos com JButton (mudando a cor do JPanel) em Java
- Jogo da Forca em Java
- Calculadora Completa em Java
- Desenhando figuras com o mouse em Java
Feito no NetBeans-7.1 | Executável |
Outra Sugestão!
Feito no NetBeans-7.1 | Executável |