效果图
MyWindows.java
import java.awt.*;
import java.awt.event.*;
public class MyWindows{
public static void main(String args[]){
Frame f = new Frame();
f.addWindowListener(new WindowAdapter(){
public void windowClosing(WindowEvent e){
System.exit(0);
}
});
f.setSize(500,500);
f.setBackground(Color.BLACK);
f.setLocationRelativeTo(null);
TypeLetters tl = new TypeLetters();
f.add(tl);
Thread t = new Thread(tl);
t.start();
f.addKeyListener(tl);
tl.addKeyListener(tl);
f.setVisible(true);
}
}
TypeLetters.java
import java.awt.*;
import java.awt.event.*;
class TypeLetters extends Panel implements Runnable,KeyListener{
int x[] = new int[10];
int y[] = new int[10];
char c[] = new char[10];
int score = 0;
public TypeLetters(){
for(int i=0;i<10;i++){
x[i] = (int)(Math.random()*500);
y[i] = (int)(Math.random()*500);
c[i] = (char)(Math.random()*26+97);
}
}
public void paint(Graphics g){
g.setColor(Color.WHITE);
Font font = new Font("Arial", Font.BOLD, 18);
g.setFont(font);
for(int i=0;i<10;i++){
g.drawString(new Character(c[i]).toString(),x[i],y[i]);
}
g.setColor(Color.RED);
g.setFont(new Font("黑体", Font.BOLD, 20));
g.drawString("您的成绩::"+score,5,15);
}
public void run(){
while(true){
for(int i=0;i<10;i++){
y[i]++;
if(y[i]>500){
y[i] = 0;
x[i] = (int)(Math.random()*500);
c[i] = (char)(Math.random()*26+97);
score-=10;
}
}
try{
Thread.sleep(30);
}catch(Exception e){}
repaint();
}
}
public void keyTyped(KeyEvent e){}
public void keyPressed(KeyEvent e){
int maxy = -1;
int index = -1;
for(int i=0;i<10;i++){
if(c[i] == e.getKeyChar()){
if(y[i]>maxy){
maxy = y[i];
index = i;
}
}
}
if(index!=-1){
x[index] = (int)(Math.random()*500);
y[index] = 0;
c[index] = (char)(Math.random()*26+97);
score+=10;
}else{
score-=10;
}
}
public void keyReleased(KeyEvent e){}
}