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

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

?? race_main.java

?? 這是一個Micro3D的學習代碼
?? JAVA
字號:
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.*;
import javax.bluetooth.*;
import java.io.IOException;
import java.util.*;
import com.mascotcapsule.micro3d.v3.Vector3D;

/*
 * Main midlet class
 * It creates canvas and call repaint periodically
 */
public class Race_Main extends MIDlet implements CommandListener, BTConectionObserver, BTTalkerObserver
{
  private final static String CMD_OK          = "OK";
  private final static String CMD_CANCEL      = "Cancel";
  private final static String CMD_EXIT        = "Exit";
  private final static String CMD_REFRESH     = "Refresh";
  private final static String CMD_CONNECT     = "Connect";

  private final static String PLAY_SINGLE  = "Single";
  private final static String PLAY_MULTI  = "Multiplayer";

  private final static String CONNECT_CLIENT  = "Client";
  private final static String CONNECT_SERVER  = "Server";

  public static Display display;

  private boolean appIsServer = true;

  private final static int LIST_INIT = 0;
  private final static int LIST_CONNECTING = 1;
  private final static int LIST_CON_SERVER = 2;
  private final static int LIST_CON_CLIENT = 3;
  private List mInitList = new List("Empty", List.EXCLUSIVE);
  private int mListState = 0;
  
  private List deviceList;
  private int state = DISCONNECT;
  private BTDiscovery discoverer = null;
  private BTServer server = null;   // receive data, pass to talker
  private BTClient client = null;   // receive data, pass to talker
  private BTTalker talker;          // receive or send data that it gets

  // 3D part
  public static Race_Canvas3D canvas = null;
  Timer iTimer = new Timer();    // Timer to implement animation

///////////////////////////////////////////////////////////////////////////////
//                                                                           //
//                             FUNCTIONS                                     //
//                                                                           //
///////////////////////////////////////////////////////////////////////////////

  public Race_Main()
  {
    display = Display.getDisplay(this);

    mInitList = new List("Play mode:", List.EXCLUSIVE);
    fillList(LIST_INIT);
    mInitList.addCommand(new Command(CMD_OK, Command.OK, 1));
    mInitList.addCommand(new Command(CMD_CANCEL, Command.CANCEL, 2));
    mInitList.addCommand(new Command(CMD_EXIT, Command.EXIT, 9));
  }
  
  public void startApp()
  {
    display.setCurrent(mInitList);
  }
  
  public void pauseApp()
  {
    iTimer.cancel();
  }

  private void resumeGame()
  {
    iTimer = new Timer();
    iTimer.schedule( new MyEnvTimerTask(), 0, 30 ); // Start timer
  }

  public void destroyApp(boolean unconditional) throws MIDletStateChangeException 
  {
    notifyDestroyed();
  }
  
  private void disconnect()
  {
    fillList(LIST_CONNECTING);
    if(state == DISCONNECT) {
      return;
    }
    System.out.println("Disconnecting");
    state = DISCONNECT;

    iTimer.cancel();

    if( talker != null ) {
      talker.stopBeingActive();
      talker = null;
    }
    if( appIsServer && server != null) {
      server.close();
      server = null;
    }
    else if (client != null) {
      client.close();
      client = null;
    }
  }

  private void startBT()
  {
    try {
      // List of avilable devices
      if(deviceList == null)
      {
        deviceList = new List("Select Device", List.EXCLUSIVE);
        deviceList.addCommand(new Command(CMD_OK, Command.OK, 1));
        deviceList.addCommand(new Command(CMD_REFRESH, Command.SCREEN, 5));
        deviceList.addCommand(new Command(CMD_CANCEL, Command.CANCEL, 3));
        deviceList.addCommand(new Command(CMD_EXIT, Command.EXIT, 4));
        deviceList.setCommandListener(this);
      }
      if( discoverer == null )
      {
        discoverer = new BTDiscovery(this, deviceList);
      }
      discoverer.startBluetoothDiscovery();
    } 
    catch (Exception e) {
      System.out.println("ERROR: Race_Main::startBT()" + e);
    }
  }

