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

📄 fieldcell.java

📁 扫雷游戏实现
💻 JAVA
字号:
/*
 * FieldCell.java
 *
 * Created on 2007年8月21日, 上午11:42
 *
 * To change this template, choose Tools | Template Manager
 * and open the template in the editor.
 */

package minegame;

/**
 *
 * @author linda
 */


import java.awt.*;
import javax.swing.*;

public class FieldCell {
    
    //状态常量
    public static final int UNKNOWN = 0;
    public static final int FLAGGED = 1;
    public static final int DOUBTED = 2;
    public static final int REVEALED = 3;
    public static final int WRONG_F = 4;
    public static final int WRONG_D = 5;
    
    //是否地雷指示器
    private boolean isMine = false;
    
    //状态变量
    private int state = UNKNOWN;
    
    /**
     *   图像信息变量gHint:
     *   范围0-14  
     *   - 0-8: 数字
     *   - 9:   未扫(雷)单元
     *   - 10:  地雷
     *   - 11:  已扫标记
     *   - 12:  已扫标记叉号
     *   - 13:  疑问标记
     *   - 14:  疑问标记叉号
     */
    private int gHint = 9;
    
    //非地雷单元显示的相邻地雷数
    private int number = -1;
    
    public FieldCell() {//构造方法
    }
    
    public void setState(int s) {//设置单元状态
        state = s;
        switch (s) {
            case UNKNOWN:
                gHint = 9;
                break;
            case FLAGGED:
                gHint = 11;
                break;
            case DOUBTED:
                gHint = 13;
                break;
            case REVEALED:
                gHint = isMine ? 10 : number;
                break;
            case WRONG_F:
                gHint = 12;
                break;
            case WRONG_D:
                gHint = 14;
                break;
        }
    }
    
    public int getState() {//获取单元状态
        return state;
    }
    
    public void setMine(boolean b) {//设置地雷单元
        isMine = b;
    }
    
    public boolean isMine() {//获取是否地雷信息
        return isMine;
    }
    
    public void setNumber(int num) {//设置数字
        if (num < 0 || num > 8)
            return;
        number = num;
    }
    
    public int getNumber() {//获取数字
        return number;
    }
    
    private void setGHint(int h) {//设置图像信息
        gHint = h;
    }
    
    //根据各单元图像信息画出单元图像
    public void draw(Graphics g, int x, int y) {
        if (gHint < 0 || gHint > 14)
            return;
        switch (gHint) {
            case 9:
                GraphicsUtil.drawUnknown(g, x, y);//画出未扫单元
                return;
            case 10:
                GraphicsUtil.drawMine(g, x, y);//画出地雷单元
                return;
            case 11:
                GraphicsUtil.drawFlag(g, x, y);//画出已扫单元
                return;
            case 12:
                GraphicsUtil.drawFlag(g, x, y);//画出已扫单元
                GraphicsUtil.drawCross(g, x, y);//画出叉号
                return;
            case 13:
                GraphicsUtil.drawDoubt(g, x, y);//画出疑问单元
                return;
            case 14:
                GraphicsUtil.drawDoubt(g, x, y);//画出疑问单元
                GraphicsUtil.drawCross(g, x, y);//画出叉号
                return;
            default:
                GraphicsUtil.drawNumber(g, x, y, gHint);//画出数字
                return;
        }
    }
    
}

⌨️ 快捷键说明

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