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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? car.java

?? 基于JAVA編程的手機(jī)游戲--賽車游戲
?? JAVA
字號:
package game.entities;

import javax.microedition.m3g.*;

import game.terrain.*;

public class Car
{
  
  static Group carGroup;
  public CarCanvas parent;
  
  public Velocity velocity = new Velocity();  
  
  public float [] carCoords =  new float[3];
                                        
  public static float matrix[]=new float[16];  
  
  private static final float X_POS = 0.0f;
  private static final float Y_POS = 0.01f;
  private static final float Z_POS = 0.0f;

  private static float ANGLE_INCR = 2.0f;   
  public static float MOVE_INCR = 0.0f;

  public boolean upPressed = false;
  public boolean downPressed = false;
  public boolean leftPressed = false;
  public boolean rightPressed = false;

  private Transform trans = new Transform();
  private float[] transMat = new float[16];
  public float xCoord, yCoord, zCoord;
  
  public float xAngle = 0;
  public float yAngle;
  public float zAngle = 0;

  float lol = 0;

  private Group transGroup = new Group();
  private Group group = new Group();
  
  private Camera backcam = new Camera();
  private Camera nosecam = new Camera();
  private Camera sidecam = new Camera();

  public int width;
  public int height;

  Group wheel1;
  Group wheel2;
  Group wheel3;
  Group wheel4;

  Transform tr_cam = new Transform();
  private boolean up_cam = false;
  private boolean down_cam = false;
  static final int UP_CAM = 9;
  static final int DOWN_CAM = 11;
  static final int SHOW_POSITION = 10;
  static final int UP = 1;   //Canvas.UP = UP
  static final int DOWN = 6; //Canvas.DOWN = DOWN
  static final int LEFT = 2; //Canvas.LEFT = LEFT
  static final int RIGHT = 5;//Canvas.RIGHT = RIGHT

  private MobileBackground mobileBackGnd;
  
  private Group floorGroup ;
  private RayIntersection ri = new RayIntersection();
  private final float MAX_HEIGHT =100f;
	
  public void up_cam()
  {
	  backcam.getTransform(tr_cam);
	  tr_cam.postTranslate(0,0.05f,0);
	  backcam.setTransform(tr_cam);
  }
  
  public void down_cam()
  {
	  backcam.getTransform(tr_cam);
	  tr_cam.postTranslate(0,-0.05f,0);
	  backcam.setTransform(tr_cam);
  }
  
  //構(gòu)造函數(shù)
  public Car(int w, int h)
  {
	  width = w;
	  height = h;	  
	  set();
  }
  
  private Group scaleCar = new Group();
  
  public void set()
  {
	  
	    setCamera();
	    
	    setCarEntity();

	    transGroup = new Group();	    
	
	    trans.postTranslate(X_POS, Y_POS, Z_POS);
	    	
	    transGroup.addChild(backcam);
		  
	    transGroup.addChild(nosecam);
		  
	    transGroup.addChild(sidecam);
	    
	    scaleCar.addChild(carGroup);
	    scaleCar.scale(0.5f, 0.5f, 0.5f);
	    transGroup.addChild(scaleCar);
	    transGroup.setTransform(trans);
	    
	    yAngle = 0.0f;

	    wheel1 = (Group) carGroup.find(65);
	    wheel2 = (Group) carGroup.find(69);
	    wheel3 = (Group) carGroup.find(63);
	    wheel4 = (Group) carGroup.find(67);
  }
  
  
  public void setCamera()
  {
	  float aspectRatio = ((float) width) / ((float) height);
	  
	  backcam.postRotate(-20,1,0,0);	  
	  
	  backcam.setTranslation(0,2,4);;
	  
	  backcam.setPerspective(60.0f, aspectRatio, 0.5f, 1000.0f);	

	  nosecam.setPerspective(60.0f,aspectRatio,0.5f,1000);

	  nosecam.setTranslation(0,0.75f,0.25f);
	  
	  sidecam.setPerspective(60.0f,aspectRatio,0.5f,1000);
	    
	  sidecam.setTranslation(-2,0.75f,2.5f);
	    
	  sidecam.postRotate(-45,0,1,0);
  }
  

  public void setCarEntity()
  {
	  World carw = loadWorld("/models/car.m3g");
	  carGroup = (Group) carw.find(62);
	  carw.removeChild(carGroup);
  }
  
//載入World
  public World loadWorld(String fn)
  {
    Object3D[] tile = load(fn);
    World w = null;
    for (int i = 0; i < tile.length; i++){
      try{
        w = (World)tile[i];
        break;
      }catch(Exception ex){
      }
    }
    return w;
  }
  