  private void fillList(int aState)
  {
    mInitList.deleteAll();
    switch (aState)
    {
      case LIST_INIT:
        mInitList.setTitle("Play mode:");
        mInitList.setFitPolicy(List.EXCLUSIVE);
        mInitList.append(PLAY_SINGLE, null);
        mInitList.append(PLAY_MULTI, null);
        mInitList.setCommandListener(this);
        break;

      case LIST_CONNECTING:
        mInitList.setTitle("Connection Mode:");
        mInitList.setFitPolicy(List.EXCLUSIVE);
        mInitList.append(CONNECT_SERVER, null);
        mInitList.append(CONNECT_CLIENT, null);
        mInitList.setCommandListener(this);
        break;

      case LIST_CON_SERVER:
        mInitList.setTitle("Conecting server...");
        mInitList.append("Awaiting client", null);
        break;

      case LIST_CON_CLIENT:
        mInitList.setTitle("Conecting client...");
        mInitList.append("connecting", null);
        break;
    }
    mListState = aState;
    display.setCurrent(mInitList);
  }

  private void startServerMode()
  {
    try {
      if (state != DISCONNECT)
        return;
      fillList(LIST_CON_SERVER);
      // Starts a thread
      server = new BTServer(this);
    } 
    catch (Exception e) {
      System.out.println("ERROR: Race_Main::startServerMode()" + e);
    }
  }

  private void startClientMode()
  {
    try {
      if(state != DISCONNECT)
        return;
      state = CONNECTING;
      fillList(LIST_CON_CLIENT);
      discoverer.searchForServices();
    }
    catch (Exception e) {
      System.out.println("ERROR: Race_Main::startClientMode() " + e);
    }
  }

  // called by canvas - send to other party car's position and speed.
  public void updateCarRemoteSpeedAndPos(Vector3D aMyCarPos, int aAngZ, Vector3D aMyCarSpeedVect)
  {
    try {
      // send message via talker.
      talker.remoteUpdateSpeedAndPos(aMyCarPos, aAngZ, aMyCarSpeedVect, false);
    }
    catch(Exception e) { System.out.println("ERROR, updateCarRemoteSpeedAndPos: " + e); }
  }

  // called by canvas - send to other party car's position and speed and signal
  // that connection is possible.
  // Currenlty, only server can send this message.
  public boolean sendSignalColision(Vector3D aMyCarPos, int aAngZ, Vector3D aMyCarSpeedVect)
  {
    if( !appIsServer )
      return false;
    try
    {
      // pause app, it will be resumed when responce is received.
      pauseApp();
      // send message via talker.
      talker.remoteUpdateSpeedAndPos(aMyCarPos, aAngZ, aMyCarSpeedVect, true);
    }
    catch(Exception e) {
      System.out.println("ERROR, sendSignalColision: " + e);
    }
    return true;
  }

  // called by canvas - send to other party car's position and speed.
  // Also confirm collision, and tell other party it's new speed after collision.
  public void sendColisionBetweenCarsConfirmed(Vector3D aMyCarPos, int aAngZ,
                                               Vector3D aMyCarSpeedVect,
                                               Vector3D aAvatarNewSpeedVect)
  {
    try {
      // send message via talker.
      talker.remoteSendColisionConfirm(aMyCarPos, aAngZ, aMyCarSpeedVect, aAvatarNewSpeedVect);
    }
    catch(Exception e) {
      System.out.println("ERROR, sendColisionBetweenCarsConfirmed: " + e);
    }
  }

  // called by canvas - send to other party car's position and speed.
  // Also add that there was no colision.
  public void sendColisionBetweenCarsNone(Vector3D aMyCarPos, int aAngZ, Vector3D aMyCarSpeedVect)
  {
    try {
      talker.remoteSendColisionNone(aMyCarPos, aAngZ, aMyCarSpeedVect);
    }
    catch(Exception e) {
      System.out.println("ERROR, sendColisionBetweenCarsNone: " + e);
    }
  }

