?? a.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 + -