Boa tarde pessoal!
Estou tentando criar um jogo onde as letras apareçam aleatoriamente na tela e o usuário tem que digitar no teclado para as letras irem sumindo e pontuar.
O problema: Não estou conseguindo fazer as letras desaparecerem. Estou usando um array de String, mas queria utilizar os decimais do 65 ao 90 da tabela ASCII para exibir as letras na tela convertida em String. E após isso, fazer as condições para que as letras sumam assim que foram digitadas no teclado usando KeyEvent.
Posta o código que você já fez.
Eu estou usando uma jFrame, mas esse que vou postar está no projeto chamado “Quadro”.
public class Letras {
private Color cor;
String[] letras = {"A", "B", "C", "D", "E", "F",
"G", "H", "I", "J", "K", "L", "M", "N", "O", "P",
"Q", "R", "S", "T", "Y", "U", "V", "X", "W", "Z"};
String letraSelecionada;
public void sortear() {
letraSelecionada = letras[new Random().nextInt(letras.length)];
}
public void desenhar(Graphics g, Color c, int a, int l) {
cor = c;
g.setColor(cor);
g.setFont(new Font("serif", Font.BOLD, 50));
g.drawString(letraSelecionada, a, l);
}
}
Agora o Projeto Quadro, onde no final, uso o KeyEvent.
public class Quadro extends javax.swing.JPanel implements Runnable {
private Thread thread;
private Letras letra;
private int y;
private int x;
private int DescidaY;
public String letraSelecionada;
/**
* Creates new form Quadro
*/
public Quadro() {
initComponents();
letra = new Letras();
letra.sortear();
y = 2;
x = 200;
DescidaY = 10;
thread = new Thread(this);
thread.start();
}
@Override
public void run() {
while (true) {
if (y > this.getHeight()) {
y = 0;
x = (int) (Math.random() * (getSize().width) - 50);
}
y += DescidaY;
try {
Thread.sleep(50);
} catch (InterruptedException e) {
}
repaint();
}
}
@Override
public void paint(Graphics g) {
super.paint(g);
letra.desenhar(g, Color.red, x, y);
}
private void formKeyPressed(java.awt.event.KeyEvent evt) {
// TODO add your handling code here:
switch (evt.getKeyCode()) {
case KeyEvent.VK_G:
letra.sortear();
break;
}
repaint();
}