  //////////////////////////////////////////////////////////////////////////////
  // from BTTalkerObserver
  //////////////////////////////////////////////////////////////////////////////
  public int getState()                 { return state; }
  public void setDisconnected()         { disconnect(); }
  public void updateString(String aStr) { mInitList.append(aStr, null); }

  public void startWorking3D(boolean aIsSingleMode)
  {
    try {
      if(aIsSingleMode)
      {
        canvas = new Race_Canvas3D(this, false, false);
        display.setCurrent(canvas);
        iTimer.schedule( new MyEnvTimerTask(), 0, 30 ); // Start timer
      }
      else {
        canvas = new Race_Canvas3D(this, true, appIsServer);
        display.setCurrent(canvas);
        talker.remoteSendReady();
      }
    }
    catch (Exception e) {
      System.out.println("ERROR: Race_Main::startWorking3D()" + e); 
    }
  }

  public void startMultiRace()
  {
    iTimer.schedule( new MyEnvTimerTask(), 0, 30 ); // Start timer
  }

  // received over BT, new awatar values
  public void updateAvatarValues(int aPosX, int aPosY, int aRY, int aVx, int aVy)
  {
    canvas.updateAvatar(aPosX, aPosY, aRY, aVx, aVy);
  }

  // received over BT, new awatar values and signal about collision possible
  public void updateOnColisionSignal(int aPosX, int aPosY, int aRY, int aVx, int aVy)
  {
    pauseApp();
    canvas.updateOnColisionSignal(aPosX, aPosY, aRY, aVx, aVy);
    resumeGame();
  }

  // received over BT, new awatar values, new car's speed and colision was confirmed
  public void colisionConfirmed(Vector3D aAvatarPos, int aAwRY,
                                Vector3D aAvatarSpeed, Vector3D aCarSpeed)
  {
    canvas.updateColisionConfirmed(aAvatarPos, aAwRY, aAvatarSpeed, aCarSpeed);
    resumeGame();
  }

  // received over BT, new awatar values and there was no collision
  public void colisionNone(Vector3D aAvatarPos, int aAwRY, Vector3D aAvatarSpeed)
  {
    canvas.updateColisionNone(aAvatarPos, aAwRY, aAvatarSpeed);
    resumeGame();
  }

  //////////////////////////////////////////////////////////////////////////////
  // from BTConectionObserver
  //////////////////////////////////////////////////////////////////////////////
  public void setConnected(L2CAPConnection aConn)
  {
    try {
      System.out.println("setStateConnected called");
      try {
        talker = new BTTalker(this, aConn, appIsServer);
      }
      catch (Exception e) {
        System.out.println(e);
        disconnect();
      }
      state = CONNECT;

      if( appIsServer )
        mInitList.append("Server started", null);
      else
        mInitList.append("Client started", null);

      talker.remoteSendHello();
      System.out.println("setStateConnected return");
    }
    catch (Exception e) {
      System.out.println("ERROR: Race_Main::setConnected()" + e);
    }
  }

  public void createClient(ServiceRecord aRecord)
  {
    try {
      client = new BTClient(this, aRecord);
      client.start();
    }
    catch (Exception e) {
      System.out.println("Exception: createClient " + e);
    }
    System.out.println("Client created");
  }


  //////////////////////////////////////////////////////////////////////////////
  // from CommandListener
  //////////////////////////////////////////////////////////////////////////////
  public void commandAction(Command c, Displayable s)
  {
    if( c.getCommandType() == Command.EXIT )
    {
      try {
        destroyApp(false);
      }
      catch (MIDletStateChangeException ex) {}
      return;
    }
    if( c.getCommandType() == Command.OK )
    {
      if( s == deviceList && deviceList.size() > 0 )
      {
        startClientMode();
        return;
      }
      switch(mListState)
      {
        case LIST_INIT:
          if( mInitList.getSelectedIndex() == 0 )
          {
            startWorking3D(true);
          }
          else {
            fillList(LIST_CONNECTING);
            startBT();
          }
          break;
        case LIST_CONNECTING:
          if( mInitList.getSelectedIndex() == 0 )
          {
            appIsServer = true;
            startServerMode();
          }
          else {
            appIsServer = false;
            display.setCurrent(deviceList);
          }
          break;
      }
      return;
    }       
    if( c.getCommandType() == Command.CANCEL )
    {
      if(mListState == LIST_CONNECTING)
      {
        discoverer = null;
        deviceList = null;
        fillList(LIST_INIT);
      }
      else
        disconnect();
      return;
    }
    if( c.getLabel().equals(CMD_REFRESH) )
    {
      deviceList.deleteAll();
      discoverer.startBluetoothDiscovery();
    }
  }