  //載入3DObject
  public Object3D[] load( String fn ){
    Object3D[] obj = null;
    try {
      obj = Loader.load(fn);
    } catch(Exception e) {
      e.printStackTrace();
    }
    return obj;
  }
  
  public Group getCameraGroup()
  { 
    return transGroup;
  }
  
  public Group getObjectGroup()
  {  
	return group;
  }

  //獲取照相機(jī)
  public Camera getBackCamera()
  {  
	  return backcam;
  }

	public Camera getNoseCamera() {	
		return nosecam;
	}

	public Camera getSideCamera() {		
		return sidecam;
	}
	
  //響應(yīng)鍵盤(按下)
  public void pressedKey(int gameAction){
	
    switch(gameAction) {
    
      case UP_CAM:          up_cam = true;       break;
      case DOWN_CAM:        down_cam = true;     break;
      case UP: 			    upPressed = true;	 break;
      case DOWN:			downPressed = true;  break;
      case LEFT:			leftPressed = true;	 break;
      case RIGHT:			rightPressed = true; break;    
      default: 									 break;
      
    }
  }

  //響應(yīng)鍵盤(釋放)
  public void releasedKey(int gameAction){
    switch(gameAction) {
    
      case UP_CAM:          up_cam = false;       break;
      case DOWN_CAM:        down_cam = false;     break;
      case UP: 			    upPressed = false;	  break;
      case DOWN:			downPressed = false;  break;
      case LEFT:			leftPressed = false;  break;
      case RIGHT:			rightPressed = false; break;
      default: 									  break;
    }
  }

  //響應(yīng)鍵盤,移動(dòng)汽車
  public void update(){	  
	  
	  try {
		Thread.sleep(1);
	} catch (InterruptedException e) {		
		e.printStackTrace();
	}
	
	    if( up_cam )
	    {
	    	up_cam();    	
	    }
	    if( down_cam )
	    {
	    	down_cam();
	    }	    
	    
    transGroup.getTransform(trans);
    
    getPosition();
    
    if (upPressed){    	
        if (MOVE_INCR >= 0)
          MOVE_INCR = velocity.accelerate();
        else if (MOVE_INCR < 0)
          MOVE_INCR = -velocity.brake(20);        
      }
    else if (downPressed){    	
        if (MOVE_INCR <= 0){
          MOVE_INCR = -velocity.accelerate();
        }else if (MOVE_INCR > 0){
          MOVE_INCR = velocity.brake();
        }        
      }else{
        if (MOVE_INCR >= 0)
          MOVE_INCR = velocity.brake(60);
        else
          MOVE_INCR = -velocity.brake(60);
      }
    
    if (MOVE_INCR != 0)    	
    {
    	if(leftPressed || rightPressed)
    		updateYaw();
    }
    updateMove();    
   
    backcam.setTranslation(lol,2.5f,4);

    float f[] = new float[4];
    wheel2.getOrientation(f);
    
    if(leftPressed){
      if (lol > -1)
        lol = lol - 0.1f;
     
      if (f[0] < 140) {
        wheel1.postRotate( -5, 0, 0, 1);
        wheel2.postRotate( -5, 0, 0, 1);
      }
    }else if(rightPressed){
      if (lol < 1)
        lol = lol + 0.1f;
      if (f[0] > 100) {
        wheel1.postRotate(5, 0, 0, 1);
        wheel2.postRotate(5, 0, 0, 1);
      }
    }else{
      if (lol < -0.1f)
        lol = lol + 0.1f;
      else if (lol > 0.1f)
        lol = lol - 0.1f;
      else
        lol = 0;

      if (f[0] > 119.99975f) {
        wheel1.postRotate(5, 0, 0, 1);
        wheel2.postRotate(5, 0, 0, 1);
      }else if (f[0] < 119.99975f) {
        wheel1.postRotate( -5, 0, 0, 1);
        wheel2.postRotate( -5, 0, 0, 1);
      }
    }      

    wheel1.getChild(0).postRotate(-MOVE_INCR * 100,0,1,0);
    wheel2.getChild(0).postRotate(-MOVE_INCR * 100,0,1,0);
    wheel3.getChild(0).postRotate(-MOVE_INCR * 100,0,1,0);
    wheel4.getChild(0).postRotate(-MOVE_INCR * 100,0,1,0);

    terrainCheck();
  }
  
  //更新汽車的移動(dòng)位置
  public void updateMove(){
    trans.postTranslate(0, 0, -MOVE_INCR);
  }

