⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 roadgui.java

📁 基于JXTA的P2P交通仿真程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:

import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
import java.lang.Math;


class RoadGui extends JFrame {	
	private SimpleJxtaApp myAgent;	
	private JTextField titleField, priceField;
	public JApplet signalroad;

	RoadGui(SimpleJxtaApp a) {
		super("人工交通系统(中科院复杂系统与智能科学实验室)");//a.getLocalName());	
		myAgent = a;		

		JPanel p = new JPanel();
		p.setLayout(new GridLayout(20,2));
		p.add(new JLabel("车辆数:"));
		titleField = new JTextField(5);
		p.add(titleField);
		p.add(new JLabel("相位数:"));
		priceField = new JTextField(5);
		p.add(priceField);
		getContentPane().add(p, BorderLayout.EAST);
		
	    JButton addButton = new JButton("开始");
		p = new JPanel();
		p.add(addButton);
		getContentPane().add(p, BorderLayout.SOUTH);
		
	    signalroad = new signalroads(myAgent);

				
		
		setResizable(false);
	}
	
	public void show() {
		pack();
		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
		int centerX = (int)screenSize.getWidth() / 2;
		int centerY = (int)screenSize.getHeight() / 2;
		setLocation(100 , 100);
		setSize(new Dimension(3*centerX/2,3*centerY/2));
		//JApplet signalroad = new signalroads(myAgent);
	    getContentPane().add(this.signalroad,BorderLayout.CENTER);
		super.show();
		signalroad.start();
	}	
	
	public void stoppaint(int x,int y)
	{
		Graphics g=signalroad.getGraphics();
		g.setColor(Color.MAGENTA);
		g.fillRect(x,y,10,10);
	}
	
