Red de conocimiento informático - Conocimiento sistemático - El código fuente comienza a explotar 20 veces

El código fuente comienza a explotar 20 veces

Oh, resulta que tengo uno. Me tomó medio día conseguir 20 centavos.

Paquete com.game

Importar Java.awt.gridlayout;

Importar Java.awt.event.*;

Importar Java . util . aleatorio;

Importar javax * . p>

*

*/

La clase pública Winmine extiende JFrame para implementar ActionListener {

private static final long serialVersionUID = 1L;

GridLayout gridLayout

JButton[]BTN;

JPanel pMain

JMenuBar jMenuBar

JMenu Juego;

JMenuItem inicio

int ancho, alto;

aleatorio aleatorio;

int[]mío;

Winmine público (int ancho , int altura) {

Aleatorio = new Aleatorio();

this.width =ancho;

this.height =altura;

jMenuBar = nueva jMenuBar();

Juego = nuevo JMenu("Juego");

inicio = nuevo JMenuItem(" inicio ");

iniciar . addactionlistener(this);

jMenuBar.add(game);

game.add(start);

this setjmenubar(jMenuBar);

p>

gridLayout = nuevo GridLayout(ancho, alto);

pMain = nuevo JPanel();

pmain.set diseño(gridLayout);

BTN = nuevo JButton[ancho*alto];

for(int I = 0; iltwidth*height; i) {

BTN[I]= nuevo JButton() ;

btn[i]. addActionListener(this);

pmain. add(BTN[I]);

}

produceMine(ancho, alto);

this.getContentPane(). add(pMain);

this.setSize(ancho * 50, alto * 40);

this .set visible(true); (JFrame.

EXIT _ ON _ CLOSE);

}

Acción de anulación pública realizada (evento de acción){

Pruebe {

JMenuItem JMenuItem. =(JMenuItem)event.getsource();

jmenuitem.geaccelerator();

produceMine(ancho, alto);

Replay();

p>

Retorno;

} catch(Excepción e) {

}

Botón JButton =(JButton)event.getsource ();

p>

for(int I = 0; i lt ancho * alto; i) {

if (botón == btn[i]) {

if (! checkMine (i)) {

Panel de opciones. Mostrar cuadro de diálogo de mensaje (esto, "¡Lo siento, golpeaste una mina!");

pierdes el juego()

} De lo contrario, {

int num =; getmine qoh(I);

btn[i]. setText(num " ");

set enable(false); 0) {

Haga clic en Btn(uno);

}

isWinGame();

Interrumpir

}

}

}

}

//Perdido

public void perderGame() {

for(int I = 0; i lt my. length; i) {

BTN[my[i]]. setText(" * " );

}

for(int I = 0; i ltbtn . length; i) {

btn[i].set enable(false

}

}

//Reiniciar un nuevo juego

Public void replay(){

for (int I = 0; iltbtn. longitud; i) {

btn[i]. setText(" ");

btn[i]; }

//¿Ganaste?

El vacío público es WinGame() {

int qoh = 0;

for(int). I = 0; i ltbtn . longitud; i ) {

if (!btn[i].isEnabled()) {

qoh;

}

}

if(qoh = = ancho * alto-mío. largo){

Panel de opciones. Mostrar cuadro de diálogo de mensaje (esto, "¡Felicitaciones por su victoria! ");

}

}

//Si haces clic cerca del botón de amonio, el número de minerales es 0.

public void clickBtn(int index) {

int[]around = getIndex(index);

for(int I = 0; I lt longitud aproximadamente ;i) {

BTN[alrededor de[i]]. doClick();

}

}

//Haga clic en el botón de amonio para obtener la cantidad de minerales cercanos.

public int getMineQoh(int index) {

int num = 0

int[]around = getIndex(index); >for(int I = 0; i lt longitud sobre; i) {

for(int j = 0; j lt mi. longitud; j) {

if (alrededor de [ i] == mío[j]) {

num;

Continuar;

}

}

}

Cantidad devuelta;

}

//Obtenga el número de índice cerca del botón de amonio al hacer clic.

public int[] getIndex(int ​​​​index) {

int[]left = new int[altura-2];

for(int I = 0 ; i ltleft . longitud; i ) {

izquierda[i] = (i 1) *ancho; new int [altura-2];

for(int I = 0; i lt right. length; i) {

right[I]=(I 2)* ancho- 1;

}

int[]top = new int[ancho-2];

for(int I = 0; i lttop . length; i ) {

arriba[I]= I 1;

}

int[]piso = nuevo int[ancho-2];

for(int I = 0; i lt piso.largo; i) {

Piso[i] = ancho*(alto-1) I 1;

}

int[]around = new int[3];

if (index == 0) {

[0] = alrededor de 1;

aproximadamente [1] = ancho;

aproximadamente [2] = ancho 1;

} else if (índice == ancho - 1) {

aproximadamente [ 0] = ancho - 2;

[1] = 2 * ancho - aproximadamente 2

Izquierda y derecha [2] = 2 * ancho - 1; >

} else if(index = =(alto-1)* ancho){

Izquierda y derecha [0] = (alto - 2) * ancho)

Alrededor; [1] = (alto - 2) *ancho 1;

alrededor[2] = (alto - 1) *ancho 1

} else if (índice = = alto * ancho-1){

Alrededor[0] = (alto-1) *ancho-2;

Alrededor[1] = (alto-1) *ancho-1;

Izquierda y derecha [2] = alto * ancho - 2;

} De lo contrario {

alrededor = new int[5]; >for(int I = 0; i lttop . length; i ) {

prueba {

if (index == top[i]) {

aproximadamente[0] = arriba[I ]-1;

alrededor[1]= arriba[I] 1;

alrededor[2]= arriba[I] ancho-1;

aproximadamente [3] = ancho superior[i];

alrededor[4]= ancho superior[I] 1;

Regresar alrededor;

} else if ( index == piso[i]) {

Alrededor[0] = Piso[i]-Ancho-1;

Alrededor[1] = Piso[i]-Ancho;

Alrededor [2] = piso [i] - ancho 1

Alrededor [3] = piso [I] - 1;

Izquierda y derecha [4] = Piso[I] 1;

Regresar a los alrededores;

} else if (

index == izquierda[i]) {

Acerca de [0] = izquierda [i] - ancho

Izquierda y derecha [1] = izquierda [i] - ancho 1;

p>

Izquierda y derecha[2] = izquierda[I] 1;

Izquierda y derecha[3] = izquierda[i] ancho;

alrededor[4]= izquierda[I] ancho 1;

Regresar alrededor;

} else if (index == derecha[i]) {

Izquierda y derecha[0] = derecha[i] - Ancho-1

Izquierda y derecha [1] = derecha [i] - ancho

Izquierda y derecha [2; ] = derecha [I]-1;

alrededor de [3]= derecha[I] ancho-1

Izquierda y derecha [4] = derecha[i] ancho <; /p>

Regresar alrededor;

}

} catch(Excepción e) {

}

}

alrededor = nuevo int[8];

alrededor[0]=ancho-índice-1;

alrededor[1]=ancho-índice;

[2] = alrededor del índice - ancho 1;

alrededor[3]=index-1;

izquierda y derecha[4]=índice 1;

izquierda y derecha[5]=ancho del índice-1;

aproximadamente [6] = ancho del índice

Izquierda y derecha [7] = ancho del índice

p>

}

Vuelve;

}

//Comprueba si el botón de amonio es una mina.

verificación booleana pública mía(int btnIndex){

Devolver checkNum(btnIndex, mía);

}

//Obtener no Método de repetición de números

public boolean checkNum(int num, int[] arrayNum) {

for(int I = 0; I ltarray num. length; i) {

if (arrayNum[i] == num) {

Devuelve falso

}

}

Devuelve verdadero

}

//Método de generación de minería

mina de producto público vacío (int ancho, int alto) {

int qoh = ancho * altura/5;

int index;

mío = nuevo int[qoh];

for(int I = 0; Iltqohi) {

índice = aleatorio . nextint(ancho * alto);

if (checkNum(índice, mío)) {

mío[I]= índice;

}else{

I-;

}

}

}

Vacío estático público principal (String[] args) {

Nuevo Winmine(16,16);

}

}

Se siente bien.