  //////////////////////////////////////////////////////////////////////////////
  // class MyEnvTimerTask 
  //////////////////////////////////////////////////////////////////////////////
  class MyEnvTimerTask extends TimerTask
  {
    public void run()
    {
      if( canvas != null ) // If Canvas is present...
      {
        try {
          canvas.handleKey();
          canvas.doMove();
          canvas.repaint();
        }
        catch (Exception e) {
          System.out.println("ERROR: Race_Main::repaint()" + e);
        }
      }
    }
  } // end TimerTask

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色狠狠av一区二区三区| 久久婷婷成人综合色| 日韩一区二区三区免费观看| 久久综合色综合88| 亚洲伊人色欲综合网| 青青草国产精品亚洲专区无| 国产在线看一区| 欧美肥妇bbw| 一区二区三区成人| 不卡电影免费在线播放一区| 欧美一级精品大片| 国产精品高潮呻吟久久| 麻豆精品一区二区综合av| 色吧成人激情小说| 国产精品乱码一区二区三区软件 | 欧美影院一区二区| 337p粉嫩大胆噜噜噜噜噜91av | 国产日本一区二区| 裸体一区二区三区| 欧美色图第一页| 亚洲欧美色一区| heyzo一本久久综合| 国产日韩欧美综合在线| 蜜臀av一区二区在线免费观看| 91美女福利视频| 国产精品久久久久久久久免费相片| 激情六月婷婷久久| 欧美成人一区二区三区在线观看| 爽爽淫人综合网网站| 91传媒视频在线播放| 中文字幕欧美一| av成人老司机| |精品福利一区二区三区| 丰满少妇久久久久久久| 国产欧美视频一区二区| 高清国产一区二区三区| 中文字幕免费不卡在线| 国产在线视频不卡二| 久久久久久久综合日本| 国产精品一二一区| 欧美高清在线精品一区| 成人久久视频在线观看| 国产精品的网站| 99精品欧美一区二区三区小说| 国产精品免费av| 99久久精品国产网站| ㊣最新国产の精品bt伙计久久| 91在线精品秘密一区二区| 综合久久国产九一剧情麻豆| 99v久久综合狠狠综合久久| 亚洲精品欧美在线| 欧美日韩成人在线一区| 开心九九激情九九欧美日韩精美视频电影| 日韩一级精品视频在线观看| 麻豆精品在线视频| 欧美精彩视频一区二区三区| 波多野结衣在线aⅴ中文字幕不卡| 亚洲色图一区二区| 欧美人与禽zozo性伦| 极品美女销魂一区二区三区免费 | 亚洲日本护士毛茸茸| 欧美日韩一级视频| 国内精品久久久久影院色| 中文字幕免费观看一区| 欧美日韩国产综合一区二区三区| 日本大胆欧美人术艺术动态| 2020国产精品久久精品美国| 色综合夜色一区| 美女视频黄免费的久久| 亚洲国产精品精华液ab| 在线观看日韩高清av| 韩国v欧美v日本v亚洲v| 亚洲免费在线播放| 精品国产91久久久久久久妲己| 91免费视频大全| 麻豆国产欧美一区二区三区| 国产欧美综合在线观看第十页| 日本精品视频一区二区| 韩国成人精品a∨在线观看| 一区二区在线观看不卡| 26uuu精品一区二区在线观看| 99久久777色| 狠狠色综合色综合网络| 亚洲v日本v欧美v久久精品| 久久久久国产精品人| 欧美伦理影视网| 91蜜桃婷婷狠狠久久综合9色| 男女男精品视频网| 一区二区三区精品在线| 国产日韩欧美在线一区| 精品久久久三级丝袜| 在线观看一区日韩| 97精品视频在线观看自产线路二| 日本视频在线一区| 亚洲午夜激情网站| 亚洲欧美福利一区二区| 国产日韩欧美电影| 欧美精品一区二区三区久久久| 在线观看日韩电影| 色就色 综合激情| 9i在线看片成人免费| 国产一区二区在线看| 免费黄网站欧美| 亚洲资源中文字幕| 亚洲欧美aⅴ...| **性色生活片久久毛片| 欧美国产精品专区| 国产精品少妇自拍| 久久久久久久久久电影| 亚洲精品一区二区三区影院| 91精品国产一区二区| 欧美另类videos死尸| 欧美日韩极品在线观看一区| 91精品国产入口| 日韩视频免费观看高清完整版在线观看| 欧美综合视频在线观看| 日本韩国一区二区| 色婷婷国产精品| 欧洲一区二区三区在线| 欧美性做爰猛烈叫床潮| 在线观看视频一区二区| 欧美色成人综合| 欧美日韩一级片网站| 欧美视频日韩视频在线观看| 欧美亚洲国产一区二区三区va| 欧美色视频在线观看| 欧美日韩国产高清一区二区| 欧美狂野另类xxxxoooo| 日韩一区二区三区在线| 精品国产污网站| 国产日产欧产精品推荐色| 亚洲国产精品ⅴa在线观看| 国产精品欧美久久久久无广告 | 粉嫩高潮美女一区二区三区| 国产suv精品一区二区6| www.在线成人| 91黄色免费观看| 91精品久久久久久久91蜜桃| 欧美电影一区二区| 久久精品一区二区三区不卡 | 亚洲一区二区欧美激情| 日韩精品色哟哟| 国产中文一区二区三区| 97精品久久久午夜一区二区三区 | 国产精品888| 色综合天天综合网国产成人综合天| 91九色最新地址| 欧美成人乱码一区二区三区| 久久久不卡网国产精品二区| 中文字幕亚洲综合久久菠萝蜜| 亚洲成人一区二区| 国产精品综合一区二区三区| 99久久精品国产麻豆演员表| 欧美日韩在线播| 久久久精品影视| 亚洲国产成人av网| 国产成人99久久亚洲综合精品| 日本韩国欧美国产| 久久久久青草大香线综合精品| 一区二区在线观看视频在线观看| 蜜臀av性久久久久av蜜臀妖精 | 国产福利一区二区| 欧美日韩精品一区二区三区| 26uuu亚洲综合色| 亚洲成精国产精品女| 国产美女精品一区二区三区| 日本黄色一区二区| 欧美国产禁国产网站cc| 美腿丝袜亚洲色图| 色综合色综合色综合色综合色综合| 日韩一二三区视频| 一区二区三区四区在线播放| 国内精品国产成人国产三级粉色| 欧美性高清videossexo| 国产欧美一区二区在线观看| 日韩精品欧美成人高清一区二区| 成人国产精品免费网站| 日韩欧美国产电影| 丝袜美腿一区二区三区| 日本福利一区二区| 国产精品麻豆久久久| 精品一区二区三区在线播放视频| 欧美又粗又大又爽| 日韩毛片精品高清免费| 国产传媒一区在线| 国产视频一区在线播放| 日韩高清不卡在线| 欧美军同video69gay| 亚洲少妇中出一区| av成人老司机| 国产精品视频免费| 不卡视频在线看| 日韩一区在线免费观看| 成人一级片在线观看| 久久久久久久综合日本| 狠狠色丁香久久婷婷综合_中| 日韩免费高清视频| 精品一二三四区| 精品少妇一区二区三区免费观看| 免费看精品久久片|