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

📄 blockmodel.java

📁 windows自带的扫雷游戏
💻 JAVA
字号:
package mine.model;

import java.util.Observable;

public class BlockModel
    extends Observable {
    public final static int QuestionMark = 13; //标记为3种,旗子,问号,
    public final static int FlagMark = 10;
    public final static int UnopenMark = 9;
    private int xPos;
    private int yPos; //位置坐标
    private boolean opened; //此块是否已经开启,如果开启,则不能再进行设置
    private int mark = BlockModel.UnopenMark; //标记的类型,分为旗子和问号,如果开启,则不能设置
    private boolean mine; //有两种类型,不是雷,就是数字
    private boolean wrongMineOpinion; //是否含有错误推断
    private int number; //如果是数字,则一不定不是雷,雷不能取得值
    private boolean onmine;
    private boolean isdown = false; //用于处理鼠标按下松开的事件
    public BlockModel() {
    }

    public void setdown(boolean down) {
        if (!opened && mark == BlockModel.UnopenMark && isdown != down) {
            //如果没有打开,并未做过标记才进行设置
            isdown=down;
            setChanged();
            notifyObservers();
        }
    }
    public boolean isdown(){
        return isdown;
    }

    public BlockModel(int x, int y) {
        xPos = x;
        yPos = y;
    }

    public int getXPos() {
        return xPos;
    }

    public int getYPos() {
        return yPos;
    }

    public boolean isOpened() {
        return opened;
    }

    public void setOpened(boolean opened) {
        //如果不一致,再进行通知
        if (this.opened != opened) {
            this.opened = opened;
            setChanged();
            notifyObservers();
        }
    }

    public int getMark() {
        if (opened) {
            throw new GameRuntimeException("已经打开,不能再取得标记值");
        }
        return mark;
    }

    public void setMark(int mark) {
        if (opened) {
            throw new GameRuntimeException("已经打开,不能再设置标记值");
        }
        if (this.mark != mark) {
            this.mark = mark;
            setChanged();
            notifyObservers();
        }
    }

    public boolean isMine() {
        return mine;
    }

    public void setMine(boolean mine) {
        this.mine = mine;
    }

    public boolean isWrongMineOpinion() {
        return wrongMineOpinion;
    }

    public void setWrongMineOpinion(boolean wrongMineOpinion) {
        this.wrongMineOpinion = wrongMineOpinion;
    }

    public int getNumber() {
        if (mine) {
            throw new GameRuntimeException("已经是雷,不可获得数字值");
        }
        return number;
    }

    public void setNumber(int number) {
        if (mine) {
            throw new GameRuntimeException("已经是雷,不设置数字值");
        }
        this.number = number;
    }

    public boolean isOnmine() {
        return onmine;
    }

    public void setOnmine(boolean onmine) {
        if (!mine) {
            throw new GameRuntimeException("不是雷,怎么可能踩上呢");
        }
        this.onmine = onmine;
    }

    public int hashCode() {
        return (xPos+"-"+yPos).hashCode();
    }

}

⌨️ 快捷键说明

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