版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、整個(gè)程序使用了4個(gè)類:Game 用于啟動(dòng)程序, 界面的布置,各種行列的算法。ExtendButton 繼承了Jbutton 用于新建button的各種屬性ShowNum 監(jiān)聽到某個(gè)button后,計(jì)算出此button周圍有幾個(gè)雷,不同的雷對應(yīng)不通的圖片,類得到button上應(yīng)加載的圖片地址ViewReSet 此類用于新建一個(gè)窗口,用戶輸入自己想要的行、列、雷數(shù),然后用新的行列雷數(shù)new一個(gè)新的Gamebiaose dise1 dise2 dise3dise4 dise5 dise6 dise7dise8 dise lei biaoji/* 運(yùn)行類 創(chuàng)建游戲主窗體 */package com.d
2、hl.saolei;import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.Dimension;import java.awt.Font;import java.awt.GridLayout;import java.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.awt.event.InputEvent;import java
3、.awt.event.KeyEvent;import java.awt.event.MouseAdapter;import java.awt.event.MouseEvent;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JMenu;import javax.swing.JMenuBar;import javax.swing.JMenuItem;import javax.swing.JOptionPane;import javax.swing.JPanel;import javax.swing.JT
4、oolBar;import javax.swing.KeyStroke;import javax.swing.Timer;public class Game extends JFrame implements ActionListenerprivate Container myContainer;private GridLayout myLayout;private JPanel myPanelMain;private JPanel myPanel;private JToolBar myTool;private JLabel time;private JLabel labelTime;priv
5、ate JLabel bombNum;private JLabel labelBombNum;private JMenuBar menuBar;private JMenu menuE, menuH;private JMenuItem menuItemCZ, menuItemSZ;private int numBomb, countTime, leaveBomb, numEnd;private int myRows, myColumns;private int xis, yis;private Timer timer;private ExtendButton myButton = null;/初
6、始化窗體private void InitView() /菜單初始化this.menuBar = new JMenuBar();this.menuE = new JMenu("菜單(E)");this.menuH = new JMenu("幫助(H)");this.menuItemCZ = new JMenuItem("重置");this.menuItemCZ.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_C, InputEvent.CTRL_MASK);this.menuItem
7、CZ.addActionListener(this);this.menuE.add(this.menuItemCZ);this.menuItemSZ = new JMenuItem("設(shè)置");this.menuItemCZ.setAccelerator(KeyStroke.getKeyStroke(KeyEvent.VK_S, InputEvent.CTRL_MASK);this.menuItemSZ.addActionListener(this);this.menuE.add(this.menuItemSZ);this.menuBar.add(this.menuE);t
8、his.menuBar.add(this.menuH);setJMenuBar(this.menuBar);/時(shí)間信息初始化this.myTool = new JToolBar();this.myTool.setLayout(new GridLayout(1, 4);this.myTool.setFloatable(false);BorderLayout borderLayout = new BorderLayout();this.myPanelMain = new JPanel(borderLayout);this.labelTime = new JLabel("時(shí)間:"
9、);this.time = new JLabel();this.time.setForeground(Color.RED);this.time.setFont(new Font("font", Font.PLAIN, 20);this.labelBombNum = new JLabel("雷數(shù):");this.bombNum = new JLabel();this.bombNum.setText(String.valueOf(this.numBomb);this.bombNum.setForeground(Color.RED);this.bombNum.
10、setFont(new Font("font", Font.PLAIN, 20);this.myTool.add(this.labelTime);this.myTool.add(this.time);this.myTool.add(this.labelBombNum);this.myTool.add(this.bombNum);this.myPanelMain.add(this.myTool, borderLayout.NORTH);/初始化myButtonprivate void InitButton() BorderLayout borderLayout = new B
11、orderLayout();this.leaveBomb = this.numBomb;this.numEnd = (this.myRows * this.myColumns) - this.leaveBomb;this.myContainer = this.getContentPane();this.myLayout = new GridLayout(this.myRows, this.myColumns, 1, 1);this.myPanel = new JPanel();this.myPanel.setVisible(true);this.myPanel.setLayout(myLayo
12、ut);this.myPanelMain.add(this.myPanel, borderLayout.CENTER);this.myContainer.add(this.myPanelMain);this.myButton = new ExtendButton(this.myRows * this.myColumns);for (int i = 0; i < (this.myRows * this.myColumns); i+) this.myButtoni = new ExtendButton();this.myButtoni.SetPostion(i);this.myButtoni
13、.setIcon(new ShowNum(10).getImageIcon();this.myButtoni.setButton_num(0);this.myButtoni.SetVisited(false);this.myButtoni.SetStatus(false);/設(shè)置右鍵監(jiān)聽標(biāo)記雷this.myButtoni.addMouseListener(new MouseAdapter() public void mouseClicked(MouseEvent evt) if (evt.getModifiers() = InputEvent.BUTTON3_MASK) int n = (Ex
14、tendButton)evt.getSource().getButton_num();if(n = 1) if(!(ExtendButton)evt.getSource().GetVisited() (ExtendButton)evt.getSource().setButton_num(0);(ExtendButton)evt.getSource().setIcon(new ShowNum(10).getImageIcon();leaveBomb+;bombNum.setText(String.valueOf(leaveBomb); else if(!(ExtendButton)evt.get
15、Source().GetVisited() (ExtendButton)evt.getSource().setButton_num(1);(ExtendButton)evt.getSource().setIcon(new ShowNum(11).getImageIcon();leaveBomb-;bombNum.setText(String.valueOf(leaveBomb););this.myPanel.add(this.myButtoni);this.myButtoni.addActionListener(this);System.gc();this.SetBomb(this.numBo
16、mb);show();/時(shí)鐘設(shè)置int delay = 1000;/創(chuàng)建一個(gè)監(jiān)聽事件ActionListener drawClock = new ActionListener()public void actionPerformed(ActionEvent evt)countTime+;time.setText(String.valueOf(countTime);repaint();/創(chuàng)建一個(gè)時(shí)間計(jì)數(shù)器,每一秒觸發(fā)一次this.timer = new Timer(delay,drawClock); this.timer.start();/重新初始化方法private void SetExten
17、dButton() for (int i = 0; i < (this.myRows * this.myColumns); i+) this.myButtoni.SetVisited(false);this.myButtoni.SetStatus(false);this.myButtoni.setText(null);this.myButtoni.setIcon(new ShowNum(10).getImageIcon();this.SetBomb(numBomb);this.countTime = 0;this.timer.start();this.leaveBomb = numBom
18、b;this.bombNum.setText(String.valueOf(this.numBomb);this.numEnd = (this.myRows * this.myColumns) - leaveBomb;/布雷方法private void SetBomb(int count) int counter = 0;int tempint;while(counter != count) tempint = (int) (Math.random()*(this.myRows * this.myColumns);if(!this.myButtontempint.GetStatus() thi
19、s.myButtontempint.SetStatus(true);counter+;/顯示雷得方法private void ShowBomb() for(int i = 0; i < (this.myRows * this.myColumns); i+) if(this.myButtoni.GetStatus() this.myButtoni.setIcon(new ShowNum(9).getImageIcon();/監(jiān)聽點(diǎn)擊掃雷方法private void CheckButton(ExtendButton TempButton) if(TempButton.GetStatus()
20、this.timer.stop();JOptionPane.showMessageDialog(null, "You Failed!", "Game",JOptionPane.INFORMATION_MESSAGE);this.ShowBomb();int i = JOptionPane.showConfirmDialog(null, "是否要繼續(xù)?", "消息", JOptionPane.YES_NO_OPTION);if(JOptionPane.YES_OPTION = i) SetExtendButton()
21、; else this.dispose();return;int CircleNum = new int8;int temp = 0;if(!TempButton.GetVisited() CircleNum0 = TempButton.GetPostion() - this.myColumns - 1;CircleNum0 = (CircleNum0 < 0 | (CircleNum0 + 1) % this.myColumns = 0) ? -1 : CircleNum0;CircleNum1 = TempButton.GetPostion() - this.myColumns;Ci
22、rcleNum1 = (CircleNum1 < 0) ? -1 : CircleNum1;CircleNum2 = TempButton.GetPostion() - this.myColumns + 1;CircleNum2 = (CircleNum2 < 0 |CircleNum2 % this.myColumns = 0) ? -1 : CircleNum2;CircleNum3 = TempButton.GetPostion() - 1;CircleNum3 = (CircleNum3 + 1) % this.myColumns = 0) ? -1 : CircleNum
23、3;CircleNum4 = TempButton.GetPostion() + 1;CircleNum4 = (CircleNum4 % this.myColumns = 0) ? -1 : CircleNum4;CircleNum5 = TempButton.GetPostion() + this.myColumns -1;CircleNum5 = (CircleNum5 > (this.myRows * this.myColumns - 1) | (CircleNum5 + 1) % this.myColumns = 0) ? -1 : CircleNum5;CircleNum6
24、= TempButton.GetPostion() + this.myColumns;CircleNum6 = (CircleNum6 > (this.myRows * this.myColumns - 1) ? -1 : CircleNum6;CircleNum7 = TempButton.GetPostion() + this.myColumns +1;CircleNum7 = (CircleNum7 > (this.myRows * this.myColumns - 1) | CircleNum7 % this.myColumns = 0) ? -1 : CircleNum7
25、;for (int i = 0; i < 8; i+) if(CircleNumi != -1) if(myButtonCircleNumi.GetStatus() && !myButtonCircleNumi.GetVisited() temp+;/顯示button圖片過程if(temp > 0) TempButton.SetVisited(true);TempButton.setIcon(new ShowNum(temp).getImageIcon();temp = 0; else if(temp = 0) TempButton.SetVisited(true)
26、;TempButton.setIcon(new ShowNum(0).getImageIcon();for (int i = 0; i < 8; i+) if(CircleNumi != -1 && !myButtonCircleNumi.GetVisited() CheckButton(myButtonCircleNumi);this.numEnd-;if(this.numEnd = 0) this.timer.stop();JOptionPane.showMessageDialog(this, "恭喜你!", "消息", JOp
27、tionPane.INFORMATION_MESSAGE);ShowBomb(); /構(gòu)造方法public Game() Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();int x = (int) (dimension.getWidth() - 400) / 2);int y = (int) (dimension.getHeight() - 500) / 2);this.xis = 300;this.yis = 400;this.setBounds(x, y, this.xis, this.yis);this.
28、setTitle("掃雷");this.numBomb = 10;this.myRows = 9;this.myColumns = 9;this.InitView();this.InitButton();this.setDefaultCloseOperation(this.EXIT_ON_CLOSE);public Game(int row, int column, int numbomb) Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();int x = (int) (dimension.g
29、etWidth() - 400) / 2);int y = (int) (dimension.getHeight() - 500) / 2);this.xis = 310 * column /9;this.yis = 300 * row / 9 + 100;this.setBounds(x, y, this.xis, this.yis);this.setTitle("掃雷");this.myRows = row;this.myColumns = column;this.numBomb = numbomb;this.InitView();this.InitButton();t
30、his.setDefaultCloseOperation(this.EXIT_ON_CLOSE);/監(jiān)聽方法public void actionPerformed(ActionEvent e) /對(this.myRows * this.myColumns)個(gè)button的監(jiān)聽進(jìn)行處理for (int i = 0; i < (this.myRows * this.myColumns); i+) if(e.getSource() = myButtoni) CheckButton(ExtendButton) e.getSource();/重置按鈕監(jiān)聽if(e.getSource() = me
31、nuItemCZ) SetExtendButton();/設(shè)置按鈕進(jìn)行監(jiān)聽 else if(e.getSource() = menuItemSZ) new ViewReSet(this.myRows, this.myColumns, this.numBomb);this.dispose();public static void main(String args) new Game();/* 創(chuàng)建一個(gè)button的實(shí)體類 */package com.dhl.saolei;import javax.swing.JButton;public class ExtendButton extends JB
32、utton private int Button_pos;private int Button_num;private boolean Button_Status;private boolean Button_Visited;public int getButton_num() return Button_num;public void setButton_num(int button_num) this.Button_num = button_num;public int SetPostion(int pos) this.Button_pos = (pos >= 0) ? pos :
33、0;return this.Button_pos;public int GetPostion() return this.Button_pos;public boolean SetStatus(boolean sta) this.Button_Status = sta;return this.Button_Status;public boolean GetStatus() return this.Button_Status;public boolean SetVisited(boolean vis) this.Button_Visited = vis;return this.Button_Vi
34、sited;public boolean GetVisited() return this.Button_Visited;/* 設(shè)置button顯示圖片 */package com.dhl.saolei;import java.awt.Image;import javax.swing.ImageIcon;public class ShowNum private int num;public ShowNum(int n) this.num = n;public ImageIcon getImageIcon() ImageIcon imageIcon;switch (num) case 0:ima
35、geIcon = new ImageIcon("./class/images/dise.jpg");break;case 1:imageIcon = new ImageIcon("./class/images/dise1.jpg");break;case 2:imageIcon = new ImageIcon("./class/images/dise2.jpg");break;case 3:imageIcon = new ImageIcon("./class/images/dise3.jpg");break;cas
36、e 4:imageIcon = new ImageIcon("./class/images/dise4.jpg");break;case 5:imageIcon = new ImageIcon("./class/images/dise5.jpg");break;case 6:imageIcon = new ImageIcon("./class/images/dise6.jpg");break;case 7:imageIcon = new ImageIcon("./class/images/dise7.jpg");b
37、reak;case 8:imageIcon = new ImageIcon("./class/images/dise8.jpg");break;case 9:imageIcon = new ImageIcon("./class/images/lei.jpg");break;case 10:imageIcon = new ImageIcon("./class/images/biaose.jpg");break;case 11:imageIcon = new ImageIcon("./class/images/leibj.jpg
38、");break;default:imageIcon = new ImageIcon("./class/images/dise.jpg");break;return imageIcon;/* 創(chuàng)建一個(gè)新窗口,輸入新的行、列、雷數(shù),然后用新數(shù)據(jù)重新new一個(gè)Game窗口 */package com.dhl.saolei;import java.awt.Container;import java.awt.Dimension;import java.awt.GridBagConstraints;import java.awt.GridBagLayout;import j
39、ava.awt.Toolkit;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import javax.swing.JButton;import javax.swing.JDialog;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JPanel;import javax.swing.JTextField;public class ViewReSet extends JDialog implements A
40、ctionListenerprivate JFrame frame = null;private JPanel myPanel = null;private JLabel myLabel = null;private JLabel myLabelRow = null;private JLabel myLabelColum = null;private JLabel myLabelBombNum = null;private JTextField myFieldRow = null;private JTextField myFieldColum = null;private JTextField
41、 myFieldBombNum = null;private JButton buttonOK = null;private JButton buttonReset = null;private int row;private int column;private int bombNum;private int myrcb = new int 3;private void createView()Container container = this.getContentPane();this.myPanel = new JPanel(new GridBagLayout();container.
42、add(this.myPanel);GridBagConstraints gbc = new GridBagConstraints();gbc.gridx = 1;gbc.gridy = 0;this.myLabel = new JLabel("窗口行列設(shè)置");this.myPanel.add(this.myLabel, gbc);gbc.gridx = 0;gbc.gridy = 1;this.myLabelRow = new JLabel("行數(shù):");this.myPanel.add(this.myLabelRow, gbc);gbc.gridx
43、 = 1;gbc.gridy = 1;this.myFieldRow = new JTextField(10);this.myPanel.add(this.myFieldRow, gbc);gbc.gridx = 0;gbc.gridy = 2;this.myLabelColum = new JLabel("列數(shù):");this.myPanel.add(this.myLabelColum, gbc);gbc.gridx = 1;gbc.gridy = 2;this.myFieldColum = new JTextField(10);this.myPanel.add(this.myFieldColum, gbc);gbc.gridx = 0;gbc.gridy = 3;this.myLabelBombNum = new JLabel("雷數(shù):");this.myPanel.add(this.myLabelBombNum, gbc);gbc.gridx = 1;gbc.gridy = 3;this.myFieldBombNum = new JTextFiel
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 44519-2024工業(yè)閥門閥門用齒輪箱
- 2023年電動(dòng)開顱設(shè)備資金申請報(bào)告
- 生物必修1:2.5《細(xì)胞中的無機(jī)物》教案(遼寧適用)生物學(xué)
- 9 我們的影子(教案 )嶺南版美術(shù)二年級下冊1
- 黑龍江省伊春二中2025屆高三下學(xué)期一??荚嚮瘜W(xué)試題試卷含解析
- DB14-T 2778-2023 黃土丘陵區(qū)水土保持林營造技術(shù)規(guī)程
- 2024年工業(yè)噴墨打印頭項(xiàng)目投資申請報(bào)告代可行性研究報(bào)告
- 《機(jī)器學(xué)習(xí)-Python實(shí)踐》試卷8
- 2024年離婚協(xié)議書范文2024標(biāo)準(zhǔn)版新婚
- 15家車企保價(jià)協(xié)議書范文范本
- 中小額貸款申請表
- 中國建筑工程總公司總承包部部門職能與人員編制(合約商務(wù)部)
- 蘇教版小學(xué)數(shù)學(xué)四年級上冊《簡單的周期》學(xué)習(xí)單(公開課)
- 時(shí)間管理培訓(xùn)課程PPT課件
- 母差保護(hù)調(diào)試步驟
- 山東省中等職業(yè)學(xué)校專業(yè)建設(shè)標(biāo)準(zhǔn)
- 工程公司組織架構(gòu)圖(共1頁)
- 生物醫(yī)學(xué)中光鑷的運(yùn)用
- 粵教版科學(xué)三年級下冊第15課《植物的花》教學(xué)設(shè)計(jì)
- (完整版)鋰電池英文生產(chǎn)流程
- 申根簽證在職證明模板中英雙語
評論
0/150
提交評論