	public void carpaint(int x,int y,int direct,int runstate,int v,Color clour)   //画车函数
	{
		Graphics g=signalroad.getGraphics(); 
		int m;
		switch (direct)
		{
		case 1:    //east-west
			{
				if (runstate==0)  //直行
					{
					    g.setColor(clour);//Color.BLUE
						g.fillRect(x,y,10,10);
						if (x<690)
						{
						for (m=1;m<v+1;m++)
								{   
								g.clearRect(x+10,y,m,10);
								}
						}
						if (x<10)
							g.clearRect(x,y,10,10);
						break;
					}
				else if (runstate==1)  //左转
				{
					g.setColor(clour);
					
					g.fillRect(x,y,10,10);
					
					if (x>=375)
					{
					for (m=1;m<v+1;m++)
							{   
							g.clearRect(x+10,y,m,10);
							}
					}

					else if(x==335)
					{
						for (m=1;m<v+1;m++)
						{   
						g.clearRect(x,y-m,10,m);
						}
					}
					else{
					g.clearRect(x+5,y-5,5,5);
					g.clearRect(x+10,y-5,5,10);
					}
					
					if((x==335)&&(y==275)){
						//g.clearRect(x+5,y-5,5,5);
						g.clearRect(x+10,y-5,5,10);
					}
					
					break;
				}
				else if (runstate==2)  //右转
				{
					g.setColor(clour);
					
					g.fillRect(x,y,10,10);
					for (m=1;m<v+1;m++)
					{   
					g.clearRect(x+10,y,m,10);
					}

					break;
				}
				else if (runstate==3)  //左换道
				{
				    g.setColor(clour);
					g.fillRect(x,y,10,10);
					if (x<690)
					{
					   if (y==215)
					   {
						   g.clearRect(x+10,215,5,10);
					   }
					   else if (y==227)
					   {
							g.clearRect(x,225,10,2);
					   }
					   else
					   {
							g.clearRect(x+1,y-2,10,2);
							g.clearRect(x+10,y,1,8);
					   }
					}
					if (x<10)
						g.clearRect(x,y,10,10);
					break;
				}
				else if (runstate==4)  //右换道
				{
				    g.setColor(clour);
					g.fillRect(x,y,10,10);
					if (x<690)
					{
					   if (y==235)
					   {
						   g.clearRect(x+10,235,5,10);
					   }
					   else if (y==223)
					   {
							g.clearRect(x,y+10,10,2);
					   }
					   else
					   {
							g.clearRect(x+1,y+10,10,2);
							g.clearRect(x+10,y+2,1,8);
					   }
						
					}
					if (x<10)
						g.clearRect(x,y,10,10);
					break;
				}
				else  //停车
				{
					break;
				}
			}//end case fromeast
			
		case 2:    //south->north
		{
			if (runstate==0)  //直行
				{
				    g.setColor(clour);
					g.fillRect(x,y,10,10);
					if (y<490)
					{
					for (m=1;m<v+1;m++)
							{   
							g.clearRect(x,y+10,10,m);
							}
					}
					if (y<10)
						g.clearRect(x,y,10,10);
					break;
				}
			else if (runstate==1)  //左转
			{
				g.setColor(clour);
				
				g.fillRect(x,y,10,10);
				
				if (y>=275)
				{
				for (m=1;m<v+1;m++)
					{   
					g.clearRect(x,y+10,10,m);
					}
				}

				else if(y==235)
				{
					for (m=1;m<v+1;m++)
					{   
					g.clearRect(x+10,y,m,10);
					}
				}
				else{
				g.clearRect(x+5,y+10,5,5);
				g.clearRect(x+10,y+5,5,10);
				}
				
				if((y==235)&&(x==315)){
					//g.clearRect(x+5,y-5,5,5);
					g.clearRect(x+5,y+10,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+10,10,m);
				}

				break;
			}
			else if (runstate==3)  //左换道
			{
			    g.setColor(clour);
				g.fillRect(x,y,10,10);
				if (y<490)
				{
				   if (x==375)
				   {
					   g.clearRect(x,y+10,10,5);
				   }
				   else if (x==363)
				   {
					   g.clearRect(x+10,y,2,10);
				   }
				   else
				   {
						g.clearRect(x+2,y+10,10,1);
						g.clearRect(x+10,y+1,2,9);
				   }
					
				}
				if (y<10)
					g.clearRect(x,y,10,10);
				break;
			}
			else if (runstate==4)  //右换道
			{
			    g.setColor(clour);
				g.fillRect(x,y,10,10);
				if (y<490)
				{
					   if (x==355)
					   {
						   g.clearRect(x,y+10,10,5);
					   }
					   else if (x==367)
					   {
						   g.clearRect(x-2,y,2,10);
					   }
					   else
					   {
							g.clearRect(x-2,y+10,10,1);
							g.clearRect(x-2,y+1,2,9);
					   }
				}
				if (x<10)
					g.clearRect(x,y,10,10);
				break;
			}
			else  //停车
			{
				break;
			}
			}//end case FromSouth
		case 3:    //west-east
		{
			if (runstate==0)  //直行
				{
				    g.setColor(clour);
					g.fillRect(x,y,10,10);
					if (x>v)
					{
					for (m=1;m<v+1;m++)
							{   
							g.clearRect(x-m,y,m,10);
							}
					}
					if (x>=680)
						g.clearRect(x,y,10,10);
					break;
				}
			else if (runstate==1)  //左转
			{
				g.setColor(clour);
				
				g.fillRect(x,y,10,10);
				
				if (x<=315)
				{
					for (m=1;m<v+1;m++)
					{   
					g.clearRect(x-m,y,m,10);
					}
				}

				else if(x==355)
				{
					for (m=1;m<v+1;m++)
					{   
					g.clearRect(x,y+10,10,m);
					}
				}
				else{
					g.clearRect(x-5,y+5,5,5);
					g.clearRect(x-5,y+10,10,5);
				}
				
				if((x==355)&&(y==215)){
					//g.clearRect(x+5,y-5,5,5);
					g.clearRect(x-5,y+5,5,10);
				}
				
				
				break;
			}
			else if (runstate==2)  //右转
			{
				g.setColor(clour);
				g.fillRect(x,y,10,10);
				for (m=1;m<v+1;m++)
				{   
				g.clearRect(x-m,y,m,10);
				}

			
				break;
			}
			else if (runstate==3)  //左换道
			{
			    g.setColor(clour);
				g.fillRect(x,y,10,10);
				if (x>10)
				{
				   if (y==275)
				   {
					   g.clearRect(x-5,275,5,10);
				   }
				   else if (y==263)
				   {
						g.clearRect(x,y+10,10,2);
				   }
				   else
				   {
						g.clearRect(x-1,y+2,1,10);
						g.clearRect(x,y+10,9,2);
				   }
				}
				if (x>=690)
					g.clearRect(x,y,10,10);
				break;
			}
			else if (runstate==4)  //右换道
			{
			    g.setColor(clour);
				g.fillRect(x,y,10,10);
				if (x>10)
				{
				   if (y==255)
				   {
					   g.clearRect(x-5,235,5,10);
				   }
				   else if (y==267)
				   {
						g.clearRect(x,y-2,10,2);
				   }
				   else
				   {
						g.clearRect(x-1,y-2,10,2);
						g.clearRect(x-1,y,1,8);
				   }
					
				}
				if (x>=690)
					g.clearRect(x,y,10,10);
				break;
			}
			else  //停车
			{
				break;
			}
		}//end case fromWest
		case 4:    //north->south
		{
			if (runstate==0)  //直行
				{
				    g.setColor(clour);
					g.fillRect(x,y,10,10);
					if (y>v)
					{
					for (m=1;m<v+1;m++)
							{   
							g.clearRect(x,y-m,10,m);
							}
					}
					if (y>=480)
						g.clearRect(x,y,10,10);
					break;
				}
			else if (runstate==1)  //左转
			{
				g.setColor(clour);
				
				g.fillRect(x,y,10,10);
				
				if (y<=215)
				{
					for (m=1;m<v+1;m++)
					{   
					g.clearRect(x,y-m,10,m);
					}
				}

				else if(y==255)
				{
					for (m=1;m<v+1;m++)
					{   
					g.clearRect(x-m,y,m,10);
					}
				}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -