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

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

?? snakemodel.java

?? 這是一個眾所皆知且功能普普的貪吃蛇遊戲~~由java所寫的!希望對有興趣的人有幫助!
?? JAVA
字號:
//----------------------------------------------------------------------
// SnakeModel.java
import javax.swing.*;
import java.util.Arrays;
import java.util.LinkedList;
import java.util.Observable;
import java.util.Random;

/**
 * 游戲的Model類,負責所有游戲相關數據及運行
 */
class SnakeModel extends Observable implements Runnable {
    boolean[][] matrix;                         // 指示位置上有沒蛇體或食物
    LinkedList nodeArray = new LinkedList();    // 蛇體
    Node food;
    int maxX;
    int maxY;
    int direction = 2;                          // 蛇運行的方向
    boolean running = false;                    // 運行狀態

    int timeInterval = 200;                     // 時間間隔,毫秒
    double speedChangeRate = 0.75;              // 每次得速度變化率
    boolean paused = false;                     // 暫停標志

    int score = 0;                              // 得分
    int countMove = 0;                          // 吃到食物前移動的次數

    // UP and DOWN should be even
    // RIGHT and LEFT should be odd
    public static final int UP = 2;
    public static final int DOWN = 4;
    public static final int LEFT = 1;
    public static final int RIGHT = 3;

    public SnakeModel( int maxX, int maxY) {
        this.maxX = maxX;
        this.maxY = maxY;

        reset();
    }

    public void reset(){
        direction = SnakeModel.UP;                          // 蛇運行的方向
        timeInterval = 200;                     // 時間間隔,毫秒
        paused = false;                     // 暫停標志
        score = 0;                              // 得分
        countMove = 0;                          // 吃到食物前移動的次數

        // initial matirx, 全部清0
        matrix = new boolean[maxX][];
        for (int i = 0; i < maxX; ++i) {
            matrix[i] = new boolean[maxY];
            Arrays.fill(matrix[i], false);
        }

        // initial the snake
        // 初始化蛇體,如果橫向位置超過20個,長度為10,否則為橫向位置的一半
        int initArrayLength = maxX > 20 ? 10 : maxX / 2;
        nodeArray.clear();
        for (int i = 0; i < initArrayLength; ++i) {
            int x = maxX / 2 + i;
            int y = maxY / 2;
            nodeArray.addLast(new Node(x, y));
            matrix[x][y] = true;
        }

        // 創建食物
        food = createFood();
        matrix[food.x][food.y] = true;
    }

    public void changeDirection(int newDirection) {
        // 改變的方向不能與原來方向同向或反向
        if (direction % 2 != newDirection % 2) {
            direction = newDirection;
        }
    }

    /**
     * 運行一次
     * @return
     */
    public boolean moveOn() {
        Node n = (Node) nodeArray.getFirst();
        int x = n.x;
        int y = n.y;

        // 根據方向增減坐標值
        switch (direction) {
            case UP:
                y--;
                break;
            case DOWN:
                y++;
                break;
            case LEFT:
                x--;
                break;
            case RIGHT:
                x++;
                break;
        }

        // 如果新坐標落在有效范圍內,則進行處理
        if ((0 <= x && x < maxX) && (0 <= y && y < maxY)) {
            if (matrix[x][y]) {             // 如果新坐標的點上有東西(蛇體或者食物)
                if (x == food.x && y == food.y) {       // 吃到食物,成功
                    nodeArray.addFirst(food);           // 從蛇頭贈長

                    // 分數規則,與移動改變方向的次數和速度兩個元素有關
                    int scoreGet = (10000 - 200 * countMove) / timeInterval;
                    score += scoreGet > 0 ? scoreGet : 10;
                    countMove = 0;

                    food = createFood();                // 創建新的食物
                    matrix[food.x][food.y] = true;      // 設置食物所在位置
                    return true;
                } else                                  // 吃到蛇體自身,失敗
                    return false;
            } else {                        // 如果新坐標的點上沒有東西(蛇體),移動蛇體
                nodeArray.addFirst(new Node(x, y));
                matrix[x][y] = true;
                n = (Node) nodeArray.removeLast();
                matrix[n.x][n.y] = false;
                countMove++;
                return true;
            }
        }
        return false;                                   // 觸到邊線,失敗
    }

