• 大小: 16KB
    文件类型: .zip
    金币: 1
    下载: 0 次
    发布日期: 2021-05-10
  • 语言: Java
  • 标签: JAVA  MVC  扫雷  

资源简介

Java MVC 扫雷 带计时器,自动打开周边无雷区域 右键插旗标记等功能。

资源截图

代码片段和文件信息


import javax.swing.*;

import java.net.URL;
import java.util.*;
import java.awt.GridLayout;

public class BoardView extends JPanel implements Observer
{
private MineModel model;
private JButton[][] cell;

private ImageIcon mineIcon;
private ImageIcon flagIcon;
public BoardView(MineModel model)
{
super();

// initialise model
this.model = model;

//create array of buttons
cell = new JButton[model.getBoardSize()][model.getBoardSize()];

//set layout of panel
setLayout(new GridLayout(model.getBoardSize() model.getBoardSize()));

//for each square in grid:create a button; place on panel
for(int i = 0; i < model.getBoardSize(); i++)
{
for(int j = 0; j < model.getBoardSize(); j++)
{
cell[i][j] = new JButton(““);
cell[i][j].addMouseListener(new SquareListener(model i j));
add(cell[i][j]);
}
}

// read the image file
URL mineUrl=this.getClass().getResource(“/image/mine.png“);
mineIcon = new ImageIcon(mineUrl);

URL flagUrl=this.getClass().getResource(“/image/flag.png“);
flagIcon = new ImageIcon(flagUrl);
}

public void update(Observable obs object obj)
{

/**
 * If game over display all of the board
 */
if(model.isGameOver() || model.isWon() || model.isFlagedAllMines())
{
for(int i = 0; i < model.getBoardSize(); i++)
{
for(int j = 0; j < model.getBoardSize(); j++)
{
if(model.getLocation(i j) == MineSweeper.MINE) 
{
cell[i][j].setIcon(mineIcon);
cell[i][j].setText(““);
cell[i][j].setEnabled(false);
}
else
{
if(model.getLocation(i j) == 0)
{
cell[i][j].setText(““);
cell[i][j].setIcon(null);
cell[i][j].setEnabled(false);
}
else
{
cell[i][j].setText(““ + model.getLocation(i j));
cell[i][j].setIcon(null);
cell[i][j].setEnabled(false);
}
}
}
}
if(model.isWon() || model.isFlagedAllMines())
{
JOptionPane.showMessageDialog(null “You win!“ “Win“ JOptionPane.INFORMATION_MESSAGE);
}
else
{
JOptionPane.showMessageDialog(null “You lost!“ “Lost“ JOptionPane.INFORMATION_MESSAGE);
}
}
/**
 * If game doesn‘t over display the clicked buttons
 */
else
{
for(int i = 0; i < model.getBoardSize(); i++)
{
for(int j = 0; j < model.getBoardSize(); j++)
{
if(model.getFlag(i j) == MineSweeper.UNCLICK)
{
if(model.getLocation(i j) == MineSweeper.MINE)
{
if(model.isReveal())
{
cell[i][j].setIcon(mineIcon);
cell[i][j].setText(““);
cell[i][j].setEnabled(true);
}
else
{
cell[i][j].setIcon(null);
cell[i][j].setText(““);
cell[i][j].setEnabled(true);
}
}
else
{
cell[i][j].setIcon(null);
cell[i][j].setText(““);
cell[i][j].se

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2010-12-15 08:10  image\
     文件        3417  2010-12-15 08:10  image\flag.png
     文件        5492  2010-12-13 01:24  image\mine.png
     文件        3394  2010-12-15 22:46  BoardView.java
     文件        2278  2010-12-15 21:52  ControlPanel.java
     文件         605  2010-12-15 05:15  MineComponent.java
     文件        2957  2010-12-15 21:59  MineModel.java
     文件        9096  2010-12-15 23:14  MineSweeper.java
     文件         575  2010-12-14 07:46  MineSweeperGUI.java
     文件         870  2010-12-15 05:13  SquareListener.java
     文件        1219  2010-12-15 23:58  Test.java
     文件        2071  2010-12-15 23:22  TimePanel.java

评论

共有 条评论