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

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

?? main.java

?? 手機游戲的源代碼
?? JAVA
字號:
import javax.microedition.lcdui.*;
import java.util.Vector;
import com.nokia.mid.ui.FullCanvas;
//
//
//
public class Main extends FullCanvas implements CommandListener,Runnable {
//public class Main extends Canvas implements CommandListener,Runnable {

  public static final byte
      STATE_GAME_AIM = 0,
      STATE_GAME_FORCE = 1,
      STATE_GAME_RUNNING = 2,
      STATE_GAME_AITHINK = 3;
  public byte gameState = STATE_GAME_AIM;//游戲狀態

  Image backImage,whiteBallImage,redBallImage,blueBallImage,blackBallImage;
  Thread self;
  long MILLIS_PER_TICK =50;

  int post;//玩家方向坐標點的位置
  int x ,y; //玩家選擇的方向點的坐標
  public int force;//力量,開始最少為100
  byte flag = 0;//按鍵標志
  boolean forceUp;//力量條上升
  public static AI ai = new AI();

//  Vector v = new Vector();

  public m myMIDlet;
  public Main(m M) {
    myMIDlet = M;
    init();
    newGame();
  }

  public void init(){
    backImage = a.loadImage("/table.png");
    whiteBallImage = a.loadImage("/whiteball.png");
    redBallImage = a.loadImage("/redball.png");
    blueBallImage = a.loadImage("/blueball.png");
    blackBallImage = a.loadImage("/blackball.png");
  }
  public void newGame(){
    a.turn = 0;
    flag = 0;
    post = 75;
    force = 100;
    a.firstIn = false;
    a.isPlayerTurn = true;
    postToXY();
    formatBalls();
    a.linkBallsState();

    a.setTargetBalls(true,a.KIND_ALL);
    a.setTargetBalls(false,a.KIND_ALL);
  }


  public void commandAction(Command command, Displayable displayable) {
  }
  public void run() {
    final Thread currentThread = Thread.currentThread();
    while (currentThread == self) {
      try {
        long time = System.currentTimeMillis();
        if (isShown()) {
          repaint(); //所有游戲的繪制和邏輯均在里面實現
          serviceRepaints(); //寫屏
        }
        time = System.currentTimeMillis() - time;
        if (time < MILLIS_PER_TICK) {
          synchronized (this) {
            wait(MILLIS_PER_TICK - time); //使每個周期大致相等
          }
        }
        else {
          currentThread.yield(); //讓出控制權,防止餓死其它線程
        }
      }
      catch (Exception ex) {}
    }
  }
  /**
   * 線程開始
   */
  synchronized public void begin() {
    self = new Thread(this);
    self.start();
  }
  /**
   * 線程中斷
   */
  synchronized public void stop() {
    self = null;
  }

  protected void paint(Graphics g) {
    gameRun();
    switch(getGameState()){
      case STATE_GAME_AIM:
        drawBalls(g);
        this.drawLine(g);
        g.setColor(0xffff00);
        g.fillRect(151,9,12,162);
        break;
      case STATE_GAME_AITHINK:
        drawBalls(g);
        g.setColor(0xffff00);
        g.fillRect(151,9,12,162);
        g.setColor((int)System.currentTimeMillis());
        if(a.thinkOver)
          g.drawString("AI思考結束,按5鍵繼續",30,2,20);
        else
          g.drawString("AI思考",30,2,20);

        break;
      case STATE_GAME_RUNNING:
        drawBalls(g);
        break;
      case STATE_GAME_FORCE:
        drawForce(g);
        break;
    }
  }
  /**
   * 畫球
   * @param g Graphics
   */
  private void drawBalls(Graphics g){
    g.drawImage(backImage, 0, 0, 20);
    for (int i = 0; i < a.Balls.length; i++) {
      if (a.Balls[i].alive || a.Balls[i].onBag) {
        switch (a.Balls[i].style) {
          case 0:
            a.Balls[i].drawBall(g, whiteBallImage);
            break;
          case 8:
            a.Balls[i].drawBall(g, blackBallImage);
            break;
          case 1:
              a.Balls[i].drawBall(g, redBallImage);
            break;
          case 9:
              a.Balls[i].drawBall(g, blueBallImage);
            break;
        }
      }
    }
  }
  /**
   * 畫力量條
   * @param g Graphics
   */
  private void drawForce(Graphics g){
    g.setColor(0xffff00);
    g.fillRect(151,9,12,162);
    g.setColor(0xff0000);
    g.fillRect(152,170-force/100*8,10,force/100*8);
  }

  protected void keyPressed(int keyCode) {
    switch(keyCode){
      case Canvas.KEY_NUM5:
      case -5:
        flag = 5;
        break;
      case Canvas.KEY_NUM7:
        flag = 7;
        break;
      case -7:
        myMIDlet.exitMIDlet();
    }
    switch(getGameAction(keyCode)){
      case Canvas.LEFT:
        flag = 1;
        break;
      case Canvas.RIGHT:
        flag = 2;
        break;
      case Canvas.UP:
        flag = 3;
        break;
      case Canvas.DOWN:
        flag = 4;
        break;
    }
  }

  protected void keyReleased(int keyCode) {
    flag = 0;
  }
  /**
   * 游戲邏輯計算
   */
  private void gameRun() {
    switch (getGameState()) {
      case STATE_GAME_AIM:
        playerAim();
        break;
      case STATE_GAME_AITHINK:
        computerAim();
        break;
      case STATE_GAME_FORCE:
        selectForce();
        break;
      case STATE_GAME_RUNNING:
        ballsMove();
        break;
    }
  }
  /**
   * post坐標轉成X,Y坐標
   */
  public void postToXY(){
    if(post>=0&&post<150){
      x=post;y=0;
    }
    else if(post>=150&&post<350){
      x=150;y=post-150;
    }
    else if(post>=350&&post<500){
      x=500-post;y=200;
    }
    else if(post>=500&&post<700){
      x=0;y=700-post;
    }
  }
  /**
   * 初始化所有球
   */
  public void formatBalls(){
    a.solidBallsID = new byte[7];
    a.stripeBallsID = new byte[7];
    a.Balls[0] = new Ball(75,180, 0,a.STYLE_WHITE);
    a.Balls[1] = new Ball(75, 80, 1,a.STYLE_SOLID);
    a.Balls[5] = new Ball(75, 62, 5,a.STYLE_BLACK);
    setupBalls(new int[]{2,3},new int[][]{{70,71,1},{80,71,9}});
    setupBalls(new int[]{4,6},new int[][]{{65,62,9},{85,62,1}});
    setupBalls(new int[]{7,8,9,10},new int[][]{{60, 53,1},{70, 53,9},{80, 53,1},{90, 53,9}});
    setupBalls(new int[]{11,12,13,14,15},new int[][]{{55, 44,9},{65, 44,9},{75, 44,1},{85, 44,9},{95, 44,1}});
    int m = 0,n = 0;
    for(int i = 0; i<16; i++){
      if(a.Balls[i].style == a.STYLE_WHITE || a.Balls[i].style == a.STYLE_BLACK){
        continue;
      }
      if(a.Balls[i].style<8){
        a.solidBallsID[m] = a.Balls[i].arraySign;
        m++;
      }
      else{
        a.stripeBallsID[n] =a.Balls[i].arraySign;
        n++;
      }
    }
  }
  /**
   * 隨機放置球的序號
   * @param order int[]
   * @param data int[][]
   */
  private void setupBalls(int[] order,int[][] data){
    Vector v = new Vector();
    for(int i = 0;i<data.length;i++){
      v.addElement(data[i]);
    }
    for(int i = 0;i<order.length;i++){
      int temp = a.getRandom()%v.size();
      int[] tempData = (int[])(v.elementAt(temp));
      a.Balls[order[i]] = new Ball(tempData[0],tempData[1],order[i],tempData[2]);
      v.removeElementAt(temp);
    }
  }
  /**
   * 設置游戲狀態
   * @param s byte 狀態號
   */
  private void setGameState(byte s){
    gameState = s;
    switch(s){
      case STATE_GAME_AIM:
        a.isPlayerTurn = true;
        break;
      case STATE_GAME_AITHINK:
        a.isPlayerTurn = false;
        a.think = true;
        ai.begin();
        break;
      case STATE_GAME_RUNNING:
        a.think = false;
        break;
    }
  }
  /**
   * 返回游戲狀態
   * @return byte
   */
  private byte getGameState(){
    return gameState;
  }

  /**
   * 畫瞄準線
   */
  private void drawLine(Graphics g){
    int x2 = a.tempBalls[0].x,
        y2 = a.tempBalls[0].y;
    int x1=0,y1=0;
    int x3=0,y3=0;
    int x = this.x*100,
        y = this.y*100;
    byte lineState = 0;
    boolean haveReturn = true;
    boolean isOK = false;
    int l = a.sqrt((x2-x)*(x2-x)+(y2-y)*(y2-y));
    int vx = (x-x2)*10000/l,
        vy = (y-y2)*10000/l;
    if(post >=0 && post<150){
      lineState = 0;
    }
    else if(post>=150 && post<350){
      lineState = 1;
    }
    else if(post>=350 && post<500){
      lineState = 2;
    }
    else if(post>=500 && post<700){
      lineState = 3;
    }
    while(!isOK){
      switch(lineState){
        case 0:
          y1=a.SIDE;
          x1=(y1-y)*(x2-x)/(y2-y)+x;
          isOK = true;
          if(x1<=1960 || x1>=13040){
            haveReturn = false;
          }
          else{
            haveReturn = true;
          }
          if(x1<a.SIDE){
            lineState = 3;
            isOK = false;
          }
          else if(x1>a.w-a.SIDE){
            lineState = 1;
            isOK = false;
          }
          break;
        case 1:
          x1=a.w-a.SIDE;
          y1=(y2-y)*(x1-x)/(x2-x)+y;
          isOK = true;
          if((y1>=9134&&y1<=10866)||y1<=1960||y1>=18040){
            haveReturn = false;
          }
          else {
            haveReturn = true;
          }
          if(y1<a.SIDE){
            lineState = 0;
            isOK = false;
          }
          else if(y1>a.h-a.SIDE){
            lineState = 2;
            isOK = false;
          }
          break;
        case 2:
          y1=a.h-a.SIDE;
          x1=(y1-y)*(x2-x)/(y2-y)+x;
          isOK = true;
          if(x1<=1960 || x1>=13040){
            haveReturn = false;
          }
          else{
            haveReturn = true;
          }
          if(x1<a.SIDE){
            lineState = 3;
            isOK = false;
          }
          else if(x1>a.w-a.SIDE){
            lineState = 1;
            isOK = false;
          }
          break;
        case 3:
          x1 = a.SIDE;
          y1=(y2-y)*(x1-x)/(x2-x)+y;
          isOK = true;
          if((y1>=9134&&y1<=10866)||y1<=1960||y1>=18040){
            haveReturn = false;
          }
          else {
            haveReturn = true;
          }
          if(y1<a.SIDE){
            lineState = 0;
            isOK = false;
          }
          else if(y1>a.h-a.SIDE){
            lineState = 2;
            isOK = false;
          }
          break;
      }
    }
    if(haveReturn){
      switch (lineState) {
        case 0:
        case 2:
          x3 = x1 + 12 * vx / 100;
          y3 = y1 - 12 * vy / 100;
          break;
        case 1:
        case 3:
          x3 = x1 - 12 * vx / 100;
          y3 = y1 + 12 * vy / 100;
          break;
      }
    }
    x1/=100;x2/=100;x3/=100;y1/=100;y2/=100;y3/=100;
    g.setColor(0xffffff);
    g.drawLine(x2,y2,x1,y1);
    if(haveReturn){
      g.setColor(0xffff00);
      g.drawLine(x3, y3, x1, y1);
    }
  }
  /**
   * 玩家瞄準
   */
  private void playerAim() {
    switch (flag) {
      case 0:
        break;
      case 1:
        post -= 2;
        if (post < 0) {
          post += 700;
        }
        postToXY();
        break;
      case 2:
        post += 2;
        if (post >= 700) {
          post -= 700;
        }
        postToXY();
        break;
      case 4:
        post += 50;
        if (post >= 700) {
          post -= 700;
        }
        postToXY();
        flag = 0;
        break;
      case 3:
        post -= 50;
        if (post < 0) {
          post += 700;
        }
        postToXY();
        flag = 0;
        break;
      case 5:
        setGameState(STATE_GAME_FORCE);
        force = 0;
        forceUp = true;
        flag = 0;
        break;
    }
  }
  /**
   * 電腦瞄準
   */
  private void computerAim() {
    if(a.thinkOver && flag == 5){
      a.linkBallsState();
      a.Balls[0].onHit(a.dataLevel[a.hitLevel][5],a.dataLevel[a.hitLevel][1],a.dataLevel[a.hitLevel][2]);
      setGameState(STATE_GAME_RUNNING);
      a.thinkOver = false;
      System.gc();
    }
    if(a.PRINT){ if(a.thinkOver && flag == 7)  System.out.println("球:"+a.dataLevel[a.hitLevel][6]+"  LV:"+a.hitLevel +"  回合:"+a.turn);}

  }
  /**
   * 選擇力量條
   */
  private void selectForce(){
    if (forceUp) {
      if(force<1200)
        force += 50;
      else
        force += 80;
      if(force == 2000){
        forceUp = false;
      }
    }
    else{
      if(force>1200)
        force -= 80;
      else
        force -= 50;
      if(force == 100){
        forceUp = true;
      }
    }
    if (flag == 5) {
      a.tempBalls[0].onHit(force, x * 100, y * 100);//!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
      setGameState(STATE_GAME_RUNNING);
    }
    else if(flag == 7){
      setGameState(STATE_GAME_AIM);
      force = 0;
    }
  }
  /**
   * 球的移動
   */
  private void ballsMove(){
    a.move();
    if (a.ballsState == 0) { //移動完成
      if(!a.isPlayerTurn){
        setGameState(STATE_GAME_AIM);
        a.turn ++;


      }
      else{
        setGameState(STATE_GAME_AITHINK);
      }
      if (!a.tempBalls[0].alive) {
        a.tempBalls[0] = null;
        a.tempBalls[0] = new Ball(80, 180, 0,0);
      }
    }
  }



}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本一区免费视频| 国产乱码精品一区二区三| 蜜乳av一区二区| 成人午夜激情片| 欧美一二三区精品| 亚洲美女少妇撒尿| 国产高清亚洲一区| 欧美一级艳片视频免费观看| 亚洲欧美一区二区在线观看| 久久精品国产亚洲高清剧情介绍| 色婷婷综合激情| 国产免费成人在线视频| 美日韩一级片在线观看| 欧美日韩亚洲综合在线 | 亚洲美女视频在线| 国产精品亚洲人在线观看| 91精品国产综合久久久蜜臀粉嫩| 一区二区成人在线视频 | 国产在线精品免费| 91精品国产综合久久精品麻豆| 亚洲激情在线播放| 99久久国产综合精品色伊| 久久精品亚洲精品国产欧美| 久久国产精品露脸对白| 日韩你懂的电影在线观看| 亚洲电影激情视频网站| 91福利在线看| 亚洲线精品一区二区三区八戒| 91在线视频观看| 一区二区三区欧美日| 色综合天天综合网天天狠天天 | 日韩欧美另类在线| 丝瓜av网站精品一区二区| 欧美日韩亚洲另类| 日韩高清欧美激情| 欧美日韩免费视频| 男男视频亚洲欧美| 日韩一级欧美一级| 极品美女销魂一区二区三区免费| 久久久91精品国产一区二区三区| 国产一区二区三区在线观看免费视频| 日韩欧美一区二区不卡| 狠狠久久亚洲欧美| 久久久久成人黄色影片| 成人免费高清视频| 亚洲裸体xxx| 欧美视频一二三区| 麻豆专区一区二区三区四区五区| 精品国产人成亚洲区| 国产91精品入口| 亚洲精品免费视频| 欧美理论电影在线| 精彩视频一区二区三区| 国产精品日韩精品欧美在线| 97久久精品人人做人人爽50路 | 亚洲一区二区精品视频| 亚洲天堂成人在线观看| 91麻豆福利精品推荐| 亚洲综合色区另类av| 欧美一区二区播放| 成人一区在线看| 亚洲一区免费观看| 精品国产百合女同互慰| av一区二区久久| 亚洲国产婷婷综合在线精品| 精品卡一卡二卡三卡四在线| www.性欧美| 蜜臀av一区二区在线观看| 国产精品久久久久久久久免费桃花 | 91在线观看一区二区| 视频在线在亚洲| 中文字幕第一区第二区| 欧美精品第一页| 成人精品高清在线| 天天影视网天天综合色在线播放| 久久久久久久久久久久久夜| 色综合久久久久综合体| 精品一区精品二区高清| 亚洲少妇中出一区| 欧美精品一区男女天堂| 色播五月激情综合网| 国产一区二区三区免费看| 亚洲综合在线免费观看| 国产欧美日韩三区| 欧美一卡二卡在线观看| 91久久线看在观草草青青| 国产精品一区二区在线播放| 亚洲大片精品永久免费| 国产精品国产三级国产aⅴ原创| 精品久久一区二区三区| 欧美日韩国产一区| 在线日韩国产精品| 成人免费毛片app| 国产一区三区三区| 久草热8精品视频在线观看| 亚洲国产wwwccc36天堂| 亚洲日本护士毛茸茸| 国产欧美日韩综合精品一区二区| 日韩欧美国产综合| 欧美理论片在线| 欧美三级资源在线| 91福利国产成人精品照片| 成人激情综合网站| 国产盗摄一区二区| 国产另类ts人妖一区二区| 精品中文字幕一区二区小辣椒| 性久久久久久久| 午夜电影久久久| 五月天久久比比资源色| 亚洲成人精品影院| 三级在线观看一区二区| 亚洲午夜一区二区三区| 亚洲电影一级黄| 日韩**一区毛片| 日韩av一级片| 麻豆91在线观看| 精品综合久久久久久8888| 国产永久精品大片wwwapp| 国产精品中文字幕日韩精品| 精品一区二区久久| 国产福利一区在线观看| 丰满亚洲少妇av| 99re66热这里只有精品3直播| av电影在线观看一区| 色综合一个色综合| 欧美日韩一区在线观看| 欧美一卡二卡在线| www国产精品av| 国产亚洲欧美日韩俺去了| 亚洲国产精华液网站w| 国产精品人人做人人爽人人添 | 久久婷婷成人综合色| 久久久国产午夜精品| 国产精品久久久久久久蜜臀| 亚洲激情自拍视频| 免费在线观看精品| 国产精品资源在线| 91在线观看视频| 91精品一区二区三区在线观看| 精品国产一区二区在线观看| 国产午夜精品美女毛片视频| 成人欧美一区二区三区小说| 亚洲超丰满肉感bbw| 久久不见久久见免费视频1| 国产传媒日韩欧美成人| 91丝袜呻吟高潮美腿白嫩在线观看| 在线观看不卡一区| 久久久久久久久久久久久女国产乱| 中文字幕一区二区三区精华液| 亚洲一本大道在线| 国产一区二区三区精品视频| 日本韩国一区二区三区视频| 日韩一区二区电影在线| 亚洲欧美怡红院| 激情久久五月天| 91成人免费在线视频| 久久久噜噜噜久噜久久综合| 亚洲精品日日夜夜| 国产一区二区0| 欧美精品一级二级三级| 国产精品区一区二区三| 日本伊人午夜精品| 一本久久a久久精品亚洲| 日韩精品在线一区| 亚洲一区二区三区四区在线观看 | 亚洲综合在线视频| 国产成人免费网站| 欧美日韩高清一区二区| 国产欧美日韩精品一区| 日韩精品色哟哟| 一本色道久久加勒比精品| 久久精品一区蜜桃臀影院| 视频一区在线视频| 91视频91自| 国产午夜精品久久| 精品亚洲porn| 日韩一区二区三区av| **欧美大码日韩| 国产成人av一区二区三区在线 | 中文字幕一区二区三区乱码在线 | 亚洲人成小说网站色在线| 韩日av一区二区| 宅男在线国产精品| 亚洲一区二区五区| 日本久久电影网| 日韩伦理电影网| 国产91丝袜在线18| 亚洲激情男女视频| 99久久99久久精品免费看蜜桃| 精品国产免费人成在线观看| 亚洲一卡二卡三卡四卡| 99国产精品久| 国产精品久久久久久妇女6080 | 久久99国产精品成人| 91精品在线观看入口| 首页国产丝袜综合| 91精品国产福利在线观看| 日韩av一区二区三区四区| 制服丝袜av成人在线看| 美洲天堂一区二卡三卡四卡视频|