📄 carmove.java
字号:
/* * To change this template, choose Tools | Templates * and open the template in the editor. */package fivestarcross;import java.math.*;import java.awt.*;/** * * @author Administrator */public class CarMove implements Runnable{ CarMove(MainPanel aMainPanel,Car aCar){ p=aMainPanel; c=aCar; } public void run(){ while(true){ if(p.Player==0){ if(c.getStatus()==0){ if(p.fivejunct.getTrafficLight()[c.getIn()][c.getOut()]==0){ {move();} } else{ if(notBlock()){ move(); } } if(Pass()){c.setStatus(1);} } else if(c.getStatus()==1){ move(); if(preTurn()){ c.setStatus(2);} } else if(c.getStatus()==2){ move(); if(Turn()){ c.setStatus(3);c.setAngle(p.angel[c.getOut()]+180); } } else if(c.getStatus()==3){ if(c.getnowPoint().x>=0&&c.getnowPoint().y>=0&&c.getnowPoint().x<=800&&c.getnowPoint().y<=600) move(); else{p.queue[c.getIn()*5+c.getOut()].remove(c);break;} } } else if(p.Player==2){break;} p.repaint(); try{ Thread.sleep(p.onetime/25); }catch(InterruptedException e){} } p.queue[c.getIn()*5+c.getOut()].remove(c); p.repaint(); } private boolean notBlock(){ if(c.getCar()==null||c.getCar().getStatus()!=0){ if(Stop())return false; else return true; } if(c.getIn()==1){ if(c.getCar().getnowPoint().x-25>c.getnowPoint().x&&!Stop()) return true; } else if(c.getIn()==2){ if(c.getCar().getnowPoint().y-25>c.getnowPoint().y&&!Stop())return true; } else if(c.getIn()==3){ if(c.getCar().getnowPoint().x+25<c.getnowPoint().x&&!Stop())return true; } else if(c.getIn()==4||c.getIn()==0){ if(c.getCar().getnowPoint().y+25<c.getnowPoint().y&&!Stop())return true; } return false; } private boolean Stop(){ if(c.getIn()==0||c.getIn()==1){if(c.getnowPoint().x>=c.getstopPoint().x)return true;} else if(c.getIn()==2){if(c.getnowPoint().y>=c.getstopPoint().y)return true;} else if(c.getIn()==3||c.getIn()==4){if(c.getnowPoint().x<=c.getstopPoint().x)return true;} return false; } private boolean Pass(){ if(c.getIn()==0||c.getIn()==1){if(c.getnowPoint().x>c.getstopPoint().x+5)return true;} else if(c.getIn()==2){if(c.getnowPoint().y>c.getstopPoint().y+5)return true;} else if(c.getIn()==3||c.getIn()==4){if(c.getnowPoint().x<c.getstopPoint().x-5)return true;} return false; } private boolean preTurn(){ if(c.getIn()==0&&c.getOut()==1){ if(c.getnowPoint().x>296) {c.setAngle(270); return true;} else return false; } else if(c.getIn()==4&&c.getOut()==0){ if(c.getnowPoint().y<369){ c.setAngle(0); return true;} else return false; } else if(c.getIn()==0&&c.getOut()==4){ if(c.getnowPoint().y<397){ c.setAngle(180); return true;} else return false; } return true; } private boolean Turn(){ if(c.getIn()==0||c.getIn()==4){ if(c.getIn()==4&&c.getOut()==0){if(c.getnowPoint().x<c.getturnPoint().x)return true;} else if(c.getIn()==0&&c.getOut()==4){if(c.getnowPoint().x>c.getturnPoint().x)return true;} else {if(c.getnowPoint().y<c.getturnPoint().y)return true;} } else if(c.getIn()==1){if(c.getnowPoint().x>c.getturnPoint().x)return true;} else if(c.getIn()==2){if(c.getnowPoint().y>c.getturnPoint().y)return true;} else if(c.getIn()==3){if(c.getnowPoint().x<c.getturnPoint().x)return true;} return false; } private void move(){ c.setnowPoint(c.getnowPoint().x-(int)(5*Math.cos(Math.toRadians(c.getAngle()))),c.getnowPoint().y+(int)(5*Math.sin(Math.toRadians(c.getAngle())))); } MainPanel p; Car c;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -