¿Quién sabe cómo escribir el juego "Snake" en Java?

Lloré cuando pregunté por qué el programa está tan dividido

Jaja, pero aún así tienes suerte.

Se ha agregado el código Lianliankan (algoritmo básico) Parcialmente comentarios

importar java.awt.*;

importar java.awt.event.*;

la clase pública lianliankan implementa ActionListener

{

static String s="no"; //Se utiliza para registrar la información de hacer clic en el botón

int x0=0,y0=0,x=0,y=0 , n1=0,n2=0; //Se utiliza para registrar la información de posición del botón

Marco f,f1

Botón b1,b2,b3,b4,b5; b6,b7 ,b8,b9,b10; //Añadido de forma estúpida

Botón b11,b12,b13,b14,b15,b16,b17,b18; //30 botones para implementar la interfaz del juego.

Botón b19,b20,b21,b22,b23,b24,b25; //Se puede implementar con un array, este soy yo

Botón b26,b27,b28,b29 ,b30,bc ; //Al aprender Java, es el primer paso, así que

Button b,ba,br,bt1,bt2; //¡Algunas cosas son muy amateur! ! Heehee

Panel p1,p2,p3;

TextField t; // Se utiliza para mostrar información aleatoria, el método es guli() a continuación

Etiqueta. l;

int d[][]={ //Se utiliza para establecer una relación de mapeo con los botones en la interfaz

{0,0,0,0,0,0 ,0 },

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{ 0, 0,0,0,0,0,0}

};

public static void main(String[] args)

{

lianliankan t=new lianliankan();

t.suiji()

t.go();

}

public void actionPerformed(ActionEvent e) //Otro evento de respuesta de botón.

{

int d[][]={

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{ 0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0, 0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0, 0,0,0}

};

this.d=d;

suiji(); falso);

f1.setVisible(falso);

s="no"

go(); /p>

public void go()//Interfaz de inicialización

{

l=new Label("Estimado jugador,

f); =nuevo Marco("Lianliankan");

t=nuevo TextField();

p2=nuevo Panel();

p1=nuevo Panel ()

p3=nuevo Panel();

bc=nuevo Botón("Salir");

br=nuevo Botón("Relistar" ); /p>

b=nuevo Botón();

b1=nuevo Botón(String.valueOf(d[1][1])); (String.valueOf(d[1][2]));

b3=nuevo botón(String.valueOf(d[1][3])); nuevo Botón(String.valueOf(d[1][4]));

b5=nuevo Botón(String.valueOf(d[1][5])); b6=nuevo Botón(String.valueOf(d[2][1]));

b7=nuevo Botón(String.valueOf(d[2][2]));

p >

b8=nuevo Botón(String.valueOf(d[2][3]));

b9=nuevo Botón(String.valueOf(d[2][4])); /p>

b10=nuevo Botón(String.valueOf(d[2][5]));

b11=nuevo Botón(String.valueOf(d[3][1]) )

b12=nuevo Botón(String.valueOf(d[3][2]));

b13=nuevo Botón(String.valueOf(d[3][3 ] ));

b14=nuevo Botón(String.valueOf(d[3][4]));

b15=nuevo Botón(String.valueOf(d[3] [ 5]));

b16=nuevo Botón(String.valueOf(d[4][1]));

b17=nuevo Botón(String.valueOf(d[ 4). ][2]));

b18=nuevo Botón(String.valueOf(d[4][3]));

b19=nuevo Bu.

tton(String.valueOf(d[4][4]));

b20=nuevo botón(String.valueOf(d[4][5])); =nuevo Botón(String.valueOf(d[5][1]));

b22=nuevo Botón(String.valueOf(d[5][2])); >b23=nuevo Botón(String.valueOf(d[5][3]));

b24=nuevo Botón(String.valueOf(d[5][4]));

b25=nuevo Botón(String.valueOf(d[5][5]));

b26=nuevo Botón(String.valueOf(d[6][1])); p> p>

b27=nuevo Botón(String.valueOf(d[6][2]));

b28=nuevo Botón(String.valueOf(d[6][3])

b29=nuevo Botón(String.valueOf(d[6][4]));

b30=nuevo Botón(String.valueOf(d[6][5); ]) );

p3.setLayout(null);

p1.setSize(250,300);

p2.setSize(100,40); p>

p3.setSize(300,30);

t.setSize(60,30);

l.setSize(70,30);

p1.setLayout(new GridLayout(6,5));

p1.setBackground(Color.pink

p1.setLocation(100,100);

p2.setLocation(0,400);

p3.setLocation(50,50);

t.setLocation(230,2); .setLocation (150,2);

bc.setLocation(0,40

br.setLocation(0,100);

f.add(p1);

f.add(p2);

f.add(p3); >p3 .add(t);

p2.add(bc);

p2.add(br);

p1.add(b1);

p2.add(b1); p>

p1.add(b2);

p1.add(b3); (b4);

p1.add (b5);

p1.add(b6);

p1.add(b7);

p1.add(b8);

p1.add(b9);

p1.add(b10);

p1.add(b11);

p1.add(b12

p1.add(b13

p1.add(b14); >p1.add(b15);

p1.add(b16);

p1.add(b17);

p1.add(b18);

p1.add(b

19);

p1.add(b20);

p1.add(b21); p>p1.add(b23);

p1.add(b24);

p1.add(b25);

p1.add(b26);

p1.add(b27);

p1.add(b28);

p1.add(b29); p1.add(b30);

f.pack();

f.setBounds(280,100,500,450);

f.setResizable(falso); p>

f.setBounds(280,100,500,450); p>

f.setVisible(true);

bc.addMouseListener(new MouseAdapter(){

public void mouseClicked (MouseEvent e)

{

ex();

}

}); addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

chonglie();

}

});

b1.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(1,1,b1);

}

});

b2.addMouseListener(nuevo MouseAdapter(){

public void mouseClicked(MouseEvent e)

p>

{

wei(1,2,b2

}

});

b3.addMouseListener (new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(1,3,b3);

}

});

b4.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(1,4,b4

}

})

b5.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(1, 5,b5);

}

});

b6.addMouseListener(new MouseAdapter(){

public void mouseClicked( MouseEvent e)

{

wei(2,1,b6

}

}); p>b7.addMouseListener(nuevo ratón

Adaptador(){

public void mouseClicked(MouseEvent e)

{

wei(2,2,b7

}

});

b8.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

p>

wei(2,3,b8);

}

};

b9.addMouseListener(nuevo MouseAdapter) (){

p>

public void mouseClicked(MouseEvent e)

{

wei(2,4,b9

);

}

});

b10.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei (2,5,b10);

}

});

b11.addMouseListener(nuevo MouseAdapter( ){

public void mouseClicked(MouseEvent e)

{

wei(3,1,b11

}

p>

});

wei(3,1,b11);

});

p>

b12.addMouseListener( nuevo MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(3,2,b12

); }

});

b13.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(3,3,b13);

}

});

b14 .addMouseListener(nuevo MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(3,4,b14);

}

<; p>});

b15.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(3,5,b15);

}

});

b16.addMouseListener(nuevo MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(4,1,b16

}

p>});

b17.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(4,2,b17);

}

});

b18.addMouseListener(nuevo MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(4,3,b18

}

;

});

b19.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(4,4,b19);

}

});

b20.addMouseListener(nuevo MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(4,5,b20

}

});

b21.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(5,1 ,b21);

}

});

b22.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent) e)

{

wei(5,2,b22

}

}); >b23.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(5,3,b23); p>

}

});

b24.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(5,4,b24);

}

}); (nuevo MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(5,5,b25);

}

});

b26.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

p>

wei(6,1,b26);

}

});

b27.addMouseListener( nuevo MouseAdapter(){

p>

public void mouseClicked(MouseEvent e)

{

wei(6,2,b27

}

});

b28.addMous

eListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(6,3,b28);

}

});

b29.addMouseListener(new MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

wei(6,4,b29);

}

});

b30.addMouseListener(nuevo MouseAdapter()). {

public void mouseClicked(MouseEvent e)

{

wei(6,5,b30

}

});

}

public void ex() //Para salir de la interfaz, se puede usar diolog para implementar tipos modelados, que son más consistentes

{

f1=new Frame("Asignación de juego");

f1.setLayout(new GridLayout(1,1)); bt1=nuevo botón ("Confirmar para salir");

bt2=nuevo botón("Un juego más");

f1.add(bt1); p>f1.add (bt2);

f1.pack();

f1.setBounds(400,250,90,60);

f1.setResizable; (falso);

f1.show();

f1.setVisible(verdadero);

bt1.addMouseListener(nuevo MouseAdapter(){

public void mouseClicked(MouseEvent e)

{

System.exit(0);

}

})

bt2.addActionListener(this);

}

public void suiji() //Genera números aleatorios para llenar cada posición de la matriz correspondiente al interfaz del juego

{

int m,n,k=0,k1,k2,k3

for(m=1;m<=15; m++)

{

k1=(int)(Math.random()*25+1); 2;n++)

{

k2=(int)(Math.random()*6+1); .random()*5 +1);

mientras(d[k2][k3]!=0 && k!=30)

{

k2=(int)(Math.random()*6+1);

k3=(int)(Math.random()*5+1); /p>

this.d[k2][k3]=k1

k++

}

}

}

public void guli() //Información aleatoria

{

>

int l=0;

t.setText("");

l=(int)(Math.random()*10);

System.out.println(l);

interruptor(l)

{

caso 1:

t. setText("¡Está bien! ¡Vamos!");

break;

caso 3:

t.setText("¡Eres increíble!"); /p>

p>

romper;

caso 5:

t.setText("¡Acelerar!"); romper;

caso 6:

t.setText("¡No está mal!");

caso 8; /p>

t. setText("¡Vamos!");

break;

caso 9:

t.setText("Bastante inteligente !");

romper;

predeterminado:

romper;

}

}

public void chonglie() //Reorganizar el método

{

int save[],i,j,n=0,k2,k3,k

int d[ ][]={

{0,0,0,0,0,0,0},

{0,0,0,0 ,0,0,0} ,

{0,0,0,0,0,0,0},

{0,0,0,0,0,0 ,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0},

{0,0,0,0,0,0,0}

};

guardar=nuevo int[30];

for(n=0;n<30;n++)

guardar[n]= 0; //Definir una matriz para guardar la información actual en cada posición del botón

n=0

for(i=0;i<=6;i++)

for (j=0;j<=5;j++)

{

if(this.d[i][j]!=0)

{

guardar[n]=this.d[i][j]

n++

}

}

n=n-1;

this.d=d;

while(n>=0) // Genera una posición y lugar aleatorios. el botón

{

k2=(int)(Math.random()*6+1);

k3=(int)(Math.random); ()*5+1) ;

mientras(d[k2][k3]!=0)

{

k2=(int)(Matemáticas .random()*6+ 1);

k3=(int)(Math.random()*5+1);

}

este); .d[k2][k3 ]=guardar[n];

n--;

}

f.setVisible(false); >

s=" no"; //La información del clic en el botón debe clasificarse como inicial aquí

go()

ling(); >}

pub

lic void ling() //Elimina el botón correspondiente al miembro cero del array

{ //Será mucho más sencillo implementar un array de tipo botón,

if( d[ 1][1]==0)

b1.setVisible(false);

if(d[1][2]==0)

b2.setVisible(falso);

if(d[1][3]==0)

b3.setVisible(falso); if( d[1][4]==0)

b4.setVisible(false

if(d[1][5]==0)

b5.setVisible(false);

if(d[2][1]==0)

b6.setVisible(false); p> if(d[2][2]==0)

b7.setVisible(false);

if(d[2][3]==0)

b8.setVisible(false);

if(d[2][4]==0)

b9.setVisible(false); >

if(d[2][5]==0)

b10.setVisible(false);

if(d[3][1]==0); )

b11.setVisible(false);

if(d[3][2]==0)

b12.setVisible(false); /p >

if(d[3][3]==0)

b13.setVisible(false);

if(d[3][4]= =0 )

b14.setVisible(falso);

if(d[3][5]==0)

b15.setVisible(falso)

if(d[4][1]==0)

b16.setVisible(false); ]= =0)

b17.setVisible(false);

if(d[4][3]==0)

b18.setVisible( falso)

if(d[4][4]==0)

b19.setVisible(falso);

if(d[4] [5 ]==0)

b20.setVisible(false);

if(d[5][1]==0)

b21. setVisible(falso);

if(d[5][2]==0)

b22.setVisible(falso);

if(d[ 5] [3]==0)

b23.setVisible(false

if(d[5][4]==0)

b24.setVisible(falso);

if(d[5][5]==0)

b25.setVisible(falso); d[ 6][1]==0)

b26.setVisible(false);

if(d[6][2]==0)

b27.setVisible(false);

if(d[6][3]==0)

b28.setVisibl

e(falso);

if(d[6][4]==0)

b29.setVisible(falso);

if(d[ 6][5]==0)

b30.setVisible(false);

}

public void wei(int w1,int w2,Botón bz ) //Juzga y registra la información de cada clic en el botón

