Código fuente del sitio web de Ym
Importar Java.awt.dimension;
Importar Java.awt.toolkit;
Importar javax.swing.jframe;
@SuppressWarnings("serial ")
La clase pública MainClass extiende JFrame {
ControlControlSnake;
Kit de herramientas;
Dimensión dimensión
Public static void main(String[] args) {
Nueva clase principal("mi serpiente");
}
Clase principal pública (cadena){
Superusuario;
control = nueva serpiente de control();
control setfocusable( true);
kit = kit de herramientas . getdefaulttoolkit();
dimen = kit .getscreensize(); diseño(new BorderLayout());
setLocation(dimen.width / 3, dimen. height/3); //dimen.width/3,dimen.height/3
setSize(FWIDTH, FH height);
setDefaultCloseOperation(JFrame.
EXIT _ ON _ CLOSE);
setResizable(false);
set visible(true);
}
public static final; int FWIDTH = 315;
Final estático público int FHEIGHT = 380
}
Importar Java .awt .color;
Importar Java . awt . dimensión;
Importar Java .awt .gráficos;
Importar Java .punto .
Importar evento de clave Java .
Importar evento de clave Java . ;
Importar Java . ArrayList
Importar Java . Importar javax.swing.jpanel;
Importar javax.swing.timer;
@SuppressWarnings("serial")
Control de clase pública Snake extiende JPanel para implementar ActionListener {
Rand aleatorio
ArrayList<dot>list, listBody
String str, str 1;
Clave booleana estática
int x, y, dx, dy, fx, fy, flag
Cuerpo de serpiente interno
int velocidad
Serpiente de control público() {
Cuerpo de serpiente = 1;
Str = "Las teclas de dirección arriba, abajo, izquierda y derecha controlan la tecla P para pausar...";
Str1 = " La longitud actual es: "+cuerpo de serpiente;
clave = verdadero
bandera = 1;
velocidad = 700;
rand = new Random();
list = new ArrayList & ltdot& gt();
listBody = new ArrayList & ltdot& gt();
x = 5;
y = 5;
lista.add(nuevo punto(x, y));
cuerpo de lista. (0));
dx = 10;
dy = 0;
FX = siguienteint(30)* 15;
fy = rand . nextint(30)* 15; // 2
setBackground(color.
negro);
setSize(nueva dimensión(318, 380));
tiempo del temporizador final = nuevo temporizador(velocidad, esto
tiempo de inicio). ();
addkey listener(new key adaptor(){
Clave de anulación pública (evento clave e) {
if (e.getKeyCode() = = 37) {
dx =-10;
dy = 0;
} else if (e.getKeyCode() == 38) { p>
dx = 0;
dy =-10;
} si (e.getKeyCode() == 39) {
dx = 10;
dy = 0;
} else if (e.getKeyCode() == 40) {
dx = 0;
} else if (e.getKeyCode() == 40) {
dx = 0;
p>
dy = 10;
} else if (e.getKeyCode() == 80) {
if (flag % 2 == 1) {
time . p>}
if(bandera % 2 == 0) {
hora();
p>}
flag++;
}
}
});
}
Pintura pública en blanco (gráfico g) {
g.setColor(color.blanco);
g.fillRect(0, 0, 400, 400);
g.setColor(color. gris oscuro);
g.Dibujar línea(3,3,305,3);
g.Tirar línea(3, 3, 3, 305);
>g. tirar del cable (305, 3, 305, 305);
g. setColor(color.pink);
for(int I = 0; i & ltlist body . size(); i++) {
g.fillRect (listBody.get(i) ). x, listaCuerpo.get(i). y, 9, 9);
}
g.fillRect(x, y, 9, 9);
g.setColor(color.naranja) ;
g.fillRect(fx,fy,9,9);
g.setColor(color.dark grey);
Str1 = "Longitud actual Para: "+cuerpo de serpiente;
g. Cordón (str, 10, 320);
g. Cordón (str1, 10, 335);
}
Acción de anulación pública realizada (evento de acción e){
x+= dx;
y+= dy;
if (makeOut () == falso) {
Joptionpane.
Mostrar cuadro de diálogo de mensaje(vacío, "Reiniciar...");
Velocidad = 700;
Cuerpo de serpiente = 1;
x = 5;
y = 5;
lista .clear();
lista.add(nuevo punto (x, y)); >cuerpo de la lista .clear();
cuerpo de la lista .add(lista . get(0));
}
addPoint(x, y);
if(x == FX&&y == fy) {
Velocidad = (int)(Velocidad * 0.8); //Parámetro de aumento de velocidad
If (Velocidad<200) {
Velocidad = 100; p>
}
FX = rand . nextint(30)* 15; // 2
fy = nextint(30)* 15; / 2
cuerpo de serpiente++; // 2
} // 2
repintar();
}
Punto vacío público agregado (int xx, int yy) {
//Registra dinámicamente las coordenadas movidas en los últimos 50 pasos.
//Y dibuja el último cuerpo de serpiente.
if(list . size()<100) {//La longitud máxima del cuerpo de la serpiente es 100.
list.add(new point (xx, YY));
} En caso contrario {
list . >list.add(new point(xx, YY));
}
if (snakeBody == 1) {
lista de cuerpo remove(0. );
listBody.add(0, list . get(list . size()-1));
} En caso contrario {
lista de cuerpo. ();
if(lista . tamaño()<cuerpo de serpiente){
for(int I = lista . tamaño()-1;i>0;i- ) {
cuerpo de la lista. add(list. get(I));
}
}else {
for(int I = lista). tamaño()-1; cuerpo de la lista. tamaño()<cuerpo de la serpiente;I-) {
cuerpo de la lista.
}
}
}
MakeOut booleano público() {
if ( (x & lt3 | | y & lt3) |(x & gt; 305 | | y & gt305)) {
devuelve falso
}
para(int I = 0;i & ltlist cuerpo . tamaño()-1;i++) {
for(int j = I+1;j & ltlist cuerpo . tamaño();j++) {
if (listBody.get(i).equals(listBody.get(j))) {
Devuelve falso
}
}
}
Devuelve verdadero
}
}
/*Código de serpiente*/