//我没事做的一个打字游戏.呵呵,自己玩的.
//程序用来随机抽取5个英文字母显示在屏幕上,并让它们从上到下运动,
//然后让用户按键,看是否与屏幕显示的其中一个字符串相同,如果相同,就改变那个字符串的值,并显示.
import java.awt.*;
import java.awt.event.*;
import java.applet.*;
import javax.swing.*;
public class MangDa extends Applet implements Runnable,KeyListener
{
static Thread myThread;
static JFrame md;
String Zi26="";
String sz[]=new String[5];
int x[]=new int[5];
int y[]=new int[5];
public static void main(String args[])
{
md=new JFrame("盲打训练室");
MangDa m=new MangDa();
md.addKeyListener(m);
md.addWindowListener(new ko());
md.getContentPane().add(m);
m.zifuc();
m.cushi();
myThread=new Thread(m);
myThread.start();
md.setSize(800,600);
md.setVisible(true);
}
public void zifuc() //用来生成一个包含26个英文字母的字符串Zi26
{
for (int i=0;i<26;i++)
{
Zi26+=(char)((int)'a'+i);
}
}
public void cushi() //用来初始sz[],x[],y[]的值.
{
for (int i=0;i<5;i++)
{
int zc=(int)(Math.random()*26);
sz[i]=Zi26.substring(zc,zc+1);
x[i]=(int)(md.getWidth()*Math.random());
y[i]=0;
}
}
public void panduan() //用来判断sz[i]的y值是否要到达屏幕下边,如果是就把Y值变为0,并让所有的Y[I]值加1.
{
for (int i=0;i<5;i++)
{
if (y[i]>md.getHeight()-10)
y[i]=0;
y[i]++;
}
}
public void paint(Graphics g) //根据随机生成的SZ[I], 在屏幕X[I],Y[I]处显示字符串.
{
g.setColor(Color.black);
for (int i=0;i<sz.length;i++)
{
g.drawString(sz[i],x[i],y[i]);
}
}
public void run() //用线程循环更改Y值,并且在屏幕上重画SZ[I];
{
while(true)
{
panduan();
repaint();
try{
myThread.sleep(100);
}catch(Exception e) {}
}
}
public void keyPressed(KeyEvent k) //判断用户按键是否包含在屏幕上显示的5个字符串中,如果是就用chuli()方法解决.
{
String c=""+k.getKeyChar();
for (int i=0;i<sz.length;i++)
{
if (sz[i].equals(c))
{
chuli(i);
break;
}
}
}
public void keyReleased(KeyEvent k){}
public void keyTyped(KeyEvent k){}
public void chuli(int j) //当用户按键包含在屏幕上显示的5个字符串中(就是包含在sz[5]中),更改用户按键与数组中相同的那个数组的值.
{
da: while(true){ //使用循环是为了解决随机生成的字符包含在原来的SZ[5]中.
int zc=(int)(Math.random()*26);
String x=Zi26.substring(zc,zc+1);
for(int i=0;i<5;i++){
if (sz[j].equals(x)){
break;
}else if (i==4){
sz[j]=x;y[j]=0;x[j]=(int)(md.getWidth()*Math.random());//这里提示x[j]语句出错.
break da;
}else{
continue;
}
}
}
}
}
编译出错提示"
D:\JAVA\Frame>javac MangDa.java
MangDa.java:106: 需要数组,但找到 java.lang.String
sz[j]=x;y[j]=0;x[j]=(int)(md.getWidth()*Math.random());
^
1 错误
----------------解决方案--------------------------------------------------------