資源簡(jiǎn)介
寫java一年了,無(wú)聊寫個(gè)小掃雷游戲,寫了注釋,提供給新手參考

代碼片段和文件信息
package?king.activity;
import?java.awt.Color;
import?java.awt.event.ActionEvent;
import?java.awt.event.ActionListener;
import?java.awt.event.MouseEvent;
import?java.awt.event.MouseListener;
import?java.util.Random;
import?javax.swing.JButton;
import?javax.swing.Jframe;
import?javax.swing.JLabel;
import?javax.swing.JOptionPane;
import?javax.swing.JPanel;
public?class?Mineframe?extends?Jframe?{
private?JPanel?panel_title;//?存重新開始button和剩余雷數(shù)label
private?JPanel?panel;//?存雷區(qū)
private?JLabel?label;//?顯示剩余雷數(shù)
private?final?static?int?N?=?25;//?雷數(shù)
private?final?static?int?E?=?50;//?一個(gè)雷的Button邊長(zhǎng)
private?final?static?int?L?=?12;//?雷區(qū)長(zhǎng)寬長(zhǎng)度
private?final?static?int?M?=?9;//?9表示雷在矩陣中的數(shù)
private?int?notLei?=?0;//?非雷區(qū)域數(shù)量
private?int?isFlag?=?0;//?標(biāo)志旗的數(shù)量
private?int[][]?matrix?=?new?int[L][L];//?雷區(qū)矩陣?存儲(chǔ)周圍雷的數(shù)量,雷用9表示
private?Node[][]?nodes;//?雷區(qū)
private?ButtonListener?buttonListener;//?左鍵單擊響應(yīng)
public?static?void?main(String[]?args)?{
new?Mineframe().runGame();
}
public?Mineframe()?{
this.settitle(“£掃雷“);
this.setBounds(220?100?720?750);
panel?=?new?JPanel();
panel.setLayout(null);
panel_title?=?new?JPanel();
panel_title.setLayout(null);
panel.setBounds(0?50?700?700);
panel_title.setBounds(0?0?700?50);
this.add(panel);
this.add(panel_title);
JButton?begin?=?new?JButton(“重新開始“);
begin.addActionListener(new?ActionListener()?{
public?void?actionPerformed(ActionEvent?e)?{
runGame();
}
});
begin.setBounds(270?15?160?40);
panel_title.add(begin);
label?=?new?JLabel();
label.setBounds(600?30?100?20);
label.setText(“剩余雷數(shù):?“?+?(N?-?isFlag));
panel_title.add(label);
this.setDefaultCloseOperation(Jframe.EXIT_ON_CLOSE);
}
public?void?runGame()?{
panel.removeAll();//?移除panel所有組件
repaint();//?重畫
nodes?=?new?Node[L][L];
for?(int?i?=?0;?i? for?(int?j?=?0;?j? Node?node?=?new?Node();
nodes[i][j]?=?node;
node.i?=?i;
node.j?=?j;
node.setBounds((j?+?1)?*?E?(i?+?1)?*?E?E?E);
buttonListener?=?new?ButtonListener(node);
node.addActionListener(buttonListener);
node.addMouseListener(new?FlagListener(node));
panel.add(node);
}
}
int?m?=?0;
int?n?=?0;
int?temp?=?0;
Random?r?=?new?Random();
for?(int?i?=?0;?i? m?=?r.nextInt(L);
n?=?r.nextInt(L);
if?(!nodes[m][n].isMine)?{
nodes[m][n].isMine?=?true;
temp++;
nodes[m][n].setText(““);
}
if?(temp?==?N)?{
break;
}
}
for?(int?i?=?0;?i? for?(int?j?=?0;?j? if?(nodes[i][j].isMine)?{
matrix[i][j]?=?M;
}?else?{
matrix[i][j]?=?getAround(nodes[i][j]);
}
}
}
isFlag?=?0;
label.setText(“剩余雷數(shù):?“?+?(N?-?isFlag));
this.setVisible(true);
}
private?int?getAround(Node?node)?{//?得到結(jié)點(diǎn)周圍雷的數(shù)量?按照?a[0]a[1]a[2]?01235678順序
//?a[3]?a[5]
int?i?=?
?屬性????????????大小?????日期????時(shí)間???名稱
-----------?---------??----------?-----??----
?????目錄???????????0??2011-10-15?18:48??SaoLei\
?????文件?????????232??2011-10-15?18:48??SaoLei\.classpath
?????文件?????????382??2011-10-15?18:48??SaoLei\.project
?????目錄???????????0??2011-10-15?18:49??SaoLei\bin\
?????目錄???????????0??2011-10-15?18:50??SaoLei\bin\king\
?????目錄???????????0??2011-10-18?20:19??SaoLei\bin\king\activity\
?????文件?????????689??2011-10-18?20:27??SaoLei\bin\king\activity\Minefr
?????文件????????2179??2011-10-18?20:27??SaoLei\bin\king\activity\Minefr
?????文件????????1997??2011-10-18?20:27??SaoLei\bin\king\activity\Minefr
?????文件????????6131??2011-10-18?20:27??SaoLei\bin\king\activity\Minefr
?????文件?????????374??2011-10-16?13:52??SaoLei\bin\king\activity\Node.class
?????目錄???????????0??2011-10-15?18:49??SaoLei\src\
?????目錄???????????0??2011-10-15?18:50??SaoLei\src\king\
?????目錄???????????0??2011-10-18?20:19??SaoLei\src\king\activity\
?????文件????????8274??2011-10-18?20:27??SaoLei\src\king\activity\Minefr
?????文件?????????168??2011-10-16?13:52??SaoLei\src\king\activity\Node.java
評(píng)論
共有 條評(píng)論