首页编程java编程java语言写扫雷用什么?用java怎么写扫雷程序

java语言写扫雷用什么?用java怎么写扫雷程序

编程之家2023-10-14101次浏览

各位老铁们,大家好,今天由我来为大家分享java语言写扫雷用什么,以及用java怎么写扫雷程序的相关问题知识,希望对大家有所帮助。如果可以帮助到大家,还望关注收藏下本站,您的支持是我们最大的动力,谢谢大家了哈,下面我们开始吧!

java语言写扫雷用什么?用java怎么写扫雷程序

java扫雷游戏代码

import java.awt.*;

import java.awt.event.*;

import javax.swing.*;

java语言写扫雷用什么?用java怎么写扫雷程序

public class Frame

extends JFrame{

JTextField text;

java语言写扫雷用什么?用java怎么写扫雷程序

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= 0; i<(int) Math.sqrt(BlockNum); i++){

for(int j= 0; j<(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= 0; i<(int) Math.sqrt(BlockNum); i++){

for(int j= 0; j<(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= 0; i< 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= 0; i<(int) Math.sqrt(BlockNum); i++){

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

int count= 0;

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

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

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

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

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= 0; i<(int) Math.sqrt(BlockNum); i++){

for(int j= 0; j<(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- 1; x< i+ 2; x++){

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

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= 0; i<(int) Math.sqrt(BlockNum); i++){

for(int j= 0; j<(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);

}

}

java扫雷 开发环境

import java.awt.*;

import javax.swing.*;

import java.util.Random;

import java.awt.event.*;

class Min extends JPanel//雷的类

{

//备注:鼠标的左键= 1;右键= 3;中键= 2

private int flag= 0,statu= 0;//定义雷的属性 0:没有打开 1:打开 2:标示为雷 3:不确定

//flag= 0不是雷; flag= 1是雷

private int but,count= 0;//but:哪一个鼠标键被按下去了 count:这个区域周围有多少个雷

private int mx= 0,my= 0,mw= 10;//定义雷的坐标和宽度

public Min()//构造函数

{

statu= 0;

}

public Min(int f,int x,int y,int w)

//构造函数

{

flag= f;

mx= x;

my= y;

mw= w;

}

public int getFlag(){return flag;}

public int getStatu(){return statu;}

public int getMx(){return mx;}

public int getMy(){return my;}

public int getMw(){return mw;}

public int getCount(){return count;}

public void setFlag(int f){flag= f;}

public void setCount(int c){count= c;}

public void setData(int f,int x,int y,int w,int s)

//传递值

{

flag= f;

mx=(x-1)*w;

my=(y-1)*w;

mw= w-1;

statu= s;

}

//根据你点击鼠标的不同来改变雷的属性

public int sendKey(int key)

{

//返回值,如果游戏结束则返回-1

int rtn= 1;

if(key== 3)

{

switch(statu)

{

case 1:

break;

case 2:

statu= 3;

break;

case 3:

statu= 0;

break;

case 0:

statu= 2;

break;

}

rtn= 1;

}

if(key== 1&& statu== 0)

{

switch(flag)

{

case 0:

statu= 1;

rtn= 2;

break;

case 1:

statu= 1;

rtn=-1;

break;

}

}

return rtn;

}

}

class DrawPanel extends JPanel

{

private int i,j;

private int f= 0;//if f= 1 then game over,if f=2 then win

private int chx= 0,chy= 0;//专门记录坐标x,y的值

private int msum= 6,ksum= 0;//msum:雷的个数,ksum:标示雷的个数

private int bx= 10,by= 10,bw= 40;//bx,by:棋盘的大小,bw:棋子的大小

public Min board[][]={

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

{new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min(),new Min()},

};

//画坐标为ax,ay区域的雷的状态

public void draw(Graphics g,int ax,int ay)

{

int x,y,w;//坐标x,y;和宽度:w

int s,c,flag;//状态;雷的个数;

int cx= bw/2- 4;

int cy= bw/2+ 4;

x= board[ax][ay].getMx();

y= board[ax][ay].getMy();

w= board[ax][ay].getMw();

s= board[ax][ay].getStatu();

c= board[ax][ay].getCount();

flag= board[ax][ay].getFlag();

switch(s)

{

case 0://没有打开状态

{

g.setColor(Color.black);

g.fillRect(x,y,w,w);

break;

}

case 1://打开状态

{

g.setColor(Color.blue);

g.fillRect(x,y,w,w);

if(c!= 0&& flag== 0)//此处没有雷

{

g.setColor(Color.red);

g.drawString(String.valueOf(c),x+ cx,y+ cy);

}

if(flag== 1)//此处有雷

{

g.setColor(Color.red);

g.fillRect(x,y,w,w);

g.setColor(Color.blue);

g.drawString("雷",x+ cx,y+ cy);

}

break;

}

case 2://标雷状态

{

g.setColor(Color.green);

g.fillRect(x,y,w,w);

g.setColor(Color.blue);

g.drawString("旗",x+ cx,y+ cy);

break;

}

case 3://不确定状态

{

g.setColor(Color.black);

g.fillRect(x,y,w,w);

g.setColor(Color.red);

g.drawString("?",x+ cx,y+ cy);

break;

}

default:

break;

}

}

//没有图形器的绘图函数:画出坐标ax,ay的雷的状态和图形

public void draw(int ax,int ay)

{

Graphics g;

g= this.getGraphics();

draw(g,ax,ay);

}

//打开周围没有雷的地方,并且绘画所在区域点击左键触发

public int openNoMin(int ax,int ay)

{

int i,j;

if(ax<1||ay<1||ax>bx||ay>by) return 0;//鼠标点击的区域出界了

if(board[ax][ay].getStatu()!= 0) return 0;//如果此区域打开了,返回

board[ax][ay].sendKey(1);//如果返回值等于-1,就说明游戏结束

draw(ax,ay);

if(board[ax][ay].getFlag()== 1)

//如果游戏结束,把所有的雷都显示出来

{

for(i= 1;i<=bx;i++)

{

for(j= 1;j<= by;j++)

{

if(board[i][j].getFlag()== 1)

{

board[i][j].sendKey(1);

draw(i,j);

}

}

}

return-1;

}

//如果游戏没有结束

if(board[ax][ay].getCount()> 0)

{

ksum++;

return 1;//周围有雷,就不用打开周围地区

}

if(board[ax][ay].getCount()== 0&& board[ax][ay].getFlag()== 0)

//周围没有雷,打开周围地区,直到有雷的地区

{

openNoMin(ax-1,ay-1);openNoMin(ax,ay-1);openNoMin(ax+1,ay-1);

openNoMin(ax-1,ay); openNoMin(ax+1,ay);

openNoMin(ax-1,ay+1);openNoMin(ax,ay+1);openNoMin(ax+1,ay+1);

}

ksum++;

return 1;

}

//计算坐标x,y的周围雷的个数

public int getCount(int ai,int aj)

{

int sum= 0;

if(board[ai][aj].getFlag()== 1)

{

return sum;

}

if(ai>1&&aj>1&&ai<bx&&aj<by)

{

sum= board[ai-1][aj-1].getFlag()+ board[ai][aj-1].getFlag()+ board[ai+1][aj-1].getFlag()+

board[ai-1][aj ].getFlag()+ board[ai+1][aj ].getFlag()+

board[ai-1][aj+1].getFlag()+ board[ai][aj+1].getFlag()+ board[ai+1][aj+1].getFlag();

}

if(ai==1&&aj==1)

{

sum= board[ai+1][aj ].getFlag()+

board[ai][aj+1].getFlag()+ board[ai+1][aj+1].getFlag();

}

if(ai==1&&aj==by)

{

sum= board[ai][aj-1].getFlag()+ board[ai+1][aj-1].getFlag()+

board[ai+1][aj ].getFlag();

}

if(ai==bx&&aj==1)

{

sum= board[ai-1][aj ].getFlag()+

board[ai-1][aj+1].getFlag()+ board[ai][aj+1].getFlag();

}

if(ai==bx&&aj==by)

{

sum= board[ai-1][aj-1].getFlag()+ board[ai][aj-1].getFlag()+

board[ai-1][aj ].getFlag();

}

if(ai==1&&aj>1&&aj<by)

{

sum= board[ai][aj-1].getFlag()+ board[ai+1][aj-1].getFlag()+

board[ai+1][aj ].getFlag()+

board[ai][aj+1].getFlag()+ board[ai+1][aj+1].getFlag();

}

if(ai==bx&&aj>1&&aj<by)

{

sum= board[ai-1][aj-1].getFlag()+ board[ai][aj-1].getFlag()+

board[ai-1][aj ].getFlag()+

board[ai-1][aj+1].getFlag()+ board[ai][aj+1].getFlag();

}

if(ai>1&&ai<bx&&aj==1)

{

sum= board[ai-1][aj ].getFlag()+ board[ai+1][aj ].getFlag()+

board[ai-1][aj+1].getFlag()+ board[ai][aj+1].getFlag()+ board[ai+1][aj+1].getFlag();

}

if(ai>1&&ai<bx&&aj==by)

{

sum= board[ai-1][aj-1].getFlag()+ board[ai][aj-1].getFlag()+ board[ai+1][aj-1].getFlag()+

board[ai-1][aj ].getFlag()+ board[ai+1][aj ].getFlag();

}

return sum;

}

//传入参数:几列,几行,宽度,雷数

public void initMin(int ax,int ay,int aw,int as)

{

int k= 1;//表明产生的第几个雷

Random r;//随机数

f= 0;//f=0表示游戏还没有结束

ksum= 0;

bx= ax;

by= ay;

bw= aw;

msum= as;

r= new Random();

//初始化底盘的值

for(i= 1;i<= bx;i++)

{

for(j=1;j<=by;j++)

{

board[i][j].setData(0,i,j,bw,0);

}

}

//随机产生雷

while(k<= msum)

{

i= r.nextInt(bx)+1;

j= r.nextInt(by)+1;

if(board[i][j].getFlag()!= 1)

{

board[i][j].setFlag(1);

k++;

}

}

//非雷区的周围有几个雷,初始化其值

for(i= 1;i<= bx;i++)

{

for(j=1;j<=by;j++)

{

board[i][j].setCount(getCount(i,j));

}

}

setBackground(Color.white);

repaint();

}

//构造函数

public DrawPanel(int ax,int ay,int aw,int as)

{

initMin(ax,ay,aw,as);

addMouseListener(new MouseAdapter()

{

public void mousePressed(MouseEvent me)

{

int r;

if(f!= 0) return;//如果游戏结束,返回

chx= me.getX();

chy= me.getY();

if(me.getButton()!= 1)

{

board[chx/bw+1][chy/bw+1].sendKey(me.getButton());

draw(chx/bw+1,chy/bw+1);

}

else if(me.getButton()== 1)

{

if(openNoMin(chx/bw+1,chy/bw+1)==-1)

{

f= 1;

repaint();

}

else if( ksum+ msum== bx*by)

{

f= 2;

repaint();

}

}

}

}

);

}

//重画所有的图形,包括一些修饰的图形

public void paint(Graphics g)

{

int x,y,w;

int s;

int cx= bw/2- 4;

int cy= bw/2+ 4;

g.clearRect(0,0,600,600);

for(i=1;i<=bx;i++)

{

for(j=1;j<=by;j++)

{

draw(g,i,j);

}

}

if(f== 1)

{

Font f= new Font("11",1,70);

Font fo= g.getFont();

g.setColor(Color.white);

g.setFont(f);

//g.setSize();

g.drawString("Game Over",0,200);

g.setFont(fo);

}

if( f== 2)

{

Font f= new Font("11",1,70);

Font fo= g.getFont();

g.setColor(Color.white);

g.setFont(f);

//g.setSize();

g.drawString("You win!",0,200);

g.setFont(fo);

}

}

};

//主类和程序的入口

public class Mine extends JFrame implements ActionListener

{

Container cp= getContentPane();

JButton bt= new JButton("开局");

Label l1= new Label("列:");

Label l2= new Label("行:");

Label l3= new Label("宽度:");

Label l4= new Label("雷的个数:");

TextField tf1= new TextField("10",2);//列

TextField tf2= new TextField("10",2);//行

TextField tf3= new TextField("40",2);//宽度

TextField tf4= new TextField("15",2);//雷的个数

int x=10,y=10,w=40,sum=15;

DrawPanel dp= new DrawPanel(x,y,w,sum);

public Mine()

{

setBackground(Color.white);

cp.setLayout(null);

cp.add(dp);

cp.add(bt);

cp.add(tf1);

cp.add(tf2);

cp.add(tf3);

cp.add(tf4);

cp.add(l1);

cp.add(l2);

cp.add(l3);

cp.add(l4);

l1.setBounds(20,10,20,20);

tf1.setBounds(40,10,20,20);

l2.setBounds(70,10,20,20);

tf2.setBounds(90,10,20,20);

l3.setBounds(120,10,40,20);

tf3.setBounds(160,10,20,20);

l4.setBounds(190,10,60,20);

tf4.setBounds(250,10,20,20);

bt.setBounds(300,10,80,20);

dp.setBounds(20,40,x*w,y*w);

setResizable(false);

setSize(x*w+40,y*w+80);

setTitle("扫雷");

show();

bt.addActionListener(this);

addWindowListener(new WindowAdapter()

{ public void windowClosing(WindowEvent e)

{System.exit(0);}

}

);

}

public void actionPerformed(ActionEvent e)

{

if(e.getSource()== bt)

{

//x= Integer.parseInt(tf1.getText());

//y= Integer.parseInt(tf2.getText());

//w= Integer.parseInt(tf3.getText());

sum= Integer.parseInt(tf4.getText());

setSize(x*w+40,y*w+80);

dp.setBounds(20,40,x*w,y*w);

show();

dp.initMin(x,y,w,sum);

}

}

public static void main(String args[])

{

new Mine();

}

};

用java怎么写扫雷程序

首先要写一个UI,也就是操作界面,使用java.swing.*内的东西就可以搞定;

其次写一个hander,也就是具体的按钮响应,UI的初始化(哪里有雷),怎么触发雷和其他的;

一般来说简单的扫雷模型就好了,如果需要更有意思点,可以写一些数据库的操作内容的tool类具体的就是处理历史操作记录,场均数据或多人竞技的特点。

如果你是说你没有设计思路,我可以给你个提示:递归算法是触发扫雷的方法,初始化用随机数来做。

好了,文章到这里就结束啦,如果本次分享的java语言写扫雷用什么和用java怎么写扫雷程序问题对您有所帮助,还望关注下本站哦!

杨过和小龙女的爱情 杨过和小龙女的爱情解读javase的api是什么,JavaSE是什么