  //更新汽車的偏移角
  public void updateYaw(){
    if (leftPressed) {
      yAngle += ANGLE_INCR;
    }else if (rightPressed){
      yAngle -= ANGLE_INCR;
    }

    if (yAngle >= 360.0f)
      yAngle -= 360.0f;
    else if (yAngle < -360.0f)
      yAngle += 360.0f;

    storePosition();
    trans.setIdentity();

    trans.postTranslate(xCoord, yCoord, zCoord);
    trans.postRotate(yAngle, 0, 1.0f, 0);
    
    if( rightPressed )
    {
    	mobileBackGnd.moveLeft(1);
    }else{
    	mobileBackGnd.moveRight(1);
    }
  }

  //獲得汽車的位置坐標(biāo)
  public float[] getPosition(){
    storePosition();
    return new float[] { xCoord, yCoord, zCoord };
  }

  //存儲汽車的位置坐標(biāo)
  private void storePosition(){
    transGroup.getCompositeTransform(trans);
    trans.get(transMat);
    xCoord = transMat[3];
    yCoord = transMat[7];
    zCoord = transMat[11];
  }
  
  public float[] getAngle()
  {
	   return new float[] {xAngle,yAngle,zAngle};
  }
  
   //得到汽車的偏移角(和z軸負(fù)方向之間)
   public float getYAngle()
   {
	  return yAngle;
   }

	public String toString() {		
		return super.toString();
	}
			
	public void addCollisionGroup(Group _collisionGroup) {
		floorGroup = _collisionGroup;				
	}
	
	public void setParent(CarCanvas top)
	{
		parent = top;
	}
	
