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

📄 ai.java

📁 一款修改过的手机贪食蛇游戏
💻 JAVA
字号:
/* * Ai.java * * Created on June 19, 2007, 4:06 AM * * To change this template, choose Tools | Template Manager * and open the template in the editor. */package hello;/** * * @author jiabei */public class Ai {        public static final int TABLE_FRUIT = -2;    public static final int TABLE_BLOCK = -1;    public static final int TABLE_FREE = 0;        /** Creates a new instance of Ai */    public Ai() {    }        public static int getDirection(Map map, int snakeNum) {        int [][] table = new int[map.getWidth()] [map.getHeight()];        if (!map.canCollide()) {            for (int i = 0; i < map.getSnakeNum(); i ++) {                Snake snake = map.getCurSnake(i);                for (int j = 0; j < snake.getLength(); j ++) {                    if (map.inBound(snake.getBody(j))) {                        table[snake.getBody(j).getX()][snake.getBody(j).getY()] = TABLE_BLOCK;                    }                }                                    }        }        for (int i = 0; i < map.getFruitNum(); i ++)            table[map.getFruit(i).getPoint().getX()][map.getFruit(i).getPoint().getY()] = TABLE_FRUIT;        int queueLen = map.getWidth() * map.getHeight() + 10;        Point [] queue = new Point[queueLen];        queue[0] = new Point(map.getCurSnake(snakeNum).getHead());        int rear = 0;        int front  = 0;        boolean exit = false;        while (front <= rear && rear < queueLen) {            for (int i = 0; i < 4; i ++) {                Point newPoint = new Point( Snake.keepInRange(queue[front].getX() + Snake.directionOffsetX[i], 0, map.getWidth() - 1),                         Snake.keepInRange(queue[front].getY() + Snake.directionOffsetY[i], 0, map.getHeight() - 1) );                if (table[newPoint.getX()][newPoint.getY()] == TABLE_FRUIT ||                        table[newPoint.getX()][newPoint.getY()] == TABLE_FREE) {                    rear ++;                    if (rear >= queueLen) break;                    if (table[newPoint.getX()][newPoint.getY()] == TABLE_FRUIT) {                        exit = true;                    }                    queue[rear] = newPoint;                    if (front == 0) {                        table[newPoint.getX()][newPoint.getY()] = i + 1;                    } else {                        table[newPoint.getX()][newPoint.getY()] = table[queue[front].getX()][queue[front].getY()];                    }                    if (exit) {                        return table[newPoint.getX()][newPoint.getY()] - 1;                    }                }            }            front ++;        }                                return Fruit.getRandomInt(0, 3);    }    }

⌨️ 快捷键说明

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