Conteúdo do item:
Segue uma dica para desenhar e animar uma letra na tela
Resolvi fazer um vídeo para judar na criação do seu desafio
Como gerar um projeto Java do Zero?
https://www.byiorio.com.br/product/1/item/8
Seguem os códigos vistos :
Classe App.java
package br.com.byiorio.dicas;
import javax.swing.JFrame;
import javax.swing.WindowConstants;
import java.awt.*;
/**
* Hello world!
*
*/
public class App
{
public static void main( String[] args )
{
JFrame frame = new JFrame("Matrix - www.byiorio.com.br");
frame.add(new Chuva());
frame.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
frame.setSize(Toolkit.getDefaultToolkit().getScreenSize());
frame.setResizable(false);
frame.setLocationRelativeTo(null);
frame.setVisible(true);
}
}
Classe Chuva.java
package br.com.byiorio.dicas;
import java.awt.*;
import javax.swing.JPanel;
public class Chuva extends JPanel {
int contador = 100;
@Override
public void paint(Graphics g) {
super.paint(g);
// Adiciona um quadrado com a cor preta para ficar de fundo
Integer larguraTela = (int) Toolkit.getDefaultToolkit().getScreenSize().getWidth();
Integer alturaTela = (int) Toolkit.getDefaultToolkit().getScreenSize().getHeight();
g.setColor(Color.BLACK);
g.fillRect(0, 0, larguraTela, alturaTela);
Graphics2D g2 = (Graphics2D) g;
Font font = new Font("Monospaced", Font.PLAIN, 16);
g2.setFont(font);
g2.setColor(new Color(255, 255, 255));
char[] letra = { 'a' };
g2.drawChars(letra, 0, 1, 100, contador);
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
repaint();
contador++;
if (contador > alturaTela) {
contador = 100;
}
}
}
Classe de Utilidades que criei
package br.com.matrix;
import java.util.Random;
/**
* @author Lucas iorio (www.byiorio.com.br)
*
* Utilidades
*/
public class Utilidade {
public static final int TAMANHO_FONTE = 16;
private static Random randomico = new Random();
private Utilidade() {
}
public static char[] getLetraRandomica() {
int[] letrasExistentes = { 97, 98, 99, 100, 101, 102, 103, 104, 105, 106, 107, 108, 109, 110, 111, 112, 113,
114, 115, 116, 117, 118, 119, 120, 121, 122, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 36, 43, 45, 42, 47,
61, 37, 34, 39, 35, 38, 40 };
// Escolhe um indice do array aleatorio
int indiceAleatorioLetra = getNumeroRandomico(letrasExistentes.length);
// cria um array para o componente que desenha a letra
char[] definirLetra = new char[1];
// Pega a letra atraves do indice aleatorio escilho
definirLetra[0] = (char) letrasExistentes[indiceAleatorioLetra];
return definirLetra;
}
public static int getNumeroRandomico(int max) {
return randomico.nextInt(max);
}
public static int getNumeroRandomico(int min, int max) {
return randomico.nextInt(max - min + 1) + min;
}
public static int getNumeroRandomicoMultiplo(int maximo, int multiplo) {
int valor = randomico.nextInt(maximo / multiplo) * multiplo;
return valor == 0 ? 1 : valor;
}
public static int getAlturaFonte() {
return TAMANHO_FONTE; // -2 // caso queira mudar o espacamento
}
public static int getLarguraFonte() {
return TAMANHO_FONTE;// -3 // caso queira mudar o espacamento
}
/**
* Pega uma velocidade dentro dos multiplos do tamanho da fonte
*
* @return
*/
public static int getVelocidadeRandomica() {
int[] multiplos = { 2, 4, 8, 16 };
int multiploEscolhido = randomico.nextInt(multiplos.length);
return multiplos[multiploEscolhido];
}
}
font;color;imagem;matrix;desenhar;tela;