資源簡(jiǎn)介
Java MVC 掃雷
帶計(jì)時(shí)器,自動(dòng)打開(kāi)周邊無(wú)雷區(qū)域
右鍵插旗標(biāo)記等功能。

代碼片段和文件信息
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? {
for(int?j?=?0;?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? {
for(int?j?=?0;?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? {
for(int?j?=?0;?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
?屬性????????????大小?????日期????時(shí)間???名稱(chēng)
-----------?---------??----------?-----??----
?????目錄???????????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
評(píng)論
共有 條評(píng)論