📄 lift.java
字号:
if(id == l){
if(t==1){
downTasks.remove(i);
}
if(t==2){
temp.setTyep(0);
}
return true;
}
}
for(int i=0;i<outdown.size();i++){
Task temp = (Task)outdown.get(i);
int t = temp.getType();
int l = temp.getTask();
if( id == l){
if(t==1){
outdown.remove(i);
}
if(t==2){
temp.setTyep(0);
}
return true;
}
}
return false;
}
return false;
}
public void insertTask(int id,int dir){
if(estate == 0 ){
if(id>floorID){
int up=-1;
for(int i=0;i<upTasks.size();i++){
int tt=((Task)upTasks.get(i)).getTask();
int ty=((Task)upTasks.get(i)).getType();
if(tt == id && ty!=0 )return;
if(tt == id && ty==0 ){
Task t=new Task(tt,2);
upTasks.set(i,t);
return;
}
if(tt>id){up=i;break;}
}
if(up!=-1){
Task t=new Task(id,1);
upTasks.add(up,t);
return;
}
else{
Task t=new Task(id,1);
upTasks.addLast(t);
return;
}
}
if(id<floorID){
int up=-1;
for(int i=0;i<downTasks.size();i++){
int tt=((Task)downTasks.get(i)).getTask();
int ty=((Task)downTasks.get(i)).getType();
if(tt == id && ty!=0 )return;
if(tt == id && ty==0 ){
Task t=new Task(tt,2);
downTasks.set(i,t);
return;
}
if(tt<id){up=i;break;}
}
if(up!=-1){
Task t=new Task(id,1);
downTasks.add(up,t);
return;
}
else{
Task t=new Task(id,1);
downTasks.addLast(t);
return;
}
}
}
else{
boolean isup=true;
if(run==upTasks){
isup=true;
}
if(run==downTasks)
{
isup=false;
}
if(estate == dir){
if(estate == 2 && id>floorID){
int up= -1;
for(int i=0; i<upTasks.size(); i++){
int tt=((Task)upTasks.get(i)).getTask();
int ty=((Task)upTasks.get(i)).getType();
if(tt == id && ty!=0 )return;
if(tt == id && ty==0 ){
Task t=new Task(tt,2);
upTasks.set(i,t);
return;
}
if(tt>id){up=i;break;}
}
if(up!=-1){
Task t=new Task(id,1);
upTasks.add(up,t);
return;
}
else{
Task t=new Task(id,1);
upTasks.addLast(t);
return;
}
}
if(estate ==1 && id<floorID){
int up= -1;
for(int i=0; i<downTasks.size(); i++){
int tt=((Task)downTasks.get(i)).getTask();
int ty=((Task)downTasks.get(i)).getType();
if(tt == id && ty!=0 )return;
if(tt == id && ty==0 ){
Task t=new Task(tt,2);
downTasks.set(i,t);
return;
}
if(tt<id){up=i;break;}
}
if(up!=-1){
Task t=new Task(id,1);
downTasks.add(up,t);
return;
}
else{
Task t=new Task(id,1);
downTasks.addLast(t);
return;
}
}
if(estate ==2 && id<floorID){
int up= -1;
for(int i=0; i<outup.size(); i++){
int tt=((Task)outup.get(i)).getTask();
int ty=((Task)outup.get(i)).getType();
if(tt == id && ty!=0 )return;
if(tt == id && ty==0 ){
Task t=new Task(tt,2);
outup.set(i,t);
return;
}
if(tt>id){up=i;break;}
}
if(up!=-1){
Task t=new Task(id,1);
outup.add(up,t);
return;
}
else{
Task t=new Task(id,1);
outup.addLast(t);
return;
}
}
if(estate ==1 && id>floorID ){
int up= -1;
for(int i=0; i<outdown.size(); i++){
int tt=((Task)outdown.get(i)).getTask();
int ty=((Task)outdown.get(i)).getType();
if(tt == id && ty!=0 )return;
if(tt == id && ty==0 ){
Task t=new Task(tt,2);
outdown.set(i,t);
return;
}
if(tt<id){up=i;break;}
}
if(up!=-1){
Task t=new Task(id,1);
outdown.add(up,t);
return;
}
else{
Task t=new Task(id,1);
outdown.addLast(t);
return;
}
}
}
if(estate != dir){//反向
int up=-1;
for(int i=0;i<unrun.size();i++){
int tt=((Task)unrun.get(i)).getTask();
int ty=((Task)unrun.get(i)).getType();
if(tt == id && ty!=0 )return;
if(tt == id && ty==0 ){
Task t=new Task(tt,2);
unrun.set(i,t);
return;
}
if(isup){
if(tt<id){up=i;break;}
}
else{
if(tt>id){up=i;break;}
}
}
if(up!=-1){
Task t=new Task(id,1);
unrun.add(up,t);
return;
}
else{
Task t=new Task(id,1);
unrun.addLast(t);
return;
}
}
}
}
public void emerge(LinkedList a,LinkedList b,boolean isup){
for(int i=0;i<b.size();i++){
Task tb=(Task)b.get(i);
int up=-1;
for(int j=0;j<a.size();j++){
Task ta=(Task)a.get(j);
if(tb.getTask()==ta.getTask() && ta.getType()==1){
up=-2;
break;
}
if(tb.getTask()==ta.getTask() && ta.getType()==0){
ta.setTyep(2);
up=-2;
break;
}
if(isup){
if(ta.getTask()>tb.getTask()){
up=j;
break;
}
}
else{
if(ta.getTask()>tb.getTask()){
up=j;
break;
}
}
}
if(up==-2){
continue;
}
else if(up!=-1){
Task t=new Task(tb.getTask(),1);
a.add(up,t);
continue;
}
else {
Task t=new Task(tb.getTask(),1);
a.addLast(t);
continue;
}
}
b.clear();
}
public void run(){
while(true){
if(estate==0 && (upTasks.size()>0 || downTasks.size()>0)){
if(upTasks.size()>downTasks.size()){
run = upTasks;
unrun = downTasks;
estate = 2;
}
else {
run = downTasks;
unrun = upTasks;
estate = 1;
}
}
if(floorID==target){
isstop = true;
num[floorID-1].setIcon(fg[floorID-1]);
Task temp=(Task)run.removeFirst();
System.out.println("response demand type "+temp.getType()+" on floor "+floorID);
if(temp.getType()!=0){
controlPn.setList(temp.getTask(),-1,estate);
}
target=0;
try{
self.sleep(3000);
}catch(Exception e){
e.printStackTrace();
}
//轮询门是否开着
while(isopen){
try{
self.sleep(3000);
}catch(Exception e){
e.printStackTrace();
}
}
isstop = false;
}
if(estate == 2 && upTasks.size()==0){
this.emerge(downTasks,outdown,false);
run=downTasks;
unrun=upTasks;
estate = 1;
}
if(estate == 1 && downTasks.size()==0){
this.emerge(upTasks,outup,true);
run=upTasks;
unrun=downTasks;
estate = 2;
}
if(run.size()>0){
target=((Task)run.getFirst()).getTask();
}
else
target = 0;
if(target>floorID&&target!=0){
floorID ++;
}
if(target<floorID&&target!=0){
floorID --;
}
try{
self.sleep(1000);
info.setIcon(state[floorID-1]);
outside.setIcon(state[floorID-1]);
}catch(Exception e){
floorID = 1;
estate = 0;
upTasks.clear();
downTasks.clear();
e.printStackTrace();
}
for(int i=0;i<upTasks.size();i++){
System.out.println("Lift"+liftID+"up "+((Task)upTasks.get(i)).getTask());
}
for(int i=0;i<downTasks.size();i++){
System.out.println("Lift"+liftID+"down "+((Task)downTasks.get(i)).getTask());
}
for(int i=0;i<outup.size();i++){
System.out.println("Lift"+liftID+"outup "+((Task)outup.get(i)).getTask());
}
for(int i=0;i<outdown.size();i++){
System.out.println("Lift"+liftID+"outdown "+((Task)outdown.get(i)).getTask());
}
//this.repaint();
}
}
public static void main(String[] args){
Lift t = new Lift("thread",null,null,0);
t.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
t.pack();
t.setVisible(true);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -