// TODO Auto-generated method stub
int a = 0, b = 0
int second = 0
do {
int number = new Random().nextInt(10) + 1// 产生1-10随机数
// 如果随机数小于等于8,则表示80%的概率
if (number <= 8) {
a = a + 2
}
// 如果随机数小于等于5,则表示50%的概率
if (number <= 5) {
b = b + 4
}
second++
System.out.println("第" + second + "秒:乌龟跑了" + a + ",兔子跑了" + b)
} while (a < 100 && b < 100)
}
不懂地方可以追问。
public class Competition {private volatile static boolean gameOver = false//用来标记是否有人到达终点,到达终点后游戏结束
//乌龟的实现方式
static class Tortoise implements Runnable{
private volatile int total = 0//用来记录当前已经前行了多少距离
@Override
public void run() {
while(!gameOver){
int step = (int)(Math.random()*5+1)//产生1-5的随机数
total += step
try {
Thread.sleep(200)
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
}
}
public int getTotal(){
return total
}
}
//兔子的实现方式
static class Rabbit implements Runnable{
private volatile int total = 0
@Override
public void run() {
while(!gameOver){
int step = (int)(Math.random()*5+1)
total += step
try {
Thread.sleep(200)
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
}
}
public int getTotal(){
return total
}
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
final Tortoise tortoise = new Tortoise()
final Rabbit rabbit = new Rabbit()
new Thread(tortoise).start()
new Thread(rabbit).start()
//下面多起了一个线程,相当于比赛的时候的裁判员,他每隔一段时间就看一下是否有人到达终点,若有人到达则宣判该人获胜,游戏结束
new Thread(new Runnable(){
@Override
public void run() {
// TODO Auto-generated method stub
while(!gameOver){
int torLen = tortoise.getTotal()//获得乌龟前行的距离
int rabLen = rabbit.getTotal()//获得兔子前行的距离
System.out.println("乌龟:"+torLen+",兔子"+rabLen)
if(torLen >= 100 && rabLen <100){
System.out.println("乌龟获胜!!!")
gameOver = true
}else if(rabLen >= 100 && torLen <100){
System.out.println("兔子获胜!!!")
gameOver = true
}else if(rabLen >=100 && torLen >= 100){//这里有可能两人同时到达终点
System.out.println("同时到达终点!!!")
gameOver = true
}
try {
Thread.sleep(210)
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace()
}
}
}
}).start()
}