亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? bouncingballs.java

?? Java較高級的應用
?? JAVA
字號:
import java.awt.*;
import java.applet.*;
//定義Obstacle類
class Obstacle
{
	public Rectangle r; 
	Graphics g;
	//構造函數
	public Obstacle(int x,int y,int w,int h)
	{
		r=new Rectangle(x,y,w,h);
	}
	//調用paint()方法,畫出Obstacle
	public void paint(Graphics gr)
	{	
		g=gr;
		g.setColor(Color.lightGray);//設置顏色
		//畫3D矩形
		g.draw3DRect(r.x,r.y,r.width,r.height,true);
	}		
}
//定義CollideBall類
class CollideBall
{
	int width, height;
	public static final int diameter=20;
	//坐標值以及增量值(運動方向和速度)
	double x, y, xinc, yinc, coll_x, coll_y;
	boolean collide;
	Color color;
	Graphics g;
	Rectangle r;	
	//構造函數
	public CollideBall(int w, int h, int x, int y, double xinc, double yinc, Color c)
	{
		width=w;
		height=h;
		this.x=x;
		this.y=y;
		this.xinc=xinc;
		this.yinc=yinc;		
		color=c;		
		r=new Rectangle(150,80,130,90);
	}
	//獲取中心位置坐標
	public double getCenterX() {return x+diameter/2;}
	public double getCenterY() {return y+diameter/2;}
        //改變矩形的大小以及位置
	public void alterRect(int x, int y, int w, int h)
	{
		r.move(x,y);
		r.resize(w,h);
	}
	//定義move()方法,負責球體的運動路線
	public void move()
	{
		//當兩個球體發生碰撞時的運動屬性
		if (collide)
		{			
			double xvect=coll_x-getCenterX();
			double yvect=coll_y-getCenterY();

			if((xinc>0 && xvect>0) || (xinc<0 && xvect<0))
				xinc=-xinc;

			if((yinc>0 && yvect>0) || (yinc<0 && yvect<0))
				yinc=-yinc;
	
			collide=false;
		}
	
		x+=xinc;
    	y+=yinc;
	//當球碰到邊框時,它會被彈回來
    	if(x<6 || x>width-diameter)
    	{
    		xinc=-xinc;
	  		x+=xinc;
    	}
	    
		if(y<6 || y>height-diameter)
    	{
    		yinc=-yinc;
	  		y+=yinc;
    	}
		
		//將球體的坐標轉換為整數
		int x=(int)this.x;
		int y=(int)this.y;
		//當碰到障礙物就彈回來
		//左邊框
		if(x>r.x-diameter&&x<r.x-diameter+7&&xinc>0&&y>r.y-diameter&&y<r.y+r.height)
    	{
    		xinc=-xinc;
	  		x+=xinc;
    	}
		//右邊框
		if(x<r.x+r.width&&x>r.x+r.width-7&&xinc<0&&y>r.y-diameter&&y<r.y+r.height)
    	{
    		xinc=-xinc;
	  		x+=xinc;
    	}
		//上邊框
		if(y>r.y-diameter&&y<r.y-diameter+7&&yinc>0&&x>r.x-diameter&&x<r.x+r.width)
		{
			yinc=-yinc;
	  		y+=yinc;
		}
		//下邊框
		if(y<r.y+r.height&&y>r.y+r.height-7&&yinc<0&&x>r.x-diameter&&x<r.x+r.width)
		{
			yinc=-yinc;
	  		y+=yinc;
		}

	}
	//定義hit()方法,判斷是發生否碰撞
	public void hit(CollideBall b)
	{
		if(!collide)
		{
			coll_x=b.getCenterX();
			coll_y=b.getCenterY();
			collide=true;
		}
	}
	//paint()方法
	public void paint(Graphics gr)
	{	
		g=gr;
		g.setColor(color);
		//由于fillOval()函數的坐標值必須為整數,
		//所以這里將準確的坐標值轉換為整數
		g.fillOval((int)x,(int)y,diameter,diameter);
	
		g.setColor(Color.white);
		g.drawArc((int)x,(int)y,diameter,diameter,45,180);

		g.setColor(Color.darkGray);
		g.drawArc((int)x,(int)y,diameter,diameter,225,180);
	}	
}
//定義BouncingBalls類
public class BouncingBalls extends Applet implements Runnable 
{
	Thread runner;//定義runner線程	
	Image Buffer;
    Graphics gBuffer;		
    CollideBall ball[];//定義ball數組,用來存放球體參數
	Obstacle o;    
    //設置球體數量
    static final int MAX=10;
	boolean intro=true,drag,shiftW,shiftN,shiftE,shiftS;
	boolean shiftNW,shiftSW,shiftNE,shiftSE;
	int xtemp,ytemp,startx,starty;
	int west, north, east, south;
	//初始化
	public void init() 
	{			
		Buffer=createImage(size().width,size().height);
		gBuffer=Buffer.getGraphics();					
      		//創建10個球體
		ball=new CollideBall[MAX];
            	int w=size().width-5;
		int h=size().height-5;		
		//這些球體各自擁有不同的起始坐標值,增量值
		//(運動的速度和方向)以及不同的顏色
		ball[0]=new CollideBall(w,h,50,20,1.5,2.0,Color.orange);
                ball[1]=new CollideBall(w,h,60,210,2.0,-3.0,Color.red);
                ball[2]=new CollideBall(w,h,15,70,-2.0,-2.5,Color.pink);
       		ball[3]=new CollideBall(w,h,150,30,-2.7,-2.0,Color.cyan);
        	ball[4]=new CollideBall(w,h,210,30,2.2,-3.5,Color.magenta);
		ball[5]=new CollideBall(w,h,360,170,2.2,-1.5,Color.yellow);
		ball[6]=new CollideBall(w,h,210,180,-1.2,-2.5,Color.blue);
		ball[7]=new CollideBall(w,h,330,30,-2.2,-1.8,Color.green);
		ball[8]=new CollideBall(w,h,180,220,-2.2,-1.8,Color.black);
		ball[9]=new CollideBall(w,h,330,130,-2.2,-1.8,Color.gray);
 		//創建一個障礙物
		o=new Obstacle(150,80,130,90);
		//定義東南西北
		west=o.r.x;
		north=o.r.y;
		east=o.r.x+o.r.width;
		south=o.r.y+o.r.height;
	}	
	//啟動線程
	public void start()
	{
		if (runner == null) 
		{
			runner = new Thread (this);
			runner.start();
		}
   }
   //停止線程
   public void stop()
	{
		if (runner != null) 
		{
         	runner.stop();
           	runner = null;
     	}
   }
        //開始運行程序
	public void run()
	{
		while(true) 
		{
			Thread.currentThread().setPriority(Thread.MAX_PRIORITY);
			try {runner.sleep(15);}
            	catch (Exception e) { }						
			//使球體到處運動
			for(int i=0;i<MAX;i++)
				ball[i].move();	
			handleCollision();
			repaint();	                        
		}	
	}
	//判斷是否碰撞
	boolean collide(CollideBall b1, CollideBall b2)
	{
		double wx=b1.getCenterX()-b2.getCenterX();
		double wy=b1.getCenterY()-b2.getCenterY();
		//計算兩個球體的球心距離
		//從而判斷球體是否相撞
		double distance=Math.sqrt(wx*wx+wy*wy);
		if(distance<b1.diameter)					
			return true;		

			return false;	
	}
        //changeCursor()方法,負責設置鼠標
	void changeCursor(int x, int y)
	{
		Rectangle r=new Rectangle(o.r.x+1,o.r.y+1,o.r.width-1,o.r.height-1);
		Frame BrowserFrame;
		Component ParentComponent;
		ParentComponent = getParent();
		while ( ParentComponent != null && 
		!(ParentComponent instanceof Frame)) 		      
		ParentComponent = ParentComponent.getParent();		
		BrowserFrame = (Frame) ParentComponent;
		if(shiftNW||shiftSE)
			BrowserFrame.setCursor(Frame.SE_RESIZE_CURSOR);
		else if(shiftNE||shiftSW)
			BrowserFrame.setCursor(Frame.SW_RESIZE_CURSOR);
		else if(shiftW)
			BrowserFrame.setCursor(Frame.W_RESIZE_CURSOR);
		else if(shiftN)
			BrowserFrame.setCursor(Frame.N_RESIZE_CURSOR);
		else if(shiftE)
			BrowserFrame.setCursor(Frame.W_RESIZE_CURSOR);
		else if(shiftS)
			BrowserFrame.setCursor(Frame.N_RESIZE_CURSOR);
		else if(r.inside(x,y))
			BrowserFrame.setCursor(Frame.MOVE_CURSOR);
		else 
			BrowserFrame.setCursor(Frame.DEFAULT_CURSOR);
	}
	//mouseMove()方法,判斷鼠標的移動
	public boolean mouseMove(Event evt,int x,int y)
	{
		//障礙物的邊角區域
		Rectangle nw,sw,ne,se;
		
		nw=new Rectangle(o.r.x-2,o.r.y-2,4,4);
		if(nw.inside(x,y))
			shiftNW=true;
		else shiftNW=false;
                
		sw=new Rectangle(o.r.x-2,o.r.y+o.r.height-2,4,4);
		if(sw.inside(x,y))
			shiftSW=true;
		else shiftSW=false;
                
		ne=new Rectangle(o.r.x+o.r.width-2,o.r.y-2,4,4);
		if(ne.inside(x,y))
			shiftNE=true;
		else shiftNE=false;
                
		se=new Rectangle(o.r.x+o.r.width-2,o.r.y+o.r.height-2,4,4);

		if(se.inside(x,y))
			shiftSE=true;
		else shiftSE=false;		
                
		if(x>o.r.x-2&&x<o.r.x+2&&y>o.r.y&&y<o.r.y+o.r.height)
			shiftW=true;
		else shiftW=false;
		if(x>o.r.x+o.r.width-2&&x<o.r.x+o.r.width+2
			&&y>o.r.y&&y<o.r.y+o.r.height)
			shiftE=true;
		else shiftE=false;
		if(y<o.r.y+2&&y>o.r.y-2&&x>o.r.x&&x<o.r.x+o.r.width)
			shiftN=true;
		else shiftN=false;
		if(y>o.r.y+o.r.height-2&&y<o.r.y+o.r.height+2
			&&x<o.r.x+o.r.width)
			shiftS=true;
		else shiftS=false;
		changeCursor(x,y);
		return true;
	}
	//mouseDown()方法,負責判斷鼠標是否被按下
	public boolean mouseDown(Event evt,int x,int y)
	{
		Rectangle r=new Rectangle(o.r.x+2,o.r.y+2,o.r.width-4,o.r.height-4);
		if(r.inside(x,y))
		{
			drag=true;
			startx=x;
			starty=y;
			xtemp=o.r.x;
			ytemp=o.r.y;
		}
		else drag=false;
		changeCursor(x,y);
		return true;
	}
        //mouseDrag()方法,判斷鼠標是否作出拖拽動作
	public boolean mouseDrag(Event evt,int x,int y)
	{
		intro=false;
		Rectangle bounds=new Rectangle(5,5,size().width-5,size().height-5);
		int endx, endy;		
		endx=x-startx;
		endy=y-starty;	
		//在邊框外,禁止鼠標活動
		if(x<5)x=5;
		if(y<5)y=5;
		if(x>bounds.width)x=bounds.width;
		if(y>bounds.height)y=bounds.height;
                //是否發生拖拽動作
		if(drag)
		{	
			//使鼠標拖拽動作只能在邊框那進行
			int ox=endx+xtemp;
			int oy=endy+ytemp;
			
			if(ox<5)ox=5;
			if(oy<5)oy=5;

			if(ox>bounds.width-o.r.width)
				ox=bounds.width-o.r.width;

			if(oy>bounds.height-o.r.height)
				oy=bounds.height-o.r.height;	
			
			o.r.move(ox,oy);				

			west=o.r.x;
			north=o.r.y;
			east=o.r.x+o.r.width;
			south=o.r.y+o.r.height;						
		}		
		//否則
		else
		{
			if(shiftNW){west=x;north=y;}
			else if(shiftNE){east=x;north=y;}
			else if(shiftSW){west=x;south=y;}
			else if(shiftSE){east=x;south=y;}
			else if(shiftW)west=x;
			else if(shiftE)east=x;
			else if(shiftN)north=y;
			else if(shiftS)south=y;											
			//設置矩形的最小邊長,該矩形不能小于40*40
			int MIN=40;
			//判斷左右方向的最小邊距
			if(east-west<MIN)
			{				
				if(shiftW||shiftNW||shiftSW)
					west=east-MIN;
				if(shiftE||shiftNE||shiftSE)
					east=west+MIN;
			}
                        //判斷上下方向的最小邊距
			if(south-north<MIN)
			{
				if(shiftN||shiftNW||shiftNE)
					north=south-MIN;
				if(shiftS||shiftSE||shiftSW)
					south=north+MIN;
			}
		}
		//將障礙物的改變向球體和邊框發送消息
		for(int i=0;i<MAX;i++)
			ball[i].alterRect(o.r.x,o.r.y,o.r.width,o.r.height);		
		o.r.move(west,north);
		o.r.resize(east-west, south-north);
		changeCursor(x,y);		
		return true;
	}	
	//處理碰撞
	private void handleCollision()
	{	
		//遍歷所有的球體,檢查是否發生碰撞
		for(int i=0;i<MAX;i++)
			for(int j=0;j<MAX;j++)
				{
					if(i!=j)
					{										
						if(collide(ball[i], ball[j]))
						{			
							ball[i].hit(ball[j]);
							ball[j].hit(ball[i]);
						}
					}
				}	
	}
	//update()方法
	public void update(Graphics g)
	{
		paint(g);
  	}
        //
  	public void paint(Graphics g) 
	{		
		gBuffer.setColor(Color.lightGray);
		gBuffer.fillRect(0,0,size().width,size().height);
		gBuffer.draw3DRect(5,5,size().width-10,size().height-10,false);			
		//畫障礙物矩形
		o.paint(gBuffer);
		//畫球體
		for(int i=0;i<MAX;i++)
				ball[i].paint(gBuffer);	
		if(intro)
		{			
			gBuffer.setColor(Color.red);
			gBuffer.setFont(new Font("Helvetica", Font.PLAIN,  12));			
			gBuffer.drawString("您可以移動中心矩形的位置并且可以改變它的大??!",20,30);
			gBuffer.setFont(new Font("Helvetica", Font.PLAIN,  10));
			gBuffer.drawString("2003 by Ali",155,240);
		}		
		g.drawImage (Buffer,0,0, this);				
  	}	
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
69精品人人人人| 一区二区三区精品在线观看| 国产精品国产三级国产有无不卡| 国产麻豆9l精品三级站| 色婷婷久久一区二区三区麻豆| 精品女同一区二区| 亚洲v精品v日韩v欧美v专区| 97se亚洲国产综合自在线不卡| 日韩免费一区二区| 亚洲电影你懂得| 91国内精品野花午夜精品| 国产精品午夜在线| 国产一区二区三区av电影| 欧美一区二区三区视频在线 | 亚洲最大成人综合| 成人小视频在线| 久久久精品一品道一区| 精品制服美女丁香| 制服视频三区第一页精品| 亚洲一区在线电影| 在线一区二区三区四区| 国产拍欧美日韩视频二区| 另类欧美日韩国产在线| 欧美一级日韩不卡播放免费| 亚洲第一狼人社区| 欧美精品久久天天躁| 亚洲第一电影网| 欧美精品第1页| 日本欧美肥老太交大片| 3751色影院一区二区三区| 日韩国产精品久久久久久亚洲| 欧美在线不卡视频| 亚洲视频狠狠干| 国产精品小仙女| 久久久久国产精品厨房| 国产精品中文字幕日韩精品 | 亚洲成人福利片| 久久综合九色综合97婷婷女人| 美腿丝袜亚洲色图| 精品国产91乱码一区二区三区 | 亚洲欧洲成人自拍| 菠萝蜜视频在线观看一区| 中文字幕五月欧美| 色88888久久久久久影院野外| 一区二区三区毛片| 3d动漫精品啪啪一区二区竹菊| 久久国产精品99久久久久久老狼 | 亚洲色图在线视频| 欧美中文字幕不卡| 日韩激情中文字幕| 国产亚洲欧美激情| 94色蜜桃网一区二区三区| 亚洲一区二区三区激情| 欧美一区二区三区四区五区| 狠狠色狠狠色综合日日91app| 欧美激情在线看| 日本精品一区二区三区高清| 视频精品一区二区| 国产日韩影视精品| 欧洲国内综合视频| 国产精品综合一区二区三区| 国产精品久久久久一区| 91精品国产91久久久久久一区二区| 激情偷乱视频一区二区三区| 亚洲欧美在线高清| 欧美一区二区三区在线电影| www.日本不卡| 奇米一区二区三区av| 国产精品色眯眯| 在线播放亚洲一区| 成人v精品蜜桃久久一区| 性欧美疯狂xxxxbbbb| 日本一区二区免费在线观看视频| 欧美性欧美巨大黑白大战| 国产一区亚洲一区| 亚洲成人在线观看视频| 国产欧美精品一区| 日韩欧美国产wwwww| fc2成人免费人成在线观看播放 | 亚洲免费视频中文字幕| 精品视频色一区| 韩国女主播成人在线观看| 一区二区三区四区高清精品免费观看 | 欧美三级视频在线观看| 精品一区二区在线看| 亚洲一本大道在线| 久久精子c满五个校花| 在线不卡免费欧美| 色婷婷综合久久久中文一区二区| 韩国av一区二区三区在线观看| 亚洲与欧洲av电影| 国产精品视频免费| 日韩女优制服丝袜电影| 欧美久久久久久久久中文字幕| 国产精品1024| 久久66热re国产| 亚洲一区av在线| 国产精品久久午夜| 日本一区二区视频在线| 日韩美女一区二区三区四区| 欧美高清dvd| 91激情在线视频| 国产激情91久久精品导航| 美女在线视频一区| 亚洲成av人片| 亚洲午夜激情网站| 中文字幕一区在线观看| 久久精品视频一区二区| 欧美岛国在线观看| 亚洲天堂免费看| 中文字幕不卡三区| 亚洲精品在线观看网站| 欧美大胆一级视频| 日韩欧美一区电影| 欧美丰满高潮xxxx喷水动漫| 91福利国产精品| 91久久线看在观草草青青| av中文字幕不卡| 成人午夜视频在线观看| 成人自拍视频在线| 国产不卡在线视频| 盗摄精品av一区二区三区| 精品系列免费在线观看| 韩国一区二区视频| 国模无码大尺度一区二区三区| 久久99精品国产.久久久久| 日本不卡不码高清免费观看| 日韩中文欧美在线| 国产一区三区三区| 国产 欧美在线| 一本一本久久a久久精品综合麻豆| 国产精品一级片在线观看| 狠狠久久亚洲欧美| 成人天堂资源www在线| 99天天综合性| 3d成人动漫网站| 久久综合色婷婷| 国产精品电影一区二区| 亚洲精品日韩综合观看成人91| 亚洲综合成人网| 青青草91视频| 国产福利一区二区| 色网站国产精品| 91精品国产综合久久精品| 欧美日产国产精品| 久久久久久一级片| 亚洲三级在线看| 另类小说一区二区三区| 成人一区二区三区中文字幕| 欧美日韩精品一区二区在线播放| 日韩精品一区二区三区在线| 欧美激情资源网| 蜜臀精品久久久久久蜜臀| 国产精品亚洲一区二区三区妖精| 欧美在线观看一二区| 午夜亚洲福利老司机| 九九九精品视频| 欧美色男人天堂| 国产婷婷色一区二区三区在线| 亚洲午夜精品久久久久久久久| 国内久久婷婷综合| 欧美伦理电影网| 中文字幕一区二区三区不卡| 久久99久久久欧美国产| 色综合久久99| 久久久精品tv| 免费成人在线视频观看| 色呦呦日韩精品| 欧美国产成人精品| 免费人成精品欧美精品| 欧美性大战久久久久久久| 国产欧美日韩另类一区| 麻豆成人91精品二区三区| av成人老司机| 久久老女人爱爱| 秋霞午夜av一区二区三区| 色综合天天天天做夜夜夜夜做| 51精品视频一区二区三区| 国产精品久久久久久久久图文区| 美腿丝袜亚洲色图| 3d成人动漫网站| 亚洲国产成人tv| 色天天综合色天天久久| 国产欧美日韩精品在线| 日本特黄久久久高潮| 欧美伦理电影网| 午夜久久电影网| 欧美日韩美少妇| 亚洲网友自拍偷拍| 欧美日韩在线综合| 亚洲精品国产第一综合99久久| 91影院在线免费观看| 欧美高清在线视频| 99这里都是精品| 中文字幕亚洲区| 91啪亚洲精品| 一区二区三区在线影院| 色88888久久久久久影院野外| 亚洲伦理在线免费看| 色综合久久99|