运行在Eclipse环境下的java扫雷游戏的初级代码是什么?

运行在Eclipse环境下的java扫雷游戏的初级代码是什么?,第1张

import java.awt.Button\x0d\x0aimport java.util.Set\x0d\x0a// 每一个方块类\x0d\x0apublic class Diamond extends Button {\x0d\x0aprivate Diamond[] diamonds\x0d\x0a\x0d\x0a// 该小方块周围的八个方向上的小方块\x0d\x0aprivate Diamond east\x0d\x0aprivate Diamond north\x0d\x0aprivate Diamond northEast\x0d\x0aprivate Diamond northWest\x0d\x0aprivate Diamond south\x0d\x0aprivate Diamond southEast\x0d\x0aprivate Diamond southWest\x0d\x0aprivate Diamond west\x0d\x0a\x0d\x0aprivate boolean isBomb// 是否是雷\x0d\x0aprivate boolean isChange// 又没滑宽有被翻过\x0d\x0aprivate int no// 产源让颂生的方块的编号\x0d\x0a\x0d\x0a// 持有所有小方块的引用,方便进行 *** 作\x0d\x0apublic Diamond(Diamond[] diamonds) {\x0d\x0athis.diamonds = diamonds\x0d\x0a}\x0d\x0a\x0d\x0a// 按键时方块发生改变\x0d\x0apublic boolean change() {\x0d\x0athis.isChange = true/雹郑/ 说明已经翻过了\x0d\x0aif(isBomb) {// 触雷\x0d\x0a//this.setBackground(Color.red)\x0d\x0areturn true\x0d\x0a} else {// 不是雷,就显示周围雷的数目\x0d\x0a//this.setLabel(this.getNearBombNo() + "")\x0d\x0athis.setLabel(this.getNearBombNo() + "")\x0d\x0a//if(this.getNearBombNo() == 0) {\x0d\x0a//this.moveon()\x0d\x0a//}\x0d\x0areturn false\x0d\x0a}\x0d\x0a}\x0d\x0a\x0d\x0a// 获得该小方块周围雷的数量\x0d\x0apublic int getNearBombNo() {\x0d\x0aint no = 0\x0d\x0aif(this.northWest != null &&this.northWest.isBomb) no++\x0d\x0aif(this.north != null &&this.north.isBomb) no++\x0d\x0aif(this.northEast != null &&this.northEast.isBomb) no++\x0d\x0aif(this.east != null &&this.east.isBomb) no++\x0d\x0aif(this.southEast != null &&this.southEast.isBomb) no++\x0d\x0aif(this.south != null &&this.south.isBomb) no++\x0d\x0aif(this.southWest != null &&this.southWest.isBomb) no++\x0d\x0aif(this.west != null &&this.west.isBomb) no++\x0d\x0a\x0d\x0areturn no\x0d\x0a}\x0d\x0a\x0d\x0a// 获得该小方块周围的小方块\x0d\x0apublic Diamond getNearDimaond(int i) {\x0d\x0aint index = -1\x0d\x0aswitch (i) {\x0d\x0acase 1:// 1表示西北,2,表示北,以此类推\x0d\x0aindex = no - 10\x0d\x0aif(index return null\x0d\x0a} else {\x0d\x0areturn diamonds[index]\x0d\x0a}\x0d\x0acase 2:\x0d\x0aindex = no - 9\x0d\x0aif(index return null\x0d\x0a} else {\x0d\x0areturn diamonds[index]\x0d\x0a}\x0d\x0acase 3:\x0d\x0aindex = no - 8\x0d\x0aif(index return null\x0d\x0a} else {\x0d\x0areturn diamonds[index]\x0d\x0a}\x0d\x0acase 4:\x0d\x0aindex = no + 1\x0d\x0aif(no == 9 || no == 18 || no == 27 || no == 36 || no == 45 || no == 54 || no == 63 || no == 72 || no == 81) {\x0d\x0areturn null\x0d\x0a} else {\x0d\x0areturn diamonds[index]\x0d\x0a}\x0d\x0acase 5:\x0d\x0aindex = no + 10\x0d\x0aif(index >= 81 ||no == 9 || no == 18 || no == 27 || no == 36 || no == 45 || no == 54 || no == 63 || no == 72 || no == 81) {\x0d\x0areturn null\x0d\x0a} else {\x0d\x0areturn diamonds[index]\x0d\x0a}\x0d\x0acase 6:\x0d\x0aindex = no + 9\x0d\x0aif(index >81) {\x0d\x0areturn null\x0d\x0a} else {\x0d\x0areturn diamonds[index]\x0d\x0a}\x0d\x0acase 7:\x0d\x0aindex = no + 8\x0d\x0aif(index >= 81 || no==1 || no == 10 || no == 19 || no == 28 || no == 37 || no == 46 || no == 55 || no == 64 || no == 73) {\x0d\x0areturn null\x0d\x0a} else {\x0d\x0areturn diamonds[index]\x0d\x0a}\x0d\x0acase 8:\x0d\x0aindex = no - 1\x0d\x0aif(no==1 || no==10 || no == 19 || no == 28 || no == 37 || no == 46 || no == 55 || no == 64 || no == 73) {\x0d\x0areturn null\x0d\x0a} else {\x0d\x0areturn diamonds[index]\x0d\x0a}\x0d\x0a}\x0d\x0areturn null\x0d\x0a}\x0d\x0a\x0d\x0a// 递归,set是用来装已经翻过的小方块的,不然会死循环,为什么用set,因为set是不重复的\x0d\x0apublic void moveon(Set set) {\x0d\x0a\x0d\x0aset.add(this)// 先把自己加上\x0d\x0aif(this.getNorthWest() != null &&this.getNorthWest().isBomb == false) {\x0d\x0athis.getNorthWest().change()\x0d\x0a\x0d\x0aif(this.getNorthWest().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getNorthWest()) == false)\x0d\x0athis.getNorthWest().moveon(set)\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getNorthWest())\x0d\x0a}\x0d\x0a\x0d\x0aif(this.getNorth() != null &&this.getNorth().isBomb == false) {\x0d\x0athis.getNorth().change()\x0d\x0aif(this.getNorth().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getNorth()) == false)\x0d\x0athis.getNorth().moveon(set)\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getNorth())\x0d\x0a} \x0d\x0a\x0d\x0aif(this.getNorthEast() != null &&this.getNorthEast().isBomb == false) {\x0d\x0athis.getNorthEast().change()\x0d\x0aif(this.getNorthEast().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getNorthEast()) == false)\x0d\x0athis.getNorthEast().moveon(set)\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getNorthEast())\x0d\x0a} \x0d\x0a\x0d\x0aif(this.getEast() != null &&this.getEast().isBomb == false) {\x0d\x0athis.getEast().change()\x0d\x0aif(this.getEast().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getEast()) == false)\x0d\x0athis.getEast().moveon(set)\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getEast())\x0d\x0a} \x0d\x0a\x0d\x0aif(this.getSouthEast() != null &&this.getSouthEast().isBomb == false) {\x0d\x0athis.getSouthEast().change()\x0d\x0aif(this.getSouthEast().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getSouthEast()) == false)\x0d\x0athis.getSouthEast().moveon(set)\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getSouthEast())\x0d\x0a} \x0d\x0a\x0d\x0aif(this.getSouth() != null &&this.getSouth().isBomb == false) {\x0d\x0athis.getSouth().change()\x0d\x0aif(this.getSouth().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getSouth()) == false)\x0d\x0athis.getSouth().moveon(set)\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getSouth())\x0d\x0a} \x0d\x0a\x0d\x0aif(this.getSouthWest() != null &&this.getSouthWest().isBomb == false) {\x0d\x0athis.getSouthWest().change()\x0d\x0aif(this.getSouthWest().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getSouthWest()) == false)\x0d\x0athis.getSouthWest().moveon(set)\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getSouthWest())\x0d\x0a} \x0d\x0a\x0d\x0aif(this.getWest() != null &&this.getWest().isBomb == false) {\x0d\x0athis.getWest().change()\x0d\x0aif(this.getWest().getNearBombNo() == 0) {\x0d\x0aif(set.contains(this.getWest()) == false)\x0d\x0athis.getWest().moveon(set)\x0d\x0a}\x0d\x0a\x0d\x0aset.add(this.getWest())\x0d\x0a} \x0d\x0a}\x0d\x0a\x0d\x0a/*public Diamond[] getDiamonds() {\x0d\x0areturn diamonds\x0d\x0a}*/\x0d\x0a\x0d\x0apublic Diamond getEast() {\x0d\x0areturn east\x0d\x0a}\x0d\x0a\x0d\x0apublic int getNo() {\x0d\x0areturn no\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getNorth() {\x0d\x0areturn north\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getNorthEast() {\x0d\x0areturn northEast\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getNorthWest() {\x0d\x0areturn northWest\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getSouth() {\x0d\x0areturn south\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getSouthEast() {\x0d\x0areturn southEast\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getSouthWest() {\x0d\x0areturn southWest\x0d\x0a}\x0d\x0a\x0d\x0apublic Diamond getWest() {\x0d\x0areturn west\x0d\x0a}\x0d\x0a\x0d\x0apublic boolean isBomb() {\x0d\x0areturn isBomb\x0d\x0a}\x0d\x0a\x0d\x0apublic boolean isChange() {\x0d\x0areturn isChange\x0d\x0a}\x0d\x0a\x0d\x0apublic void setBomb(boolean isBomb) {\x0d\x0athis.isBomb = isBomb\x0d\x0a}\x0d\x0a\x0d\x0apublic void setChange(boolean isChange) {\x0d\x0athis.isChange = isChange\x0d\x0a}\x0d\x0a\x0d\x0apublic void setDiamonds(Diamond[] diamonds) {\x0d\x0athis.diamonds = diamonds\x0d\x0a}\x0d\x0a\x0d\x0apublic void setEast(Diamond east) {\x0d\x0athis.east = east\x0d\x0a}\x0d\x0a\x0d\x0apublic void setNo(int no) {\x0d\x0athis.no = no\x0d\x0a}\x0d\x0a\x0d\x0apublic void setNorth(Diamond north) {\x0d\x0athis.north = north\x0d\x0a}\x0d\x0a\x0d\x0apublic void setNorthEast(Diamond northEast) {\x0d\x0athis.northEast = northEast\x0d\x0a}\x0d\x0a\x0d\x0apublic void setNorthWest(Diamond northWest) {\x0d\x0athis.northWest = northWest\x0d\x0a}\x0d\x0a\x0d\x0apublic void setSouth(Diamond south) {\x0d\x0athis.south = south\x0d\x0a}\x0d\x0a\x0d\x0apublic void setSouthEast(Diamond southEast) {\x0d\x0athis.southEast = southEast\x0d\x0a}\x0d\x0a\x0d\x0apublic void setSouthWest(Diamond southWest) {\x0d\x0athis.southWest = southWest\x0d\x0a}\x0d\x0a\x0d\x0apublic void setWest(Diamond west) {\x0d\x0athis.west = west\x0d\x0a}\x0d\x0a\x0d\x0a}

import java.awt.*

import java.awt.event.*

import javax.swing.*

public class Frame

extends JFrame {

JTextField text

JLabel nowBomb, setBomb

int BombNum, BlockNum//禅滑闷 当前雷数,当前方块数

int rightBomb, restBomb, restBlock/贺弯/ 找到的地雷数,剩余雷数,剩余方块数

JButton start = new JButton("让旦 开始 ")

JPanel MenuPamel = new JPanel()

JPanel bombPanel = new JPanel()

Bomb[][] bombButton

JPanel c

BorderLayout borderLayout1 = new BorderLayout()

GridLayout gridLayout1 = new GridLayout()

public Frame() {

try {

setDefaultCloseOperation(EXIT_ON_CLOSE)

jbInit()

}

catch (Exception exception) {

exception.printStackTrace()

}

}

private void jbInit() throws Exception {

c = (JPanel) getContentPane()

setTitle("扫雷")

c.setBackground(Color.WHITE)

MenuPamel.setBackground(Color.GRAY)

c.setLayout(borderLayout1)

setSize(new Dimension(600, 600))

setResizable(false)

BlockNum = 144

BombNum = 10

text = new JTextField("10 ", 3)

nowBomb = new JLabel("当前雷数" + ":" + BombNum)

setBomb = new JLabel("设置地雷数")

start.addActionListener(new Frame1_start_actionAdapter(this))

MenuPamel.add(setBomb)

MenuPamel.add(text)

MenuPamel.add(start)

MenuPamel.add(nowBomb)

c.add(MenuPamel, java.awt.BorderLayout.SOUTH)

bombPanel.setLayout(gridLayout1)

gridLayout1.setColumns( (int) Math.sqrt(BlockNum))

gridLayout1.setRows( (int) Math.sqrt(BlockNum))

bombButton = new Bomb[ (int) Math.sqrt(BlockNum)][ (int) Math.sqrt(BlockNum)]

for (int i = 0i <(int) Math.sqrt(BlockNum)i++) {

for (int j = 0j <(int) Math.sqrt(BlockNum)j++) {

bombButton[i][j] = new Bomb(i, j)

//bombButton[i][j].setSize(10, 10)

bombButton[i][j].setFont(new Font("", Font.PLAIN, 14))//设置字体大小

bombButton[i][j].setForeground(Color.white)

bombButton[i][j].addMouseListener(new Bomb_mouseAdapter(this))

bombButton[i][j].addActionListener(new Bomb_actionAdapter(this))

bombPanel.add(bombButton[i][j])

}

}

c.add(bombPanel, java.awt.BorderLayout.CENTER)

startBomb()

}

/* 开始按钮 */

public void start_actionPerformed(ActionEvent e) {

int num=Integer.parseInt(text.getText().trim())

if (num >= 5 &&num <50) {

BombNum = num

startBomb()

}

else if (num <5) {

JOptionPane.showMessageDialog(null, "您设置的地雷数太少了,请重设!", "错误",

JOptionPane.ERROR_MESSAGE)

num=10

BombNum = num

}

else {

JOptionPane.showMessageDialog(null, "您设置的地雷数太多了,请重设!", "错误",

JOptionPane.ERROR_MESSAGE)

num=10

BombNum = num

}

}

/* 开始,布雷 */

public void startBomb() {

nowBomb.setText("当前雷数" + ":" + BombNum)

for (int i = 0i <(int) Math.sqrt(BlockNum)i++) {

for (int j = 0j <(int) Math.sqrt(BlockNum)j++) {

bombButton[i][j].isBomb = false

bombButton[i][j].isClicked = false

bombButton[i][j].isRight = false

bombButton[i][j].BombFlag = 0

bombButton[i][j].BombRoundCount = 9

bombButton[i][j].setEnabled(true)

bombButton[i][j].setText("")

bombButton[i][j].setFont(new Font("", Font.PLAIN, 14))//设置字体大小

bombButton[i][j].setForeground(Color.BLUE)

rightBomb = 0

restBomb = BombNum

restBlock = BlockNum - BombNum

}

}

for (int i = 0i <BombNum) {

int x = (int) (Math.random() * (int) (Math.sqrt(BlockNum) - 1))

int y = (int) (Math.random() * (int) (Math.sqrt(BlockNum) - 1))

if (bombButton[x][y].isBomb != true) {

bombButton[x][y].isBomb = true

i++

}

}

CountRoundBomb()

}

/* 计算方块周围雷数 */

public void CountRoundBomb() {

for (int i = 0i <(int) Math.sqrt(BlockNum)i++) {

for (int j = 0j <(int) Math.sqrt(BlockNum)j++) {

int count = 0

// 当需要检测的单元格本身无地雷的情况下,统计周围的地雷个数

if (bombButton[i][j].isBomb != true) {

for (int x = i - 1x <i + 2x++) {

for (int y = j - 1y <j + 2y++) {

if ( (x >= 0) &&(y >= 0)

&&(x <( (int) Math.sqrt(BlockNum)))

&&(y <( (int) Math.sqrt(BlockNum)))) {

if (bombButton[x][y].isBomb == true) {

count++

}

}

}

}

bombButton[i][j].BombRoundCount = count

}

}

}

}

/* 是否挖完了所有的雷 */

public void isWin() {

restBlock = BlockNum - BombNum

for (int i = 0i <(int) Math.sqrt(BlockNum)i++) {

for (int j = 0j <(int) Math.sqrt(BlockNum)j++) {

if (bombButton[i][j].isClicked == true) {

restBlock--

}

}

}

if (rightBomb == BombNum || restBlock == 0) {

JOptionPane.showMessageDialog(this, "您挖完了所有的雷,您胜利了!", "胜利",

JOptionPane.INFORMATION_MESSAGE)

startBomb()

}

}

/** 当选中的位置为空,则翻开周围的地图* */

public void isNull(Bomb ClickedButton) {

int i, j

i = ClickedButton.num_x

j = ClickedButton.num_y

for (int x = i - 1x <i + 2x++) {

for (int y = j - 1y <j + 2y++) {

if ( ( (x != i) || (y != j)) &&(x >= 0) &&(y >= 0)

&&(x <( (int) Math.sqrt(BlockNum)))

&&(y <( (int) Math.sqrt(BlockNum)))) {

if (bombButton[x][y].isBomb == false

&&bombButton[x][y].isClicked == false

&&bombButton[x][y].isRight == false) {

turn(bombButton[x][y])

}

}

}

}

}

/* 翻开 */

public void turn(Bomb ClickedButton) {

ClickedButton.setEnabled(false)

ClickedButton.isClicked = true

if (ClickedButton.BombRoundCount >0) {

ClickedButton.setText(ClickedButton.BombRoundCount + "")

}

else {

isNull(ClickedButton)

}

}

/* 左键点击 */

public void actionPerformed(ActionEvent e) {

if ( ( (Bomb) e.getSource()).isClicked == false

&&( (Bomb) e.getSource()).isRight == false) {

if ( ( (Bomb) e.getSource()).isBomb == false) {

turn( ( (Bomb) e.getSource()))

isWin()

}

else {

for (int i = 0i <(int) Math.sqrt(BlockNum)i++) {

for (int j = 0j <(int) Math.sqrt(BlockNum)j++) {

if (bombButton[i][j].isBomb == true) {

bombButton[i][j].setText("b")

}

}

}

( (Bomb) e.getSource()).setForeground(Color.RED)

( (Bomb) e.getSource()).setFont(new Font("", Font.BOLD, 20))

( (Bomb) e.getSource()).setText("X")

JOptionPane.showMessageDialog(this, "你踩到地雷了,按确定重来", "踩到地雷", 2)

startBomb()

}

}

}

/* 右键点击 */

public void mouseClicked(MouseEvent e) {

Bomb bombSource = (Bomb) e.getSource()

boolean right = SwingUtilities.isRightMouseButton(e)

if ( (right == true) &&(bombSource.isClicked == false)) {

bombSource.BombFlag = (bombSource.BombFlag + 1) % 3

if (bombSource.BombFlag == 1) {

if (restBomb >0) {

bombSource.setForeground(Color.RED)

bombSource.setText("F")

bombSource.isRight = true

restBomb--

}

else {

bombSource.BombFlag = 0

}

}

else if (bombSource.BombFlag == 2) {

restBomb++

bombSource.setText("Q")

bombSource.isRight = false

}

else {

bombSource.setText("")

}

if (bombSource.isBomb == true) {

if (bombSource.BombFlag == 1) {

rightBomb++

}

else if (bombSource.BombFlag == 2) {

rightBomb--

}

}

nowBomb.setText("当前雷数" + ":" + restBomb)

isWin()

}

}

public static void main(String[] args) {

Frame frame = new Frame()

frame.setVisible(true)

}

}

class Frame1_start_actionAdapter

implements ActionListener {

private Frame adaptee

Frame1_start_actionAdapter(Frame adaptee) {

this.adaptee = adaptee

}

public void actionPerformed(ActionEvent e) {

adaptee.start_actionPerformed(e)

}

}

////////////////////////////

class Bomb

extends JButton {

int num_x, num_y// 第几号方块

int BombRoundCount// 周围雷数

boolean isBomb// 是否为雷

boolean isClicked// 是否被点击

int BombFlag// 探雷标记

boolean isRight// 是否点击右键

public Bomb(int x, int y) {

num_x = x

num_y = y

BombFlag = 0

BombRoundCount = 9

isBomb = false

isClicked = false

isRight = false

}

}

class Bomb_actionAdapter

implements ActionListener {

private Frame adaptee

Bomb_actionAdapter(Frame adaptee) {

this.adaptee = adaptee

}

public void actionPerformed(ActionEvent e) {

adaptee.actionPerformed(e)

}

}

class Bomb_mouseAdapter

extends MouseAdapter {

private Frame adaptee

Bomb_mouseAdapter(Frame adaptee) {

this.adaptee = adaptee

}

public void mouseClicked(MouseEvent e) {

adaptee.mouseClicked(e)

}

}

import java.awt.BorderLayout

import java.awt.Container

import java.awt.Font

import java.awt.GridLayout

import java.awt.Insets

import java.awt.event.ActionEvent

import java.awt.event.ActionListener

import java.awt.event.MouseAdapter

import java.awt.event.MouseEvent

import javax.swing.JButton

import javax.swing.JFrame

import javax.swing.JLabel

import javax.swing.JMenu

import javax.swing.JMenuBar

import javax.swing.JMenuItem

import javax.swing.JPanel

import javax.swing.Timer

public class ScanLei1 extends JFrame implements ActionListener{

private static final long serialVersionUID = 1L

private Container contentPane

private JButton btn

private JButton[] btns

private JLabel b1

private JLabel b2

private JLabel b3

private Timer timer

private int row=9

private int col=9

private int bon=10

private int[][] a

private int b

private int[] a1

private JPanel p,p1,p2,p3

public ScanLei1(String title){

super(title)

contentPane=getContentPane()

setSize(297,377)

this.setBounds(400, 100, 400, 500)

setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE)

timer =new Timer(1000,(ActionListener) this)

a = new int[row+2][col+2]

initGUI()

}

public void initGUI(){

p3=new JPanel()

b=bon

JMenuBar menuBar=new JMenuBar()

JMenu menu1=new JMenu("游戏")

JMenu menu2=new JMenu("帮助")

JMenuItem mi1=new JMenuItem("初级")

JMenuItem mi2 = new JMenuItem("中级")

JMenuItem mi3 =new JMenuItem("高级")

mi1.addActionListener(this)

menu1.add(mi1)

mi2.addActionListener(this)

menu1.add(mi2)

mi3.addActionListener(this)

menu1.add(mi3)

menuBar.add(menu1)

menuBar.add(menu2)

p3.add(menuBar)

b1=new JLabel(bon+"")

a1=new int[bon]

btn =new JButton("开始")

btn.addActionListener(this)

b2=new JLabel("0")

b3=new JLabel("")

btns=new JButton[row*col]

p=new JPanel()

p.setLayout(new BorderLayout())

contentPane.add(p)

p.add(p3,BorderLayout.NORTH)

//combo=new JComboBox(new Object[]{"初级","中级","高级"} )

//加监听

/*combo.addItemListener(new ItemListener(){

}})*/

p1=new JPanel()

//在那个位置

//(( FlowLayout)p1.getLayout()).setAlignment( FlowLayout.RIGHT)

p1.add(b1)

p1.add(btn)

p1.add(b2)

p1.add(b3)

p.add(p3,BorderLayout.NORTH)

p.add(p1,BorderLayout.CENTER)

p2=new JPanel()

p2.setLayout(new GridLayout(row,col,0,0))

for(int i=0i<row*coli++){

btns[i]=new JButton("")

btns[i].setMargin(new Insets(0,0,0,0))

btns[i].setFont(new Font(null,Font.BOLD,25))

btns[i].addActionListener(this)

btns[i].addMouseListener(new NormoreMouseEvent())

p2.add(btns[i])

}

contentPane.add(p,BorderLayout.NORTH)

contentPane.add(p2,BorderLayout.CENTER)

}

public void go(){

setVisible(true)

}

public static void main(String[] args){

new ScanLei1("扫雷").go()

}

public void out(int[][] a,JButton[] btns,ActionEvent e,int i,int x,int y){

int p=1

if(a[x][y]==0){

a[x][y]=10

btns[i].setEnabled(false) //33

for(int l=y-1l<=y+1l++){

int m=x-1-1

int n=l-1

p=1

System.out.println(a[1][2])

if(n>-1&&n<col&&m>-1&&m<row)

{

for(int q=0q<row&&p==1q++){//col-->row

if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)*col)){

if(a[x-1][l]!=0&&a[x-1][l]!=10){

btns[n+col*q].setText(a[x-1][l]+"")

a[x-1][l]=10

btns[n+col*q].setEnabled(false)

}

else if(a[x-1][l]==0){

//a[x-1][l]=10

btns[n+col*q].setEnabled(false)

out(a,btns,e,n+col*q,x-1,l)////55////

a[x-1][l]=10

btns[n+col*q].setEnabled(false)

}

p=0

}

}

}

p=1

m=x

if(n>-1&&n<col&&m>-1&&m<col)

{

for(int q=0q<row&&p==1q++){

if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)*col)){

if(a[x+1][l]!=0&&a[x+1][l]!=10){

btns[n+col*q].setText(a[x+1][l]+"")

a[x+1][l]=10

btns[n+col*q].setEnabled(false)

}

else if(a[x+1][l]==0){

out(a,btns,e,n+col*q,x+1,l)///55////

a[x+1][l]=10

btns[n+col*q].setEnabled(false)

}

p=0

}

}

}

}

