使用继承Thread的方式来实现龟兔赛跑游戏
我们首先来看一下需求:
开始编写代码:
首先我们创建一个动物抽象类Animal ,在Animal中定义一个runing的抽象方法
注意:这里面有一个回调方法,定义它的目的就是当任意一方跑完200m后,调用回调方法,表示比赛结束,另一方停止跑步
接下来我们创建Rabbit类,继承一下Animal,调用里面的跑步方法
package com.ywt.mybatisplus.game;
/**
* @author pc
*/
public class Rabbit extends Animal {
@Override
public void runing() {
//兔子的速度
int speed = 5;
//总里程减去兔子每秒速度
length -= speed;
System.out.println("兔子跑了" + speed + "米,距离终点还有:" + length + "米");
//如果兔子跑完
if (length <= 0) {
//总里程清空
length = 0;
System.out.println("兔子胜利!");
if (calltoback != null) {
//调用回调方法,结束比赛
calltoback.win();
}
}
//兔子没跑完
try {
//兔子每跑20米,休息1s
if ((200 - length) % 20 == 0) {
sleep(1000);
}else {
sleep(100);
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
然后创建一个乌龟的类Turtle
然后我们创建比赛结束类 Stop,需要实现Animal中我们定义的接口,然后谁跑完,谁调用win方法,(这里为了方便使用了stop()方法,建议在项目中不要使用stop)
stop()方法:该方法是直接中断进程,就好比直接拔掉电脑电源。
推荐使用:interrupt()
然后我们创建MainClass类来开始比赛。
回调方法: 例如乌龟胜利,乌龟调用的win()方法,将乌龟的比赛结果赋值给兔子,兔子就停止跑步了
运行,查看结果:
可以看到,兔子还剩25米没有跑完,但是乌龟结束比赛了,兔子也就停止跑步了