**程序缺陷:闪的太严重原因不明白,请教各位大虾,帮忙看看,谢谢!!!!!
/**编写程序要求三个动物赛跑,步调和频率都不相同。*/
import java.applet.Applet;
import java.awt.*;
public class saipao extends Applet implements Runnable
{
Image im1,im2,im3;
Thread thread1,thread2,thread3;//线程的定义
int y1=10,y2=10,y3=10;//起始位置。
int z1=(500+(int)(100*(Math.random()))),//1图频率定义范围。
z2=(400+(int)(100*(Math.random()))),//2图频率定义范围。
z3=(300+(int)(100*(Math.random())));//3图频率定义范围。
int x1=(17+(int)(100*(Math.random()))),//1图步调变化范围。
x2=(15+(int)(100*(Math.random()))),//2图步调变化范围。
x3=(20+(int)(100*(Math.random())));//3图步调变化范围。
public void init()
{
im1=getImage(getDocumentBase(),"tupian1.gif");
im2=getImage(getDocumentBase(),"tupian2.gif");
im3=getImage(getDocumentBase(),"tupian3.gif");
}
public void start()
{
thread1=new Thread(this,"FirstThread");
thread2=new Thread(this,"SecondThread");
thread3=new Thread(this,"ThirdThread");
thread1.start();
thread2.start();
thread3.start();
}
public void paint(Graphics g)
{
g.drawImage(im1,y1,30,this);
g.drawImage(im2,y2,120,this);
g.drawImage(im3,y3,210,this);
g.drawLine(80,10,80,260);
g.drawLine(790,10,790,260);
}
public void run()
{
String name;
name=Thread.currentThread().getName();
while(true)
{
if(name.equals("FirstThread"))
{
y1=y1+x1;
if(y1>=750)
{
break;
}
}
else if(name.equals("SecondThread"))
{
y2=y2+x2;
if(y2>=750)
{
break;
}
}
else if(name.equals("ThirdThread"))
{
y3=y3+x3;
if(y3>=750)
{
break;
}
}//步调的不同变化范围
try
{
if(name.equals("FirstThread"))
{
Thread.sleep(z1);
}
else if(name.equals("SecondThread"))
{
Thread.sleep(z2);
}
else if(name.equals("ThirdThread"))
{
Thread.sleep(z3);
}
} //频率的不同变化范围
catch(InterruptedException e)
{
System.out.println("发生错误!");
}
}
}
}/
/**编写程序要求三个动物赛跑,步调和频率都不相同。*/
import java.applet.Applet;
import java.awt.*;
public class saipao extends Applet implements Runnable
{
Image im1,im2,im3;
Thread thread1,thread2,thread3;//线程的定义
int y1=10,y2=10,y3=10;//起始位置。
int z1=(500+(int)(100*(Math.random()))),//1图频率定义范围。
z2=(400+(int)(100*(Math.random()))),//2图频率定义范围。
z3=(300+(int)(100*(Math.random())));//3图频率定义范围。
int x1=(17+(int)(100*(Math.random()))),//1图步调变化范围。
x2=(15+(int)(100*(Math.random()))),//2图步调变化范围。
x3=(20+(int)(100*(Math.random())));//3图步调变化范围。
public void init()
{
im1=getImage(getDocumentBase(),"tupian1.gif");
im2=getImage(getDocumentBase(),"tupian2.gif");
im3=getImage(getDocumentBase(),"tupian3.gif");
}
public void start()
{
thread1=new Thread(this,"FirstThread");
thread2=new Thread(this,"SecondThread");
thread3=new Thread(this,"ThirdThread");
thread1.start();
thread2.start();
thread3.start();
}
public void paint(Graphics g)
{
g.drawImage(im1,y1,30,this);
g.drawImage(im2,y2,120,this);
g.drawImage(im3,y3,210,this);
g.drawLine(80,10,80,260);
g.drawLine(790,10,790,260);
}
public void run()
{
String name;
name=Thread.currentThread().getName();
while(true)
{
if(name.equals("FirstThread"))
{
y1=y1+x1;
if(y1>=750)
{
break;
}
}
else if(name.equals("SecondThread"))
{
y2=y2+x2;
if(y2>=750)
{
break;
}
}
else if(name.equals("ThirdThread"))
{
y3=y3+x3;
if(y3>=750)
{
break;
}
}//步调的不同变化范围
try
{
if(name.equals("FirstThread"))
{
Thread.sleep(z1);
}
else if(name.equals("SecondThread"))
{
Thread.sleep(z2);
}
else if(name.equals("ThirdThread"))
{
Thread.sleep(z3);
}
} //频率的不同变化范围
catch(InterruptedException e)
{
System.out.println("发生错误!");
}
}
}
}/
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货