    public void run() {
        running = true;
        while (running) {
            try {
                Thread.sleep(timeInterval);
            } catch (Exception e) {
                break;
            }

            if (!paused) {
                if (moveOn()) {
                    setChanged();           // Model通知View數據已經更新
                    notifyObservers();
                } else {
                    JOptionPane.showMessageDialog(null,
                            "you failed",
                            "Game Over",
                            JOptionPane.INFORMATION_MESSAGE);
                    break;
                }
            }
        }
        running = false;
    }

    private Node createFood() {
        int x = 0;
        int y = 0;
        // 隨機獲取一個有效區域內的與蛇體和食物不重疊的位置
        do {
            Random r = new Random();
            x = r.nextInt(maxX);
            y = r.nextInt(maxY);
        } while (matrix[x][y]);

        return new Node(x, y);
    }

    public void speedUp() {
        timeInterval *= speedChangeRate;
    }

    public void speedDown() {
        timeInterval /= speedChangeRate;
    }

    public void changePauseState() {
        paused = !paused;
    }

    public String toString() {
        String result = "";
        for (int i = 0; i < nodeArray.size(); ++i) {
            Node n = (Node) nodeArray.get(i);
            result += "[" + n.x + "," + n.y + "]";
        }
        return result;
    }
}

class Node {
    int x;
    int y;

