j2me实现A*算法尝试(不知道是哪位高人写的,不错) 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] //4方位的移动方式本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] //L.S本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] import java.lang.*;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] import javax.microedition.lcdui.*;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] import java.util.Random;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] import javax.microedition.rms.*;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] import java.io.*;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] import javax.microedition.midlet.*;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] import javax.microedition.lcdui.*;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] import java.lang.Thread;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] public class MainMid extends MIDlet本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] MainPit myScreen;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] boolean first = true;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] public MainMid()本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] myScreen = new MainPit(this);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] protected void destroyApp(boolean unconditional) 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] protected void pauseApp() 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] { 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] protected void startApp() 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] Display.getDisplay(this).setCurrent(myScreen);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] Display.getDisplay(this).setCurrent(myScreen);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(first)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] try本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] Thread myThread = new Thread(myScreen);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] myThread.start();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] catch(Error e)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] destroyApp(false);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] notifyDestroyed();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] first = false;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] //游戏结束本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] public void exit()本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] destroyApp(true);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] notifyDestroyed();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] } 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] class MainPit extends Canvas implements Runnable本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] MainMid myMid;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] //按键表本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private static final byte KEY_NONE = 0;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private static final byte KEY_UP = -1;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private static final byte KEY_DOWN = -2;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private static final byte KEY_LEFT = -3;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private static final byte KEY_RIGHT = -4;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private static final byte KEY_FIRE = -5;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private static final byte KEY_GAM_LEFT = -6;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private static final byte KEY_GAM_RIGHT = -7;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private int hangfire = 300;//延时大小本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] Graphics gb;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] // private Image bufImg;//缓存本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] //屏幕大小本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private int nWidth;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private int nHeight;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] public MainPit(MainMid mid)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] myMid = mid;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] nWidth = getWidth();//屏幕大小本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] nHeight = getHeight();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] cw = nWidth / 10;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] ch = nHeight / 10;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] // try{本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] // bufImg = Image.createImage(nWidth,nHeight);//申请缓存空间本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] // gb = bufImg.getGraphics();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] // }catch(Exception e){}本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] public void paint(Graphics g)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] gb = g;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] void showBegin()本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] gb.setColor(0x0000ff00);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] gb.fillArc(begin_x * cw, begin_y * ch, cw, ch, 0, 360);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] int state = 0;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] public void run()本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] while(true)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] switch(state)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] case 0:本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] showMap();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] showCursor();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] break;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] case 1:本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] showMap();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] showBegin();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] showCursor();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] break;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] case 2:本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] showMap();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] showBegin();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] showfather(end_x, end_y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] showCursor();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] break;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] repaint();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] serviceRepaints();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] try{本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] Thread.sleep(hangfire);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] System.gc();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] Thread.yield();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }catch(Exception e){}本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] int cx,cy;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private void showCursor()本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] gb.setColor(0x000000ff);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] gb.drawRect(cx * cw+2,cy*ch+2,cw-4,ch-4);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] int cw,ch;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private void showMap()本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] clearScreen(0x00ffffff);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] for(int i =0 ; i < 10; i++){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] for(int j = 0; j < 10; j++){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(moveSpace[j]==1){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] gb.setColor(0x00000000);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] gb.drawRect(j * cw, i * ch, cw, ch);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] else{本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] gb.setColor(0x00000000);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] gb.fillRect(j * cw, i * ch, cw, ch);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private void clearScreen(int c)//用颜色c刷新屏幕本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] gb.setColor(c);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] gb.fillRect(0,0,nWidth,nHeight);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] public void keyPressed(int keyCode)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] switch(keyCode)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] case KEY_UP:本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(cy>0)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] cy--;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] break;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] case KEY_DOWN:本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(cy <9)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] cy++;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] break;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] case KEY_LEFT:本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(cx > 0)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] cx--;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] break;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] case KEY_RIGHT:本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(cx < 9)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] cx++;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] break;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] case KEY_FIRE:本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] case KEY_GAM_LEFT:本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] switch(state)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] case 0:本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] begin_x = cx;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] begin_y = cy;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] state = 1;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] break;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] case 1:本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] end_x = cx;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] end_y = cy;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] AAsterisk();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] state = 2;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] break;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] case 2:本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] state = 0;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] break;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] break;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] case KEY_GAM_RIGHT:本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] state = 0;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] break;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private int moveSpace[][] = {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {1,1,1,1,1,1,1,1,1,1},本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {1,1,1,1,1,1,1,1,1,1},本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {1,1,1,1,1,1,1,1,1,1},本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {1,1,255,255,255,1,1,1,1,1},本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {1,255,1,1,1,1,1,1,1,1},本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {1,255,1,1,1,1,1,1,1,1},本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {255,255,255,1,1,1,1,1,1,1},本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {1,1,255,1,1,1,1,1,1,1},本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {1,1,1,1,1,1,1,1,1,1},本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {1,1,255,1,1,1,1,1,1,1}本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] };本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private int openList[][] = new int[100][2];本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private int closeList[][] = new int[100][2];本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private int mapInfo[][][] = new int[10][10][6];本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private int openListLength = 0;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] private int closeListLength = 0;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] int begin_x = 0;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] int begin_y = 9;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] int end_x = 0;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] int end_y = 0;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] void addInOpenList(int x, int y)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] openList[openListLength][0] = x;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] openList[openListLength][1] = y;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] openListLength++;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] void addInCloseList(int x, int y)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] closeList[closeListLength][0] = x;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] closeList[closeListLength][1] = y;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] closeListLength++;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] void removeFromOpenList(int x, int y)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] for(int i = 0; i < openListLength; i++){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(openList[0] == x&&openList[1] == y){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] openListLength--;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] for(int j = i; j < openListLength; j++){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] for(int k = 0; k < 2; k++){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] openList[j][k] = openList[j+1][k];本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] openList[openListLength][0] = 0;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] openList[openListLength][0] = 1;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] break;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] boolean isInOpenList(int x, int y)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] for(int i = 0; i < openListLength; i++){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(openList[0] == x&&openList[1] == y){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] return true;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] return false;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] boolean isInCloseList(int x, int y)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] for(int i = 0; i < closeListLength; i++){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(closeList[0] == x&&closeList[1] == y){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] return true;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] return false;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] void setFather(int x, int y, int fx, int fy)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] mapInfo[y][x][0] = fx;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] mapInfo[y][x][1] = fy;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] int getH(int x, int y)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] return Math.abs(x - end_x) + Math.abs(y - end_y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] int getG(int x, int y)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] return mapInfo[mapInfo[y][x][1]][mapInfo[y][x][0]][2] + mapInfo[y][x][5];本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] int getF(int x, int y)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] return mapInfo[y][x][2]+mapInfo[y][x][3];本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] void getGHF(int x, int y)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] mapInfo[y][x][2] = getG(x,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] mapInfo[y][x][3] = getH(x,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] mapInfo[y][x][4] = getF(x,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] boolean isBalk(int x, int y)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(x < 0||x >=10||y < 0||y >=10){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] return true;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(mapInfo[y][x][5] >= 100){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] return true;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] return false;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] int theMinFInOpenList()本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] int min = 100;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] int index = -1;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] for(int i = 0; i < openListLength; i++){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(min > mapInfo[openList[1]][openList[0]][4]){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] min = mapInfo[openList[1]][openList[0]][4];本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] index = i;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] return index;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] void AAsterisk()本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] closeListLength = 0;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] openListLength = 0;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] for(int i = 0; i < 10; i++){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] for(int j = 0; j < 10; j++){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] mapInfo[j][5] = moveSpace[j];本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] mapInfo[j][0] = j;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] mapInfo[j][1] = i;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] mapInfo[j][2] = Math.abs(i - begin_y) + Math.abs(j - begin_x);;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] mapInfo[j][3] = Math.abs(i - end_y) + Math.abs(j - end_x);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] mapInfo[j][4] = 100;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] mapInfo[begin_y][begin_x][2] = 0;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] addInCloseList(begin_x,begin_y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] //System.out.println(begin_x+" "+begin_y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] //System.out.println("0");本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(!isBalk(begin_x + 1,begin_y)){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] addInOpenList(begin_x + 1,begin_y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] setFather(begin_x + 1,begin_y,begin_x,begin_y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] getGHF(begin_x + 1,begin_y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] //System.out.println("1");本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(!isBalk(begin_x - 1,begin_y)){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] addInOpenList(begin_x - 1,begin_y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] setFather(begin_x - 1,begin_y,begin_x,begin_y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] getGHF(begin_x - 1,begin_y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] //System.out.println("2");本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(!isBalk(begin_x,begin_y + 1)){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] addInOpenList(begin_x,begin_y + 1);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] setFather(begin_x,begin_y + 1,begin_x,begin_y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] getGHF(begin_x,begin_y + 1);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] //System.out.println("3");本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(!isBalk(begin_x,begin_y - 1)){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] addInOpenList(begin_x,begin_y - 1);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] setFather(begin_x,begin_y - 1,begin_x,begin_y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] getGHF(begin_x,begin_y - 1);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] AAsterisk_t();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] void AAsterisk_t()本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] int minIndex;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] int x, y;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] minIndex = theMinFInOpenList();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(minIndex == -1){return;}本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] x = openList[minIndex][0];本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] y = openList[minIndex][1];本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] addInCloseList(x,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] removeFromOpenList(x,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(!isBalk(x + 1,y)){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(!isInCloseList(x + 1,y)){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(isInOpenList(x + 1,y)){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(mapInfo[y][x + 1][2] > getG(x + 1,y)+mapInfo[y][x + 1][5]){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] setFather(x + 1,y,x,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] getGHF(x + 1,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] else{本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] addInOpenList(x + 1,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] setFather(x + 1,y,x,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(x + 1 == end_x&&y == end_y){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] return;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] getGHF(x + 1,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(!isBalk(x - 1,y)){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(!isInCloseList(x-1,y)){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(isInOpenList(x-1,y)){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(mapInfo[y][x-1][2] > getG(x-1,y)+mapInfo[y][x][5]){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] setFather(x-1,y,x,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] getGHF(x-1,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] else{本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] addInOpenList(x-1,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] setFather(x-1,y,x,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(x - 1 == end_x&& y == end_y){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] return;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] getGHF(x-1,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(!isBalk(x,y+1)){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(!isInCloseList(x,y+1)){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(isInOpenList(x,y+1)){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(mapInfo[y+1][x][2] > getG(x,y+1) +mapInfo[y+1][x][5]){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] setFather(x,y+1,x,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] getGHF(x,y+1);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] else{本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] addInOpenList(x,y+1);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] setFather(x,y+1,x,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(x == end_x&&y + 1 == end_y){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] return;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] getGHF(x,y+1);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(!isBalk(x,y-1)){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(!isInCloseList(x,y-1)){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(isInOpenList(x,y-1)){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(mapInfo[y-1][x][2] >getG(x,y-1)+mapInfo[y-1][x][5]){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] setFather(x,y-1,x,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] getGHF(x,y-1);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] else{本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] addInOpenList(x,y-1);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] setFather(x,y-1,x,y);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(x == end_x&& y - 1== end_y){本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] return;本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] getGHF(x,y-1);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] AAsterisk_t();本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] void showfather(int x, int y)本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] {本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] if(x == begin_x&&y == begin_y){System.out.println();return;}本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] System.out.print("("+mapInfo[y][x][0]+","+mapInfo[y][x][1]+")");本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] int fx = mapInfo[y][x][0];本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] int fy = mapInfo[y][x][1];本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] gb.setColor(0x00ff0000);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] gb.fillArc(fx * cw, fy * ch, cw,ch, 0, 360);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] showfather(mapInfo[y][x][0],mapInfo[y][x][1]);本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] }本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] 本帖子来源于无线论坛[http://www.j2me.com.cn/bbs] } |
j2me实现A*算法尝试
最新推荐文章于 2025-04-16 22:22:35 发布