Código fuente del documento Javaweb
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);
}
final estático público; 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 lt punto gtlist, listBody
String str, str 1;
Clave booleana estática; p>
p>
int x, y, dx, dy, fx, fy, flag
Cuerpo interno de la serpiente;
velocidad int;
Control público Snake () {
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 = nuevo Aleatorio( );
lista = nuevo ArrayList lt punto gt();
listBody = nuevo ArrayList lt punto gt(); /p>
x = 5;
y = 5;
list.add(nuevo punto(x, y));
cuerpo de la lista agregar(lista. get(0));
p>
dx = 10;
dy = 0
FX = nextint. (30)* 10 5; // 2
fy = rand . nextint(30)* 10 5; // 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 (bandera 2 == 1) {
time . >}
if(bandera 2 == 0) {
hora .
}
bandera; p>
}
}
});
}
Pintura pública en blanco (gráfico g) {
g.setColor(color.blanco);
g.fillRect(0, 0, 400, 400);
p>
g.setColor(color .gris oscuro);
g.Dibujar línea(3,3,305,3);
g.Tirar línea(3,3, 3, 305); p>g. tirar del cable (305, 3, 305, 305);
g. rosa);
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 amp; ampy == fy) {
Velocidad = (int)(velocidad * 0.8); //Parámetro de aumento de velocidad
If (velocidad lt200) {
Velocidad = 100;
} p>
FX = rand . nextint(30)* 10 5; // 2
fy = nextint(30)* 10 5; p>
cuerpo de serpiente; // 2
} // 2
repintar();
}
Vacío público add point(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() lt; 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() lt; cuerpo de serpiente){
for(int I = lista . tamaño()-1; i gt0; i-) {
cuerpo de la lista . add(list . get(I));
}
}else {
for(int I = tamaño de lista()-1; cuerpo de lista. tamaño() lt; cuerpo de serpiente;
cuerpo de lista. }
}
}
}
MakeOut booleano público() {
if ((x lt3 | | y lt3)| |(x gt; 305 | | y gt305)) {
Devuelve falso
}
for(int I = 0; i ltlist cuerpo . tamaño()-1; i ) {
for(int j = I 1; j ltlist cuerpo . tamaño(); j ) {
if (listBody. obtener (yo).
es igual(listBody.get(j))) {
Devuelve falso
}
}
}
Devuelve verdadero
}
}
/*Código de serpiente*/