    Node(int x, int y) {
        this.x = x;
        this.y = y;
    }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
成人免费黄色在线| 精品一区二区三区欧美| 亚洲资源中文字幕| 亚洲素人一区二区| 日韩高清不卡一区二区| 国产91富婆露脸刺激对白 | 日本在线不卡一区| 777xxx欧美| 亚洲欧洲国产专区| 久久精品国产一区二区三区免费看| 国产精品77777竹菊影视小说| 色噜噜偷拍精品综合在线| 日韩一级完整毛片| 一区二区三区免费网站| 国产精品影音先锋| 国产精品传媒在线| 国产在线不卡视频| 日韩欧美在线1卡| 粉嫩嫩av羞羞动漫久久久 | 欧美日韩国产经典色站一区二区三区| 久久精品免费在线观看| 日本亚洲电影天堂| 久久久精品国产免大香伊| 日本美女一区二区三区| 久久在线免费观看| 韩国v欧美v亚洲v日本v| 欧美不卡123| 日韩高清中文字幕一区| 久久精品视频在线看| 色哟哟一区二区在线观看| 国产精品久久久久久久蜜臀| 欧美午夜在线观看| 一区二区三区四区激情 | 成人免费视频在线观看| 欧美日韩精品福利| 国产98色在线|日韩| 亚洲福利一二三区| 欧美性大战xxxxx久久久| 久久91精品国产91久久小草| 亚洲裸体xxx| 国产成人综合在线播放| 国产欧美精品一区二区色综合| 国产成人亚洲精品青草天美| 亚洲一级片在线观看| 久久精品视频一区二区| 91精品中文字幕一区二区三区| 成人av网址在线| 国产精品久久久久久久久久免费看| 欧美日韩色综合| 美女视频第一区二区三区免费观看网站| 欧美精品三级日韩久久| 日本v片在线高清不卡在线观看| 日韩一区二区视频在线观看| 91在线播放网址| 亚洲综合一二三区| 国产精品狼人久久影院观看方式| 欧美一区二区三区在线看| 韩国精品在线观看| 亚洲444eee在线观看| 日韩亚洲欧美一区二区三区| 在线免费一区三区| 捆绑紧缚一区二区三区视频| 亚洲国产中文字幕| 一区二区三区四区在线播放| 国产精品灌醉下药二区| 久久影院午夜片一区| 欧美草草影院在线视频| 3d成人动漫网站| 欧美另类z0zxhd电影| 欧美亚洲国产一区二区三区| 一本到三区不卡视频| 97精品电影院| 麻豆精品久久精品色综合| 天使萌一区二区三区免费观看| 精品1区2区在线观看| 91女人视频在线观看| 不卡电影免费在线播放一区| 国产高清亚洲一区| 国v精品久久久网| 豆国产96在线|亚洲| 成人黄色网址在线观看| 成人国产精品免费| aa级大片欧美| 九一九一国产精品| 国内精品自线一区二区三区视频| 蜜桃av一区二区三区| 精品午夜久久福利影院| 欧美日韩视频在线第一区| 91高清视频免费看| 在线免费亚洲电影| 制服丝袜中文字幕亚洲| 精品国产露脸精彩对白| 国产日韩一级二级三级| 综合在线观看色| 亚洲国产精品综合小说图片区| 午夜精品久久久久久久99樱桃 | 欧美性色欧美a在线播放| 欧洲视频一区二区| 欧美一级专区免费大片| 久久伊人中文字幕| 国产精品超碰97尤物18| 亚洲在线视频网站| 另类欧美日韩国产在线| 国产激情偷乱视频一区二区三区| 成人午夜视频免费看| 91黄色小视频| 日韩欧美国产综合在线一区二区三区| 一本久久a久久免费精品不卡| 欧美婷婷六月丁香综合色| 日韩女优电影在线观看| 国产日韩欧美电影| 亚洲福中文字幕伊人影院| 久久精品国产99国产| av电影在线观看完整版一区二区| 色视频一区二区| 欧美成人video| 国产精品美日韩| 中文av字幕一区| 午夜久久久久久久久| 国产成人综合在线观看| 欧美日韩视频专区在线播放| 国产婷婷精品av在线| 亚洲一区二区三区在线| 国产激情精品久久久第一区二区 | 91久久精品一区二区三区| 日韩一二在线观看| 国产盗摄一区二区| 色美美综合视频| 国产欧美日韩另类一区| 午夜久久福利影院| 成人动漫av在线| 欧美va日韩va| 亚洲国产aⅴ成人精品无吗| 高清beeg欧美| 欧美白人最猛性xxxxx69交| 亚洲男人的天堂网| 国产激情视频一区二区三区欧美| 欧美日韩和欧美的一区二区| 国产精品成人在线观看| 理论电影国产精品| 欧美日韩在线观看一区二区| 国产精品美女久久久久高潮| 久热成人在线视频| 欧美午夜免费电影| 椎名由奈av一区二区三区| 国产成人午夜片在线观看高清观看| 欧美日韩国产一区| 夜夜亚洲天天久久| 99热这里都是精品| 亚洲国产精品t66y| 亚洲一区二区视频在线| 北条麻妃一区二区三区| 国产视频一区二区在线| 久国产精品韩国三级视频| 在线播放国产精品二区一二区四区| 最新国产の精品合集bt伙计| 国产999精品久久久久久绿帽| 精品久久久久久久久久久久久久久| 视频一区视频二区在线观看| 在线视频欧美区| 亚洲已满18点击进入久久| 91网址在线看| 亚洲蜜臀av乱码久久精品蜜桃| 粉嫩aⅴ一区二区三区四区五区| 久久久久9999亚洲精品| 国产一区二区电影| 久久久久久久久岛国免费| 狠狠狠色丁香婷婷综合激情| 精品国产伦理网| 国产麻豆精品在线观看| 久久人人爽人人爽| 国产毛片精品国产一区二区三区| 日韩久久精品一区| 黑人巨大精品欧美黑白配亚洲| 精品国精品国产| 国产激情一区二区三区四区| 国产精品免费视频网站| 9l国产精品久久久久麻豆| 自拍偷拍欧美激情| 在线日韩av片| 日本aⅴ免费视频一区二区三区| 制服丝袜在线91| 国产乱子伦一区二区三区国色天香 | 日本午夜一本久久久综合| 6080午夜不卡| 狠狠色丁香久久婷婷综合_中 | 久久精品亚洲精品国产欧美| 国内精品国产成人国产三级粉色 | 欧美性视频一区二区三区| 亚洲第一二三四区| 欧美一区二区视频在线观看| 国产一区二区三区不卡在线观看| 日本一二三四高清不卡| 一本大道久久a久久综合婷婷| 香蕉av福利精品导航| 精品久久人人做人人爰| 成人av第一页| 污片在线观看一区二区| 欧美精品一区在线观看| 91亚洲午夜精品久久久久久|