📄 roadgui.java
字号:
else{
g.clearRect(x-5,y-5,10,5);
g.clearRect(x-5,y,5,5);
}
if((y==255)&&(x==375)){
//g.clearRect(x+5,y-5,5,5);
g.clearRect(x-5,y-5,10,5);
}
break;
}
else if (runstate==2) //右转
{
g.setColor(clour);
g.fillRect(x,y,10,10);
for (m=1;m<v+1;m++)
{
g.clearRect(x,y-m,10,m);
}
break;
}
else if (runstate==3) //左换道
{
g.setColor(clour);
g.fillRect(x,y,10,10);
if (y>10)
{
if (x==315)
{
g.clearRect(x,y-5,10,5);
}
else if (x==327)
{
g.clearRect(x-2,y,2,10);
}
else
{
g.clearRect(x-2,y-1,10,1);
g.clearRect(x-2,y,2,9);
}
}
if (y>=490)
g.clearRect(x,y,10,10);
break;
}
else if (runstate==4) //右换道
{
g.setColor(clour);
g.fillRect(x,y,10,10);
if (y>10)
{
if (x==335)
{
g.clearRect(x,y-5,10,5);
}
else if (x==323)
{
g.clearRect(x+10,y,2,10);
}
else
{
g.clearRect(x+2,y-1,10,1);
g.clearRect(x+10,y,2,9);
}
}
if (y>=490)
g.clearRect(x,y,10,10);
break;
}
else //停车
{
break;
}
}//end case FromNorth
}//end switch
}
}
class roads
{
int rdx,rdy; //十字路口的x、y坐标
int halfwid=40;//路宽的一半
int mleft=10,mright,mup=10,mdown;
int roadwidth=700,roadheight=500;
int s[][]=new int[700][500]; //整个区域的一个映射数组;
private SimpleJxtaApp myAgent;
Dimension roadSize;
Color c;
roads(SimpleJxtaApp a) //路类的构造函数:每个全区域映射数组代表一个点,为1表示有车在上面,为0表示没有;
{
this.myAgent=a;
this.s=myAgent.s;
}
public void show(Graphics g) {
Graphics2D g2 = (Graphics2D) g;
//System.out.println(" height1 = "+roadwidth);
//System.out.println(" height2 = "+roadheight);
rdx=roadwidth / 2;
rdy=roadheight / 2;
mright=roadwidth - 10;
mdown=roadheight - 10;
g2.setColor(Color.pink); //十字路口中心的中心线;
g2.fillRoundRect(10,rdy-2,rdx-halfwid-10,4,5,5);
g2.fillRoundRect(rdx+halfwid,rdy-2,rdx-55,4,5,5);
g2.fillRoundRect(rdx-2,10,4,rdy-55,5,5);
g2.fillRoundRect(rdx-2,rdy+40,4,rdy-55,5,5);
//g2.setColor(Color.magenta); //十字路口中心的交警指挥台;
//g2.fillOval(rdx-8,rdy-8,16,16);
g2.setColor(Color.gray); //道路边界;
g2.drawLine(mleft,rdy-halfwid,rdx-halfwid,rdy-halfwid);
g2.drawLine(mleft,rdy+halfwid,rdx-halfwid,rdy+halfwid);
g2.drawLine(rdx-halfwid,rdy-halfwid,rdx-halfwid,mup);
g2.drawLine(rdx-halfwid,rdy+halfwid,rdx-halfwid,mdown);
g2.drawLine(rdx+halfwid,mup,rdx+halfwid,rdy-halfwid);
g2.drawLine(rdx+halfwid,rdy+halfwid,rdx+halfwid,mdown);
g2.drawLine(rdx+halfwid,rdy+halfwid,mright,rdy+halfwid);
g2.drawLine(rdx+halfwid,rdy-halfwid,mright,rdy-halfwid);
}
}
class signalroads extends JApplet {
private SimpleJxtaApp myAgent;
int roadwidth=700,roadheight=500;
Dimension roadSize;
Light light1;
Light light2;
Light light3;
Light light4;
Light light5;
Light light6;
Light light7;
Light light8;
signalroads(SimpleJxtaApp a) //路类的构造函数:每个全区域映射数组代表一个点,为1表示有车在上面,为0表示没有;
{
this.myAgent=a;
}
public void start()
{
Graphics g=getGraphics();
light1 = new Light(g,0,0,roadheight,roadwidth,myAgent);
light1.start();
light2 = new Light(g,1,0,roadheight,roadwidth,myAgent);
light2.start();
light3 = new Light(g,2,0,roadheight,roadwidth,myAgent);
light3.start();
light4 = new Light(g,3,0,roadheight,roadwidth,myAgent);
light4.start();
light5 = new Light(g,4,0,roadheight,roadwidth,myAgent);
light5.start();
light6 = new Light(g,5,0,roadheight,roadwidth,myAgent);
light6.start();
light7 = new Light(g,6,0,roadheight,roadwidth,myAgent);
light7.start();
light8 = new Light(g,7,0,roadheight,roadwidth,myAgent);
light8.start();
roads r=new roads(myAgent);
/*r.s[60][275]=1;
r.s[10][255]=1;
r.s[100][235]=1;
r.s[315][89]=1;
r.s[315][119]=1;
r.s[310][255]=1;*/
}
public void paint(Graphics g)
{
roads r=new roads(myAgent);
r.show(g);
//System.out.println(" Gui show");
}
}
class Light extends Thread
{
Graphics g; //数据成员;
private SimpleJxtaApp myAgent;
int x,y;
int roadwidth,roadheight;
Light(Graphics g,int x,int y,int roadheight,int roadwidth,SimpleJxtaApp a) //灯类的constructor;
{
this.g=g;
this.x=x;
this.y=y;
this.roadheight=roadheight;
this.roadwidth=roadwidth;
this.myAgent=a;
}
public void run()
{
while(true)
{
paint(g,x,myAgent.lightstatus[x]);
try
{
this.sleep(500);
}
catch(InterruptedException e)
{}
}
}
public void paint(Graphics g, int x,int y) //四组灯,x 灯组号,y 灯状态
{
switch (x)
{
case 0: //西直行
if (y==0)
{
g.setColor(Color.green);
g.fillOval(roadwidth/2-85,roadheight/2-75,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-70,roadheight/2-75,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-55,roadheight/2-75,13,13);
}
else if (y==1)
{
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-85,roadheight/2-75,13,13);
g.setColor(Color.yellow);
g.fillOval(roadwidth/2-70,roadheight/2-75,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-55,roadheight/2-75,13,13);
}
else
{
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-85,roadheight/2-75,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-70,roadheight/2-75,13,13);
g.setColor(Color.red);
g.fillOval(roadwidth/2-55,roadheight/2-75,13,13);
}
break;
case 1: //北直行
if (y==0)
{
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+65,roadheight/2-55,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+65,roadheight/2-70,13,13);
g.setColor(Color.green);
g.fillOval(roadwidth/2+65,roadheight/2-85,13,13);
}
else if (y==1)
{
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+65,roadheight/2-55,13,13);
g.setColor(Color.yellow);
g.fillOval(roadwidth/2+65,roadheight/2-70,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+65,roadheight/2-85,13,13);
}
else
{
g.setColor(Color.red);
g.fillOval(roadwidth/2+65,roadheight/2-55,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+65,roadheight/2-70,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+65,roadheight/2-85,13,13);
}
break;
case 2: //南直行
if (y==0)
{
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-75,roadheight/2+45,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-75,roadheight/2+60,13,13);
g.setColor(Color.green);
g.fillOval(roadwidth/2-75,roadheight/2+75,13,13);
}
else if (y==1)
{
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-75,roadheight/2+45,13,13);
g.setColor(Color.yellow);
g.fillOval(roadwidth/2-75,roadheight/2+60,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-75,roadheight/2+75,13,13);
}
else
{
g.setColor(Color.red);
g.fillOval(roadwidth/2-75,roadheight/2+45,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-75,roadheight/2+60,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-75,roadheight/2+75,13,13);
}
break;
case 3: //东直行
if (y==0)
{
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+45,roadheight/2+65,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+60,roadheight/2+65,13,13);
g.setColor(Color.green);
g.fillOval(roadwidth/2+75,roadheight/2+65,13,13);
}
else if (y==1)
{
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+45,roadheight/2+65,13,13);
g.setColor(Color.yellow);
g.fillOval(roadwidth/2+60,roadheight/2+65,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+75,roadheight/2+65,13,13);
}
else
{
g.setColor(Color.red);
g.fillOval(roadwidth/2+45,roadheight/2+65,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+60,roadheight/2+65,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+75,roadheight/2+65,13,13);
}
break;
case 4: //西左转
if (y==0)
{
g.setColor(Color.green);
g.fillOval(roadwidth/2-85,roadheight/2-55,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-70,roadheight/2-55,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-55,roadheight/2-55,13,13);
}
else if (y==1)
{
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-85,roadheight/2-55,13,13);
g.setColor(Color.yellow);
g.fillOval(roadwidth/2-70,roadheight/2-55,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-55,roadheight/2-55,13,13);
}
else
{
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-85,roadheight/2-55,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-70,roadheight/2-55,13,13);
g.setColor(Color.red);
g.fillOval(roadwidth/2-55,roadheight/2-55,13,13);
}
break;
case 5: //北左转
if (y==0)
{
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+45,roadheight/2-55,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+45,roadheight/2-70,13,13);
g.setColor(Color.green);
g.fillOval(roadwidth/2+45,roadheight/2-85,13,13);
}
else if (y==1)
{
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+45,roadheight/2-55,13,13);
g.setColor(Color.yellow);
g.fillOval(roadwidth/2+45,roadheight/2-70,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+45,roadheight/2-85,13,13);
}
else
{
g.setColor(Color.red);
g.fillOval(roadwidth/2+45,roadheight/2-55,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+45,roadheight/2-70,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+45,roadheight/2-85,13,13);
}
break;
case 6: //南左转
if (y==0)
{
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-55,roadheight/2+45,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-55,roadheight/2+60,13,13);
g.setColor(Color.green);
g.fillOval(roadwidth/2-55,roadheight/2+75,13,13);
}
else if (y==1)
{
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-55,roadheight/2+45,13,13);
g.setColor(Color.yellow);
g.fillOval(roadwidth/2-55,roadheight/2+60,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-55,roadheight/2+75,13,13);
}
else
{
g.setColor(Color.red);
g.fillOval(roadwidth/2-55,roadheight/2+45,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-55,roadheight/2+60,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2-55,roadheight/2+75,13,13);
}
break;
case 7: //东左转
if (y==0)
{
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+45,roadheight/2+45,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+60,roadheight/2+45,13,13);
g.setColor(Color.green);
g.fillOval(roadwidth/2+75,roadheight/2+45,13,13);
}
else if (y==1)
{
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+45,roadheight/2+45,13,13);
g.setColor(Color.yellow);
g.fillOval(roadwidth/2+60,roadheight/2+45,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+75,roadheight/2+45,13,13);
}
else
{
g.setColor(Color.red);
g.fillOval(roadwidth/2+45,roadheight/2+45,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+60,roadheight/2+45,13,13);
g.setColor(Color.lightGray);
g.fillOval(roadwidth/2+75,roadheight/2+45,13,13);
}
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -