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

📄 a.java

📁 手机游戏的源代码
💻 JAVA
字号:
import javax.microedition.lcdui.*;
import java.util.Random;


public class a {
  public static final boolean PRINT = true;//编译时是否打印
  public static final boolean DEBUG = true;

  public static final int[][] bagSet= {//球袋的坐标 X100倍
      {1500,1500}   //左上袋
      ,{1400,10000} //左中袋
      ,{1500,18500} //左下袋
      ,{13500,1500} //右上袋
      ,{13600,10000}//右中袋
      ,{13500,18500}//右下袋
  };
  public static Ball[] tempBalls = new Ball[16];//可以直接控制的所有球的数组
  public static Ball[] Balls = new Ball[16];//需要间接控制的所有球的数组
  public static final int ballR = 500; //球的半径
  public static final int ballD = 1000; //球的直径
  public static final int ballDD = 1000000; //球的直径的平方
  public static final int w = 15000, h = 20000; //球案的宽和高
  public static final int t=10; //每桢循环的次数
  public static final int SIDE = 1500; //边宽
  public static final int SIDE_UP = 1500,SIDE_RIGHT = 13500,SIDE_DOWN = 18500,SIDE_LEFT = 1500;//上,右,下,左边线的坐标
  public static final byte STYLE_WHITE = 0,STYLE_BLACK = 8, STYLE_SOLID = 1,STYLE_STRIPE = 9;//球的样式
  public static byte[] allBallsID = new byte[]{1,2,3,4, 6,7,8,   9,10,11,12,13,14,15};//所有球的编号
  public static byte[] solidBallsID; //所有实色球的编号
  public static byte[] stripeBallsID;//所有花色球的编号
  public static byte[] blackBallsID = new byte[]{5};//黑球的编号

  public static byte[] playerBallsID;//玩家要打的球的编号
  public static byte[] AIBallsID;//电脑要打的球的编号
  public static final byte KIND_ALL = 0,KIND_SOLID = 1,KIND_STRIPE = 2,KIND_BLACK = 3;//球的种类
  public static byte AIHitBallsKind;//电脑打球的种类,0 未确定,1 实色,2 花色,3 黑球
  public static byte playerHitBallsKind;//玩家打球的种类


  public static Random rnd = new Random();
  public static int ballsState = 0;//0为所有球都静止不动


//-------------------------------AI思考数据------------------------------------------------------
  public static byte curTrackSign;//当前进行监视的球
  public static byte curHitSign;//当前需要碰到的球

  public static boolean think = false;//是否在思想状态

  public static boolean fail = false;//白球在碰到目标之前碰到了其他球
  public static boolean thinkStop = false;//思考停止
  public static boolean thinkEnd = false;//思考结束

  public static boolean whiteBallStop = false;//白球停在球案上
  public static boolean curBallStop = false; //目标球停在球案上
  public static boolean curBallIn = false; //目标球进袋
  public static boolean whiteBallIn = false; //白球进袋


  public static boolean thinkOver = false;//AI思考线程结束标志

  public static boolean haveSet = false;//是否有碰撞坐标
  public static int AIx=0,AIy=0;//在思考状态用到的AI思考碰撞的坐标

  public static int[][] dataLevel;//AI思考的结果[LV][0]是否存在 [LV][1]方向X坐标 [LV][2]方向Y坐标 [LV][3]碰撞X坐标 [LV][4]碰撞Y坐标 [LV][5]力量 [LV][6]球号
  public static byte hitLevel = 3;//等级 0:目标球进袋 1:目标球和白球全进袋 2:白球碰到目标球没进袋 3:白球碰不到目标球

//////////-----------------------------------------

  public static int turn;
  public static boolean firstIn = false;
  public static boolean isPlayerTurn = true;//是否该玩家控制


  /**
   * loadImage
   *
   * @param string String
   * @return Image
   */
  public static final Image loadImage(String path) {
    Image img = null;
    try {
      img = Image.createImage(path);
    }
    catch (Exception ex) {
    }
    return img;
  }

  /**
   * 开平方
   * @param m int
   * @return int
   */
  static public int sqrt(int arg) {
    int i;
    int nprd, msk = 0x8000, val = 0, prd = 0;
    for (i = 15; i >= 0; --i) {
      nprd = prd + (val << (i + 1)) + (msk << i);
      if (nprd <= arg) {
        val |= msk;
        prd = nprd;
      }
      msk >>= 1;
    }
    return (val);
  }
  /**
   * 得到一个随机数
   * @return int
   */
  static public int getRandom(){
    return Math.abs(rnd.nextInt());
  }
  /**
   * 设置球的状态
   * @param i int 球号
   * @param isRunning boolean 是否为动态
   */
  static public void setBallsState(int i,boolean isRunning){
    if(isRunning){
      a.ballsState |= (0x00000001 << i);
    }
    else {
      a.ballsState &= ~ (0x00000001 << i);
    }
  }
  /**
   * 球的移动
   */
  static public void move(){
    for (int i = 0; i < a.t; i++) {
      for (int j = 0; j < a.tempBalls.length; j++) {
        if (a.tempBalls[j].alive)
          a.tempBalls[j].getNextSet();
        }
      for (int j = 0; j < a.tempBalls.length; j++) {
        if (a.tempBalls[j].alive)
          a.tempBalls[j].getNextPost();
      }
      for (int j = 0; j < a.tempBalls.length; j++) {
        if (a.tempBalls[j].alive)
          a.tempBalls[j].moveStep();
      }
    }
    for (int i = 0; i < a.tempBalls.length; i++) {
      if (a.tempBalls[i].alive) {
        a.tempBalls[i].move();
      }
    }
    if(a.think){

    }
  }
  /**
   * 复制所有球的状态
   */
  static public void copyBallsState(){
    a.tempBalls = null;
    System.gc();
    a.tempBalls = new Ball[a.Balls.length];
    for(int i = 0;i<a.Balls.length;i++){
      a.tempBalls[i] = new Ball(a.Balls[i]);
    }
  }
  /**
   * 连接所有球的状态
   */
  static public void linkBallsState(){
    a.tempBalls = a.Balls;
  }
  /**
   * 设置要打的球的种类
   * @param isPlayer boolean 是否为玩家
   * @param kind int 要打的球的种类 0:所有球 1:实色球 2:花色球 3:黑球
   */
  static public void setTargetBalls(boolean isPlayer,int kind){
    if(isPlayer){
      a.playerHitBallsKind = (byte)kind;
    }
    else{
      a.AIHitBallsKind = (byte)kind;
    }
    switch(kind){
      case a.KIND_ALL:
        if(isPlayer) a.playerBallsID = a.allBallsID;
        else a.AIBallsID = a.allBallsID;
        break;
      case a.KIND_SOLID:
        if(isPlayer) a.playerBallsID = a.solidBallsID;
        else a.AIBallsID = a.solidBallsID;
        break;
      case a.KIND_STRIPE:
        if(isPlayer) a.playerBallsID = a.stripeBallsID;
        else a.AIBallsID = a.stripeBallsID;
        break;
      case a.KIND_BLACK:
        if(isPlayer) a.playerBallsID = a.blackBallsID;
        else a.AIBallsID = a.blackBallsID;
        break;
    }
  }
}

⌨️ 快捷键说明

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