求解多线程难题

来源:百度知道 编辑:UC知道 时间:2024/06/10 19:15:58
1、做一个动画界面完成警察抓小偷的过程,要求如下
A、小偷以1m/s速度绕直径为100米圆圈转圈,(速度m/s,每秒钟动作一下,sleep(1000))
B、警察以1m/s速度在圆圈内以小偷所在位置为目标前进。(管道流)
C、圆圈的0—90度区域为集市,当小偷进入集市区域,警察加速2m/s向小偷赶去。
D、圆圈的180—270度区域为警察休息场所,如果小偷不在集市,警察进入该区域就进入休息(wait),如果小偷在集市,警察不休息。休息时,如果小偷进入集市(notify)
E、警察和小偷距离3米,即算捉住。警察和小偷的起始位置随即产生。
F、可能需要使用浮点数计算
G、以上各数据未经验证,在实际运行时可能会出现“抓不到”或“一抓就到”的情况,如遇到该类现象,请适当调整参数,以其达到“费点力气才能抓到”的效果。

本人新手,那位高人能教我,在下感激不尽!!!!!

首先自己去找弧长与角度的变换公式,初中课本里有,呵呵
会得到浮点数。

接下来
Step1. 设变量:
runing 是否退出程序
ag1=0 :小偷的当前角度
ag2=0 : 警员的当前角度
speed1=1: 小偷的当前速度
speed2=1: 警员当前速度

step2:
新建线程一: 小偷线程:
new Thread (
new Runnable(){
public void run() {
while(runing){
//1.根据ag1所处的区域改变speed1的速度
//2.对小偷的当前角度ag1做线程同步处理
//3.根据当前speed1改变当前ag1的角度
//4.取消小偷角度的同步处理
try{Thread.sleep(1000);}//睡一秒
catch(Exception){}
}
}
}
).start();

新建线程二: 警员线程:
new Thread (
new Runnable(){
public void run() {
while(runing){
//1.根据ag2所处的区域改变speed2的速度
// speed2有可能是0,1,2根据ag2判断