{ //Solo se puede eliminar cuando los dos botones son iguales

if((s.trim()). es igual(" no"))

{

s=b1.getLabel()

x0=w1

y0=; w2;

n1=d[x0][y0];

b=bz

x=w1; w2;

n2=d[x][y];

ba=bz

}

más

{

x0=x

y0=y

n1=d[x0][y0]; b=ba ;

x=w1

y=w2

n2=d[x][y]; ba=bz ;

if(n1==n2 && ba!=b)

{

xiao();

}

}

public void xiao() //Esta es la parte más importante de todo el juego, que es determinar la información entre los dos. botones

{ //¿Se puede eliminar en la misma situación?

Analiza detenidamente sin comentar uno por uno

int i=0, j=0,n=0,k=0

if((x0==x &&(y0==; y+1||y0==y-1)) || ((x0==x+1||x0==x-1)&&(y0==y))) //Situaciones adyacentes

{

ba.setVisible(falso);

b.setVisible(falso);

guli(); ="no";

d[x0][y0]=0

d[x][y]=0

}

else

{

for (j=0;j<7;j++ ) //Analiza los dos botones fila por fila para ver si se pueden eliminar

{

si (d[x0][j]==0)

{

si (y>j)

{

para (i=y-1;i>=j;i-- )

{

si (d[x] [ i]!=0)

{

k=0

romper

}

más

{

k=1

}

}

si (k==1)

{

si (y0>j)

{

para (i=y0-1;i>=j ;i - - )

{

if (d[x0][i]!=0)

{

k=0;

romper;

}

si no

{

k=2

}

}

}

si (y0

{

para (i= y0 +1;i<=j ;i++)

{

if (d[x0][i]!=0)

{

k=0;

romper

}

si no

{

k= 2 ;

}

}

}

}

}

si ( y

{

para (i=y+1;i<=j ;i++ )

{

if (d[x][i]!=0)

{

k=0

romper; /p>

p>

else

{

k=1

}

}

si (k==1)

{

si (y0>j)

{

para (i =y0-1;i >=j ;i-- )

{

if (d[x0][i]!=0)

{

k=0;

romper;

}

si no

{

k=2;

}

}

}

si (y0

{

para (i=y1;i<=j ;i++)

{

if (d[x0][i]!=0)

{

k=0; romper

}

else

{

k=2

}

<; p>}

}

}

}

si (y==j )

{

si (y0>j)

{

para (i=y0-1;i>=j ;i-- )

{

if (d[x0][i]!=0)

{

k=0;

}

else

{

k=2

}

; }

}

if (y0

{

for (i=y1;i<=j; i++)

{

if (d[x0][i]!=0)

{

k=0; /p>

romper;

}

si no

{

k=2; }

}

}

}

}

si (k==2)

{ if (x0==x)

{

b.setVisible(false);

ba.setVisible(false); p>

p>

guli();

s="no";

k=0; y0]=0;

d[x][y]=0

}

si (x0

{

para (n=x0;n<=x-1;n++ )

{

si (d[n][j]!=0 )

{

k=0

romper

}

if(d[n] [j]== 0 && n==x-1)

{

b.setVisible(false);

ba.setVisible(false);

guli();

s="no";

k=0

d[x0][y0]= 0;

d[x][y]=0

}

}

}

if (x0>x )

{

for (n=x0;n>=x+1 ;n-- )

{

if ( d[n][j]!=0)

{

k=0

romper; >}

if(d[n][j]==0 && n==x+1)

{

b.setVisible(false) ;

ba.setVisible(false);

guli();

s="no";

d[x0][y0]=0

d[x][y]=0

}

}

}

} <

/p>

}

for (i=0;i<8;i++) //Analizar por columna para ver si se puede eliminar

{

si (d[i][y0]==0)

{

si (x>i)

{

para (j=x-1;j>=i ;j-- )

{

if (d[j][y]!=0)

{

k=0

romper;

}

else

{

k=1;

}

}

si (k==1)

{

si (x0>i)

{

para (j=x0-1;j>=i ;j-- )

{

if (d[j][y0]!=0)

{

k=0

romper; /p >

}

else

{

k=2

}

}

}

si (x0

{

para (j=x1;j<=i;j++ )

{

if (d[j][y0]!=0)

{

k=0; p>

romper;

}

si no

{

k=2;

p>

}

}

}

}

si (x

{

para (j=x+1;j<=i;j++ )

{

si (d[j ][y]!=0 )

{

k=0

romper

}

si no

{

k=1;

}

}

si (k==1) )

{

si (x0>i)

{

para (j=x0-1;j>=i ; j-- )

{

if (d[j][y0]!=0)

{

k=0

romper;

}

si no

{

k=2; p>}

}

}

si (x0

{

para (j =x1;j< =i ;j++ )

{

if (d[j][y0]!=0)

{

k= 0;

romper;

}

si no

{

k =2;

}

}

}

}

}

si (x==i)

{

si (x0>i)

{

para (j=x0-1 ;j>=i ;j -- )

{

if (d[j][y0]!=0)

{

k=0;

p>

romper;

}

si no

{

k=2;

}

}

si (x0

{

para (j=x 1 ;j<=i ;j++ )

{

if (d[j][y0]!=0)

{

k=0;

romper;

}

si no

{

k=2; /p>

}

}

}

}

}

si (k = =2)

{

if (y0==y)

{

b.setVisible(false p>

ba.setVisible(false);

guli();

s="no"; p >

d[x0][y0]=0

d[x][y]=0

}

si (y0; < y)

{

para (n=y0;n<=y-1;n++)

{

si ( d [i][n]!=0)

{

k=0

romper

}

if(d[i][n]==0 && n==y-1)

{

b.setVisible(false

);

ba.setVisible(falso);

guli();

s="no"; p >d[x0][y0]=0

d[x][y]=0

}

}

}

si (y0>y)

{

para (n=y0;n>=y+1 ;n--)

{

if (d[i][n]!=0)

{

k=0; p >romper;

}

if(d[i][n]==0 && n==y+1)

{

b.setVisible(falso);

ba.setVisible(falso);

guli(); /p>

p>

k=0;

d[x0][y0]=0

d[x][y]=0; /p>

}

}

}

}

}

}

}

}