Java编写的扫雷小程序
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
整个程序使用了4个类:
Game 用于启动程序, 界面的布置,各种行列的算法。
ExtendButton 继承了Jbutton 用于新建button的各种属性
ShowNum 监听到某个button后,计算出此button周围有几个雷,不同的雷对应不通的图片,类得到button上应加载的图片地址
ViewReSet 此类用于新建一个窗口,用户输入自己想要的行、列、雷数,然后用新的行列雷数new 一个新的Game
biaose dise1 dise2 dise3
dise4 dise5 dise6 dise7
dise8 dise lei biaoji
/****************************************************************运行类创建游戏主窗体
*/
package com.dhl.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.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.JToolBar;
import javax.swing.KeyStroke;
import javax.swing.Timer;
public class Game extends JFrame implements ActionListener{ private Container myContainer;
private GridLayout myLayout;
private JPanel myPanelMain;
private JPanel myPanel;
private JToolBar myTool;
private JLabel time;
private JLabel labelTime;
private 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;
//初始化窗体
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.menuItemCZ.addActionListener(this);
this.menuE.add(this.menuItemCZ);
this.menuItemSZ = new JMenuItem("设置");
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);
this.menuBar.add(this.menuH);
setJMenuBar(this.menuBar);
//时间信息初始化
this.myTool = new JToolBar();
this.myTool.setLayout(new GridLayout(1, 4));
this.myTool.setFloatable(false);
BorderLayout borderLayout = new BorderLayout();
this.myPanelMain = new JPanel(borderLayout);
belTime = new JLabel("时间:");
this.time = new JLabel();
this.time.setForeground(Color.RED);
this.time.setFont(new Font("font", Font.PLAIN, 20));
belBombNum = new JLabel("雷数:");
this.bombNum = new JLabel();
this.bombNum.setText(String.valueOf(this.numBomb));
this.bombNum.setForeground(Color.RED);
this.bombNum.setFont(new Font("font", Font.PLAIN, 20));
this.myTool.add(belTime);
this.myTool.add(this.time);
this.myTool.add(belBombNum);
this.myTool.add(this.bombNum);
this.myPanelMain.add(this.myTool, borderLayout.NORTH);
}