资源简介
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发送HTTP请求操作类
- NativeIO.java 的源文件
- Jsf 项目源代码
- Java+MySql数据库 模拟ATM自助存取款b
- Jsp+JavaBean+Servlet的简单大学的web课程设
- mvc模式个人信息管理系统
- 局域网聊天工具Java版
- Spring+Mybatis+Atomikos实现JAVA初始化并控
- commons-io-2.5.jar
- OnlineBookStore.rar
- java创建DBF文件官方jar修订版(修正插
- java创建DBF文件官方jar修订版(修正中
- java+mysql图书馆管理系统45625
- java企业真实项目需求
- java拼图游戏(有难度选择)
- java读取properties文件
- 用java+sqlservser2005写的旅行社信息管理
- java 排序算法可视化
- java实现的决策树算法
- java实现的一个画板小程序画直线,矩
- java正则实现解析算术表达式 仅限
- JAVA程序小游戏五子棋大作业
- Java通过邮箱找回密码和注册
- HITS java实现
- java聊天小程序.java聊天小程序
- Java的Jtable、从数据库取数据显示在表
- javax.websocket-api-1.1
- Java求逆矩阵高斯约旦法
- java解析DWG文件为json使用superMap
- 图中找图对比,Java源代码,Android源代
评论
共有 条评论