资源简介
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
- 上一篇:NativeIO.java 的源文件
- 下一篇:JAVA发送HTTP请求操作类
相关资源
- JAVA JSP公司财务管理系统 源代码 论文
- JSP+MYSQL旅行社管理信息系统
- 推荐算法的JAVA实现
- 基于Java的酒店管理系统源码(毕业设
- java-图片识别 图片比较
- android毕业设计
- java23种设计模式+23个实例demo
- java Socket发送/接受报文
- JAVA828436
- java界面美化 提供多套皮肤直接使用
- 在线聊天系统(java代码)
- 基于Java的图书管理系统807185
- java中实现将页面数据导入Excel中
- java 企业销售管理系统
- java做的聊天系统(包括正规课程设计
- JSP,SQL,MVC的选课系统
- Java编写的qq聊天室
- 商店商品管理系统 JAVA写的 有界面
- JAVA开发聊天室程序
- 在linux系统下用java执行系统命令实例
- java期末考试试题两套(答案) 选择(
- JAVA3D编程示例(建模、交互)
- Java 文件加密传输
- java做的房产管理系统
- 基于jsp的bbs论坛 非常详细
- [免费]java实现有障碍物的贪吃蛇游戏
- java Servlet投票实例
- 操作系统作业 (pv,作业管理,等5个
- 基于C/S架构考试系统(Java)
- java access 仓库管理系统 源码
评论
共有 条评论