	//地形跟隨
	private void terrainCheck()
	{	
		//transGroup.setTransform(trans);需要連著調(diào)用兩次,
		//第一次調(diào)用前,得到了汽車下次的坐標(biāo),
		//第二次調(diào)用前,進(jìn)行汽車Y坐標(biāo)的調(diào)整
		transGroup.setTransform(trans);
		
		storePosition();
		
		//如發(fā)現(xiàn)與地形MESH相交,則進(jìn)行地形跟隨
		if (	floorGroup.pick(-1, 
						xCoord, 
						MAX_HEIGHT, 
						zCoord,
						0, 
						-1, 
						0,
						ri)  )						
		{
						
			yCoord = MAX_HEIGHT - ri.getDistance();
			
			transMat[7]=yCoord;
			
			trans.set(transMat);
		}
		
		transGroup.setTransform(trans);
	}

//	背景只平移,不上下移動(dòng)
	public void addBackGround(MobileBackground mb) {
		mobileBackGnd = mb ;
	}
}

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美肥妇free| 亚洲天堂成人网| 一区二区三区免费看视频| 91国偷自产一区二区开放时间| 尤物视频一区二区| 欧美日本在线看| 久久99国产精品免费网站| 26uuu亚洲婷婷狠狠天堂| av中文字幕在线不卡| 五月婷婷综合网| 日韩欧美另类在线| 盗摄精品av一区二区三区| 亚洲欧美日韩国产一区二区三区| 91精品欧美一区二区三区综合在| 美女视频免费一区| 国产精品视频在线看| 国产精品影音先锋| 日韩精品免费视频人成| 国产精品久久毛片av大全日韩| 欧美日韩不卡在线| 欧美日韩高清一区二区三区| 91精品国产91热久久久做人人 | 久久精品国产99国产| 欧美成va人片在线观看| 欧美伊人久久大香线蕉综合69| 国产精品一区在线| 99精品热视频| 国产v日产∨综合v精品视频| 一区二区三区四区不卡在线 | 色国产精品一区在线观看| 欧美视频在线不卡| www国产亚洲精品久久麻豆| 国产欧美一区二区精品久导航 | 久久99久久精品| 高清不卡一区二区在线| 91国模大尺度私拍在线视频| 日韩丝袜美女视频| 欧美日韩在线播放一区| 99久久免费精品| 欧美日产在线观看| 日本一区二区三区久久久久久久久不| 亚洲欧美成aⅴ人在线观看| 免播放器亚洲一区| 亚洲va在线va天堂| 一区二区三区四区av| 狠狠色狠狠色综合日日91app| 日本不卡的三区四区五区| 国产 日韩 欧美大片| 91精品中文字幕一区二区三区| 国产日产精品1区| 日韩vs国产vs欧美| 青青草一区二区三区| 成人激情文学综合网| 99re亚洲国产精品| 亚洲精品一区二区三区99| 久久久精品国产免大香伊| 久久亚洲一区二区三区明星换脸| 亚洲在线观看免费| 天天亚洲美女在线视频| 99久久久久久99| 精品成人免费观看| 蜜桃在线一区二区三区| 欧美日韩一二区| 亚洲情趣在线观看| 处破女av一区二区| 久久精品一区二区| 欧美一二区视频| 2024国产精品| 国产在线一区二区| 欧美一级欧美三级在线观看| 亚洲综合在线五月| 91福利在线观看| 亚洲柠檬福利资源导航| 99re热这里只有精品免费视频| 中文字幕第一区综合| 亚洲手机成人高清视频| 狠狠狠色丁香婷婷综合激情| 91精品国产高清一区二区三区 | 理论电影国产精品| 91精品中文字幕一区二区三区| 亚洲aaa精品| 7777精品伊人久久久大香线蕉的 | 日本不卡免费在线视频| 欧美一区二区视频观看视频| 婷婷综合在线观看| 9191久久久久久久久久久| 日韩精品视频网| 日韩欧美在线123| 麻豆高清免费国产一区| 久久亚洲二区三区| 日韩成人一区二区三区在线观看| 3d动漫精品啪啪一区二区竹菊| 奇米在线7777在线精品| 精品裸体舞一区二区三区| 国产乱子伦视频一区二区三区| 国产亚洲婷婷免费| 91美女片黄在线观看91美女| 欧美一二区视频| 久草这里只有精品视频| 国产日韩欧美高清在线| 91麻豆国产在线观看| 久久精品国产免费看久久精品| 日韩欧美一级片| 国产一区二区影院| 7777精品伊人久久久大香线蕉经典版下载 | 国产一区二区三区在线观看精品 | 欧美二区三区91| 久久精品国产亚洲aⅴ| 国产精品天天摸av网| 日本韩国视频一区二区| 日本伊人色综合网| 国产日产欧美一区| 欧美日韩一二三区| 国产精品综合二区| 亚洲一区视频在线观看视频| 精品裸体舞一区二区三区| 91丨porny丨国产入口| 免费在线观看不卡| 亚洲三级免费观看| 精品国产电影一区二区| 色婷婷国产精品| 久久久久久免费毛片精品| 不卡视频一二三| 美女视频一区二区三区| 亚洲欧美日韩电影| 欧美一区二区三区的| 色狠狠一区二区| 国模冰冰炮一区二区| 亚洲成人精品一区二区| 中文一区在线播放| 欧美不卡一区二区三区| 91久久精品网| 国产v日产∨综合v精品视频| 老司机午夜精品| 日韩在线观看一区二区| 亚洲美腿欧美偷拍| 亚洲国产精品二十页| 精品日韩在线一区| 在线一区二区观看| 国产精品69毛片高清亚洲| 亚洲高清不卡在线观看| 欧美少妇bbb| 国产精品资源站在线| 久久精品国产99| 日日夜夜精品视频天天综合网| 亚洲色图欧美偷拍| 国产精品国产精品国产专区不片| 久久综合色鬼综合色| 日韩欧美一区二区视频| 欧洲中文字幕精品| 亚洲第一综合色| 中文字幕亚洲成人| 在线观看国产日韩| 91搞黄在线观看| 成人av电影免费观看| 国产精品18久久久久久久久| 视频一区二区三区在线| 天堂精品中文字幕在线| 亚洲资源在线观看| 亚洲成av人片一区二区三区| 最新热久久免费视频| 国产精品萝li| 国产午夜精品一区二区三区嫩草 | 中文字幕一区二区三区乱码在线| 久久午夜色播影院免费高清| 91精品国产综合久久久久久 | 另类综合日韩欧美亚洲| 性做久久久久久免费观看欧美| 一区二区高清在线| 午夜一区二区三区视频| 久久av中文字幕片| 福利一区福利二区| 97国产一区二区| 成人黄色综合网站| 成人污视频在线观看| 91蜜桃免费观看视频| 91视频com| 成人av电影在线网| 欧美欧美午夜aⅴ在线观看| 日韩欧美在线观看一区二区三区| 久久久综合视频| 亚洲人精品午夜| 免费观看久久久4p| 成人午夜短视频| 欧美午夜片在线看| 欧美mv日韩mv| 亚洲国产精品99久久久久久久久| 18欧美亚洲精品| 欧美a一区二区| 99久久精品国产毛片| 91精品一区二区三区在线观看| 日韩欧美国产一区二区在线播放| 中文字幕高清不卡| 毛片av一区二区三区| 色88888久久久久久影院按摩| 精品国产乱码久久久久久夜甘婷婷| 亚洲视频在线观看一区| 国产在线精品一区二区不卡了| 91高清视频免费看| 中文字幕亚洲精品在线观看|