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

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

?? blockview.java

?? 一個完全實現的掃雷程序
?? JAVA
字號:
package mine.view;

import java.util.*;
import java.awt.event.*;
import mine.listener.*;
import mine.model.*;
//問題修正說明
//在發布javamine 1。0時,該類從JLabel 繼承只為了使用setIcon,造成打開大幅畫面緩慢
//性能的瓶頸在于jlable太大了,而不僅在于我使用了遞歸算法
public class BlockView
    extends ImagePanel
    implements Observer {
    private int xx; //提供此參數是因為當沒有M 時仍可以創建視圖
    private int yy;
    private boolean mousebutton1 = false; //為了測試鼠標事件
    private boolean mousebutton2 = false;
    private boolean mousebuttonPress1 = false;
    private boolean mousebuttonPress2 = false;
    private boolean mousebuttonRelease1=false;
    private boolean mousebuttonRelease2=false;
    public static final int blocksize = 16;
    private Set gameMouselistenerS = new HashSet();
    private ImageFactory imageFactory = ImageFactory.getInstance();
    private BlockModel blockModel;
    public int getBlockSize() {
        return blocksize;
    }

    public BlockView(BlockModel block) {
        super();
        this.blockModel = block;
        xx = block.getXPos();
        yy = block.getYPos();
        baseinit(xx, yy);
        mouseListenerinit();

    }

    public BlockView(int x, int y) {
        super();
        xx = x;
        yy = y;
        baseinit(xx, yy);
        mouseListenerinit();
    }

    public void update(Observable observable, Object object) {

        if (blockModel.isOpened()) { //開啟
            openblock();
            blockModel.setOpened(true);
        }
        else {
            if (blockModel.getMark() == BlockModel.UnopenMark) {
                if (blockModel.isdown()) {
                    this.setIcon(imageFactory.getImageicon(0));
                }
                else {
                    this.setIcon(imageFactory.getImageicon(BlockModel.
                        UnopenMark));
                }
            }
            else {
                this.setIcon(imageFactory.getImageicon(blockModel.getMark()));
            }
        }
    }

    private void openblock() {
        if (blockModel.isMine()) { //是雷?
            if (blockModel.isOnmine()) {
                this.setIcon(imageFactory.getImageicon(12)); //踩雷了;
            }
            else {
                this.setIcon(imageFactory.getImageicon(11)); //正常雷的顯示
            }
        }
        else { //是數字
            if (blockModel.isWrongMineOpinion()) {
                this.setIcon(imageFactory.getImageicon(15)); //錯誤判斷;
            }
            else {
                this.setIcon(imageFactory.getImageicon(blockModel.getNumber()));
            }
        }
    }

    public void setModel(BlockModel bm) {
        blockModel = bm;
        bm.addObserver(this);

    }

    public void removeModel() {
        blockModel.deleteObserver(this);
        blockModel = null;

    }

    private void baseinit(int xx, int yy) {
        this.setIcon(imageFactory.getImageicon(9));
//        this.setBorder(BorderFactory.createRaisedBevelBorder());
        this.setBounds(xx * blocksize, yy * blocksize, blocksize, blocksize);
    }

    private void notifyMouseEvent(GameMouseEvent gme) {
        if (gameMouselistenerS.size() != 0) {
            Iterator it = gameMouselistenerS.iterator();
            while (it.hasNext()) {
                GameMouseListener gml = (GameMouseListener) it.
                    next();
                gml.processGameEvent(gme);
            }
        }
    }

    private void mouseListenerinit() {
        this.addMouseListener(new MouseAdapter() {
            public void mousePressed(MouseEvent mouseEvent) {
                if(blockModel!=null&&mouseEvent.getButton() == MouseEvent.BUTTON1){
                    blockModel.setdown(true);
                }
                if (mouseEvent.getButton() == MouseEvent.BUTTON1) {
                    BlockView.this.mousebutton1 = true;
                    BlockView.this.mousebuttonPress1 = true;
                    notifyMouseEvent(new GameMouseEvent(
                        BlockView.this.xx, BlockView.this.yy,
                        GameMouseEvent.LeftPress));
                }
                if (mouseEvent.getButton() == MouseEvent.BUTTON3) {
                    BlockView.this.mousebutton2 = true;
                    BlockView.this.mousebuttonPress2 = true;
                }
                if( BlockView.this.mousebuttonPress1 && BlockView.this.mousebuttonPress2){
                    notifyMouseEvent(new GameMouseEvent(
                           BlockView.this.xx, BlockView.this.yy,
                           GameMouseEvent.LRPress));

                }

            }

            public void mouseReleased(MouseEvent mouseEvent) {

                if(blockModel!=null&&mouseEvent.getButton() == MouseEvent.BUTTON1){
                    blockModel.setdown(false);
                }
                if(mouseEvent.getButton()==MouseEvent.BUTTON1){
                    mousebuttonRelease1=true;
                    notifyMouseEvent(new GameMouseEvent(
                               BlockView.this.xx, BlockView.this.yy,
                               GameMouseEvent.leftRealse));

                }
                if(mouseEvent.getButton()==mouseEvent.BUTTON3){
                    mousebuttonRelease2=true;
                }
                if(mousebuttonPress1&&mousebuttonPress2&&mousebuttonRelease1&&mousebuttonRelease2){
                    notifyMouseEvent(new GameMouseEvent(
                                BlockView.this.xx, BlockView.this.yy,
                                GameMouseEvent.LRRelease));
                    mousebuttonPress1=false;
                    mousebuttonPress2=false;
                    mousebuttonRelease1=false;
                    mousebuttonRelease2=false;

                }



                if (mouseEvent.getX() >= 0 &&
                    mouseEvent.getX() <= BlockView.this.getWidth() &&
                    mouseEvent.getY() >= 0 &&
                    mouseEvent.getY() <= BlockView.this.getHeight()
                    ) {
                    if (BlockView.this.mousebutton1 == true &&
                        BlockView.this.mousebutton2 == true) {
                        notifyMouseEvent(new GameMouseEvent(
                            BlockView.this.xx, BlockView.this.yy,
                            GameMouseEvent.LRClick));
                        //左右雙擊
                    }
                    else if (BlockView.this.mousebutton1 == true) {
                        notifyMouseEvent(new GameMouseEvent(
                            BlockView.this.xx, BlockView.this.yy,
                            GameMouseEvent.LeftClick));
                    }
                    //左

                else if (BlockView.this.mousebutton2 == true) {
                    notifyMouseEvent(new GameMouseEvent(
                        BlockView.this.xx, BlockView.this.yy,
                        GameMouseEvent.RightClick)); //右
                }}
                BlockView.this.mousebutton2 = false;
                BlockView.this.mousebutton1 = false;
            }
        });

    }

    public Set getGameMouselistener() {
        return gameMouselistenerS;
    }

    public void addGameMouseListener(GameMouseListener gameMouselistener) {
        gameMouselistenerS.add(gameMouselistener);
    }

    public void removeGameMouseListener(GameMouseListener gameMouselistener) {
        gameMouselistenerS.remove(gameMouselistener);
    }

}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美aaaaa成人免费观看视频| 91啪在线观看| 色婷婷av一区二区三区软件 | 国内外成人在线| 在线亚洲高清视频| 国产丝袜欧美中文另类| 日韩国产在线一| 97精品久久久午夜一区二区三区 | 91麻豆免费观看| 精品久久久久久久久久久院品网| 亚洲一区二三区| 粉嫩欧美一区二区三区高清影视| 日韩免费高清视频| 婷婷夜色潮精品综合在线| 色综合咪咪久久| 亚洲欧洲三级电影| 国产成人av资源| 久久精品视频网| 国产又黄又大久久| 精品国产乱码久久久久久闺蜜| 天天色综合成人网| 欧美日韩久久一区| 亚洲图片有声小说| 欧美三级三级三级爽爽爽| 亚洲黄色av一区| 欧美亚洲动漫另类| 夜夜嗨av一区二区三区中文字幕| 色综合久久久久网| 亚洲曰韩产成在线| 欧美色视频一区| 亚洲午夜精品久久久久久久久| 一本色道久久加勒比精品| 亚洲三级在线播放| 91国内精品野花午夜精品| 亚洲欧美日韩国产综合| 91麻豆精品视频| 亚洲成人7777| 欧美一区二区三区白人| 欧美bbbbb| 久久久综合视频| 国产91精品露脸国语对白| 国产欧美精品国产国产专区| 北岛玲一区二区三区四区| 亚洲人午夜精品天堂一二香蕉| 色综合欧美在线视频区| 爽爽淫人综合网网站| 日韩欧美高清在线| 丁香五精品蜜臀久久久久99网站| 国产精品精品国产色婷婷| 色狠狠一区二区三区香蕉| 亚洲国产一区在线观看| 日韩欧美国产一区二区三区| 高清视频一区二区| 亚洲一区二区视频在线观看| 欧美一二三区在线| 国产精华液一区二区三区| 中文字幕在线免费不卡| 在线观看成人小视频| 日韩成人精品视频| 国产精品视频在线看| 欧美天堂亚洲电影院在线播放| 日本网站在线观看一区二区三区| 久久精品亚洲精品国产欧美| 欧美在线你懂得| 国产精品1024| 日日夜夜一区二区| 国产精品乱码一区二三区小蝌蚪| 欧美精三区欧美精三区| 国产成人在线观看免费网站| 亚洲bdsm女犯bdsm网站| 国产精品亲子伦对白| 91精品欧美一区二区三区综合在| 福利电影一区二区三区| 亚洲a一区二区| 国产精品欧美经典| 欧美一级艳片视频免费观看| 91蜜桃在线观看| 国产一区二区三区电影在线观看 | 91精彩视频在线观看| 久久99国内精品| 亚洲综合免费观看高清完整版 | 亚瑟在线精品视频| 国产精品无遮挡| 精品国产髙清在线看国产毛片| 色综合久久综合| 粉嫩av一区二区三区在线播放| 日韩国产精品久久久| 一区二区三区在线视频观看58| 欧美v日韩v国产v| 337p亚洲精品色噜噜狠狠| 91看片淫黄大片一级在线观看| 激情五月激情综合网| 午夜精品久久久久影视| 成人免费在线视频| 国产亚洲精品福利| 精品入口麻豆88视频| 欧美美女直播网站| 欧美性生活一区| 色综合久久99| 91免费版在线看| 色偷偷88欧美精品久久久| 成人久久视频在线观看| 国产一区二区伦理| 久久99精品久久久| 久久精品国产一区二区| 日韩精品国产欧美| 日本欧美一区二区在线观看| 亚洲第一电影网| 亚洲国产成人av| 亚洲一区二区三区激情| 亚洲一区二区三区国产| 亚洲主播在线观看| 午夜伦欧美伦电影理论片| 亚洲高清免费视频| 亚洲成av人片一区二区梦乃| 天天做天天摸天天爽国产一区| 亚洲妇女屁股眼交7| 亚洲国产乱码最新视频 | 成人免费三级在线| 成人精品在线视频观看| 成人福利视频在线| 91在线视频播放地址| 99久久久久久99| 色88888久久久久久影院按摩 | 久久久精品一品道一区| 久久久蜜臀国产一区二区| 国产欧美一区二区三区在线老狼| 国产精品沙发午睡系列990531| 中文字幕中文字幕一区二区| 亚洲欧美日本韩国| 婷婷中文字幕综合| 国产中文字幕一区| 成人av手机在线观看| 色哦色哦哦色天天综合| 欧美剧情电影在线观看完整版免费励志电影| 欧美色图12p| 精品国产伦一区二区三区观看方式| 国产午夜久久久久| 亚洲日本护士毛茸茸| 天堂av在线一区| 国产999精品久久久久久| 91在线无精精品入口| 欧美日韩你懂得| 久久精品欧美日韩| 亚洲在线成人精品| 国内精品久久久久影院色| 成人av在线网| 91麻豆精品国产自产在线观看一区| 久久综合久久鬼色中文字| 日韩毛片在线免费观看| 三级成人在线视频| 不卡一区中文字幕| 日韩一区二区精品| 亚洲精品视频在线看| 老司机精品视频一区二区三区| 不卡av电影在线播放| 日韩女优视频免费观看| 亚洲欧美日韩中文字幕一区二区三区 | 视频在线观看91| 福利一区在线观看| 9191久久久久久久久久久| 国产精品美女久久久久aⅴ国产馆| 亚洲午夜在线电影| 成人午夜激情影院| 精品三级av在线| 亚洲国产aⅴ天堂久久| 国产成人在线网站| 日韩视频免费观看高清完整版在线观看| 国产精品拍天天在线| 精品综合免费视频观看| 欧美视频精品在线观看| 日本一区二区三区久久久久久久久不 | 欧美日韩aaa| 一区二区在线观看视频| 国产黄人亚洲片| 日韩精品中文字幕一区| 亚洲一区二区三区四区中文字幕| 福利一区二区在线观看| 久久综合久久综合亚洲| 青青草97国产精品免费观看| 色偷偷久久人人79超碰人人澡| 午夜激情久久久| 91亚洲国产成人精品一区二区三| 久久久国产精品午夜一区ai换脸| 肉丝袜脚交视频一区二区| 91电影在线观看| 亚洲欧美成aⅴ人在线观看| 不卡区在线中文字幕| 国产日韩欧美a| 国产精品一区二区在线播放| 欧美成人免费网站| 另类综合日韩欧美亚洲| 日韩欧美一区电影| 蜜桃在线一区二区三区| 日韩视频免费观看高清完整版在线观看 | 欧美一区二区三区在线观看| 亚洲mv在线观看| 欧美精品日韩精品| 日韩国产高清影视| 日韩一二三区视频|