int m=x-1

int n=y-1-1

p=1

if(n>-1&&n<col&&m>-1&&m<col)

{

for(int q=0q<row&&p==1q++){

if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)*col)){

if(a[x][y-1]!=0&&a[x][y-1]!=10){

btns[n+col*q].setText(a[x][y-1]+"")

a[x][y-1]=10

btns[n+col*q].setEnabled(false)

}

else if(a[x][y-1]==0){

out(a,btns,e,n+col*q,x,y-1)

a[x][y-1]=10

btns[n+col*q].setEnabled(false)

}

p=0

}

}

}

p=1

m=x-1

n=y+1-1

if(n>-1&&n<col&&m>-1&&m<col)

{

for(int q=0q<row&&p==1q++){

if(((n+col*q)>=(m*col))&&((n+col*q)<(m+1)*col)){

if(a[x][y+1]!=0&&a[x][y+1]!=10){

btns[n+col*q].setText(a[x][y+1]+"")

a[x][y+1]=10

btns[n+col*q].setEnabled(false)

}

else if(a[x][y+1]==0){

out(a,btns,e,n+col*q,x,y+1)

a[x][y+1]=10

btns[n+col*q].setEnabled(false)

}

p=0

}

}

}

}

}

public void actionPerformed(ActionEvent e) {

if(e.getActionCommand()=="初级"){

row=9

col=9

bon=10

a1=new int[bon]

b=bon

//setSize(297,377)

a = new int[row+2][col+2]

this.remove(p2)

timer.stop()

b1.setText("10")

b2.setText("0")

b3.setText("")

btns=new JButton[row*col]

p2=new JPanel()

p2.setLayout(new GridLayout(row,col,0,0))

for(int i=0i<row*coli++){

btns[i]=new JButton(" ")

btns[i].setMargin(new Insets(0,0,0,0))

btns[i].setFont(new Font(null,Font.BOLD,25))

btns[i].addActionListener(this)

btns[i].addMouseListener(new NormoreMouseEvent())

p2.add(btns[i])

}

contentPane.add(p2,BorderLayout.CENTER)

//setSize(297,377)

this.pack()

for(int i=0i<row*coli++){

btns[i].setText(" ")

btns[i].setEnabled(true)

}

for(int i=0i<row+2i++){

for(int j=0j<col+2j++){

a[i][j]=0

}

}

}else if(e.getActionCommand()=="中级"){

row=16

col=16

bon=40

//setSize(33*col,33*row+80)

a1=new int[bon]

a = new int[row+2][col+2]

b=bon

this.remove(p2)

timer.stop()

b1.setText("40")

b2.setText("0")

b3.setText("")

btns=new JButton[row*col]

p2=new JPanel()

p2.setLayout(new GridLayout(row,col,0,0))

for(int i=0i<row*coli++){

btns[i]=new JButton("")

btns[i].setMargin(new Insets(0,0,0,0))

btns[i].setFont(new Font(null,Font.BOLD,25))

btns[i].addActionListener(this)

btns[i].addMouseListener(new NormoreMouseEvent())

p2.add(btns[i])

}

contentPane.add(p2,BorderLayout.CENTER)

this.pack()

//setSize(33*col,33*row+80)

for(int i=0i<row*coli++){

btns[i].setText("")

btns[i].setEnabled(true)

}

for(int i=0i<row+2i++){

for(int j=0j<col+2j++){

a[i][j]=0

}

}

}else if(e.getActionCommand()=="高级"){

row=16

col=32

bon=99

setSize(33*col,33*row+80)

a1=new int[bon]

a = new int[row+2][col+2]

b=bon

this.remove(p2)

timer.stop()

b1.setText("99")

b2.setText("0")

b3.setText("")

btns=new JButton[row*col]

p2=new JPanel()

p2.setLayout(new GridLayout(row,col,0,0))

for(int i=0i<row*coli++){

btns[i]=new JButton("")

btns[i].setMargin(new Insets(0,0,0,0))

btns[i].setFont(new Font(null,Font.BOLD,25))

btns[i].addActionListener(this)

btns[i].addMouseListener(new NormoreMouseEvent())

p2.add(btns[i])

}

contentPane.add(p2,BorderLayout.CENTER)

//setSize(33*col,33*row+80)

this.pack()

for(int i=0i<row*coli++){

btns[i].setText("")

btns[i].setEnabled(true)

}

for(int i=0i<row+2i++){

for(int j=0j<col+2j++){

a[i][j]=0

}

}

}

if(e.getSource()==btn){

timer.start()

b=bon

b3.setText("")

//System.out.println(bon)

//清空

for(int i=0i<row*coli++){

btns[i].setText("")

btns[i].setEnabled(true)

}

for(int i=0i<row+2i++){

for(int j=0j<col+2j++){

a[i][j]=0

}

}

//产生随机数

for(int i=0i<boni++)

{ int p=1

int m=(int)(Math.random()*row*col)

while(p==1){

int l=1

int j

for( j=0j<i&&l==1j++){

if(a1[j]==m){

m=(int)(Math.random()*row*col)

l=0

}

}

if(j==i){

a1[i]=m

p=0

}

}

}

b1.setText(bon+"")

b2.setText("0")

//布雷

for(int i=0i<boni++){

int x=(a1[i]/col+1)

int y=(a1[i]%col+1)

a[x][y]=100

}

for(int i=0i<row+2i++){

for(int j=0j<col+2j++){

if(i==0||j==0||i==row+1||j==col+1){

a[i][j]=0

}

}

}

for(int i=1i<=rowi++){

for(int j=1j<=colj++){

if(a[i][j]!=100){

for(int l=j-1l<=j+1l++){

if(a[i-1][l]==100){

a[i][j]++

}

if(a[i+1][l]==100){

a[i][j]++

}

}

if(a[i][j-1]==100){

a[i][j]++

}

if(a[i][j+1]==100){

a[i][j]++

}

}

}

}

}

if(e.getSource()==timer)

{

String time=b2.getText().trim()

int t=Integer.parseInt(time)

//System.out.println(t)

if(t>=600){

timer.stop()

}else{

t++

b2.setText(t+"")

}

}

for(int i=0i<col*rowi++){

if(btns[i].getText()!="★")

{

int x=i/col+1

int y=i%col+1

if(e.getSource()==btns[i]&&a[x][y]==100){

btns[i].setText("★")

btns[i].setEnabled(false)

a[x][y]=10

for(int k=0k<col*rowk++){

int m1=k/col+1

int n1=k%col+1

if(a[m1][n1]!=10&&btns[k].getText()=="★"){

btns[k].setText("*o*")

}

}

for(int j=0j<col*rowj++){

int m=j/col+1

int n=j%col+1

if(a[m][n]==100){

btns[j].setText("★")

btns[j].setEnabled(false)

b3.setText("你输了 !!")

}

btns[j].setEnabled(false)

a[m][n]=10

}

timer.stop()

}

else if(e.getSource()==btns[i]){

if(a[x][y]==0){

out(a,btns,e,i,x,y)

a[x][y]=10

btns[i].setEnabled(false)

}

if(a[x][y]!=0&&a[x][y]!=10){

btns[i].setText(a[x][y]+"")

btns[i].setEnabled(false)

a[x][y]=10

}

}

}else if(btns[i].getText()=="★"){

}

}

}

class NormoreMouseEvent extends MouseAdapter{

public void mouseClicked(MouseEvent e) {

System.out.println(b)

for(int i=0i<col*rowi++){

int x1=i/col+1

int y1=i%col+1

if(e.getSource()==btns[i]&&btns[i].getText()!="★"&&a[x1][y1]!=10)

{

if(e.getButton()==MouseEvent.BUTTON3){

btns[i].setText("★")

b--

if(b==0){

int flag=0

for(int j=0j<col*rowj++){

int x=j/col+1

int y=j%col+1

if(a[x][y]==100&&btns[j].getText()=="★"){

flag++

}

}

if(flag==bon){

timer.stop()

b3.setText("你赢了!")

}

}

b1.setText(b+"")

}

}else if(e.getSource()==btns[i]&&btns[i].getText()=="★"&&a[x1][y1]!=-1){

if(e.getButton()==MouseEvent.BUTTON3){

btns[i].setText("")

b++

if(b>bon){

b1.setText(bon+"")

}

else{

b1.setText(b+"")

}

btns[i].setEnabled(true)

}

}

}

}

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/12432839.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-25
下一篇 2023-05-25

发表评论

登录后才能评论

评论列表(0条)

保存