/*
设计龟兔赛跑游戏,赛程为10步,每经过一秒,乌龟会前进一步,兔子则可能前进两步或者睡觉。
*/
public class TortoiseAndHare //龟兔赛跑
{
public static void main(String[] args)
{
Tortoise tortoise=new Tortoise(10); //乌龟赛程为10步
Hare hare=new Hare(10); //兔子赛程为10步
Thread tortoiseThread=new Thread(tortoise); //乌龟线程开启
Thread hareThread=new Thread(hare);//兔子线程开启
tortoiseThread.start();//各就各位,预备开始。。。。
hareThread.start(); //各就各位,预备开始。。。。
}
}
class Tortoise implements Runnable //定义龟类
{
private int totalStep; //总步数
private int step; //一步
public Tortoise(int totalStep) //构造函数
{
this.totalStep=totalStep;
}
public void run(){ //定义龟类 跑步方法
try
{
while (step<totalStep) //当赛程未完时
{
Thread.sleep(1000); //1000是一秒 ,休息一秒
step++; //再跑一步
System.out.println("乌龟跑了"+step+"步....."); //打印当前结果
}
}
catch (InterruptedException e) //抛异常
{
throw new RuntimeException(e);
}
if (step==totalStep)
{
System.out.println("乌龟已经跑完了比赛路程!");
}
}
}
class Hare implements Runnable //定义兔子类
{
private boolean[] flags={true,false};//设置标志,兔子是否停下休息
private int totalStep; //总步数
private int step; //一步
public Hare(int totalStep) //兔子的构造函数
{
this.totalStep=totalStep;
}
public void run(){ //定义兔子类 跑步方法
try
{
while (step<totalStep) //当赛程未完时
{
Thread.sleep(1000); //1000是一秒 ,休息一秒
boolean isHareSleep=flags[(int)(Math.random()*10)%2];//随机判定兔子是否要休息
if (isHareSleep)//兔子要睡觉
{
System.out.println("兔子睡着了 zzzzzzzz");
}else{
step=step+2; //再跑两步
System.out.println("兔子跑了"+step+"步....."); //打印当前结果
}
}
}
catch (InterruptedException e) //抛异常
{
throw new RuntimeException(e);
}
if (step==totalStep)
{
System.out.println("兔子跑完了比赛路程!");
}
}
}
/* 程序运行的结果之一
乌龟跑了1步.....
兔子跑了2步.....
乌龟跑了2步.....
兔子睡着了 zzzzzzzz
乌龟跑了3步.....
兔子跑了4步.....
乌龟跑了4步.....
兔子跑了6步.....
乌龟跑了5步.....
兔子睡着了 zzzzzzzz
乌龟跑了6步.....
兔子跑了8步.....
乌龟跑了7步.....
兔子跑了10步.....
兔子跑完了比赛路程!
乌龟跑了8步.....
乌龟跑了9步.....
乌龟跑了10步.....
乌龟已经跑完了比赛路程!
*/ |