Red de conocimiento de recetas - Industria de la restauración - Buscando programación Java Snake con comentarios

Buscando programación Java Snake con comentarios

Código fuente J2ME Snake: alrededor de 200 líneas, incluido el paquete de comentarios detallados; import javax.microedition.midlet.*

import javax.microedition.lcdui.*; extiende MIDlet {

SnakeCanvas displayable = new SnakeCanvas();

public SnakeMIDlet() {

Display.getDisplay(this).setCurrent(displayable ); /p>

}public void startApp() {}public void pauseApp() {}public void destroyApp(boolean incondicional) {}}// Nombre de archivo: SnakeCanvas.javapackage Snake; import java.util.*;

import javax.microedition.lcdui.*;/**

* Snake Game

*/

clase pública SnakeCanvas extiende Canvas implementa Runnable {

/**Almacena las coordenadas del nodo de serpiente, donde el subíndice de la segunda dimensión es 0 representa la coordenada x, y el subíndice de la segunda dimensión es 1 representa la coordenada y*/

int [][] serpiente = new int[200][2];

/**El número de nodos que se han utilizado*/

int SnakeNum;

/**La dirección del movimiento de la serpiente, 0 representa hacia arriba, 1 representa hacia abajo, 2 representa hacia la izquierda, 3 representa hacia la derecha*/

dirección int;

/*Movimiento dirección*/

/**Arriba*/

privado final int DIRECTION_UP = 0;

/**Abajo*/

private final int DIRECTION_DOWN = 1;

/**Izquierda*/

private final int DIRECTION_LEFT = 2;

/* *A la derecha*/

private final int DIRECTION_RIGHT = 3;/**Ancho del área de juego*/

int ancho;

/**Alto del área de juego */

int height; /**Ancho de la unidad del cuerpo de la serpiente*/

byte final privado SNAKEWIDTH = 4; /**Si está en estado de pausa, verdadero significa pausa*/

boolean isPaused = false;

/**Si se está ejecutando, verdadero significa en ejecución*/

boolean isRun = true;/**Intervalo de tiempo*/

private final int SLEEP_TIME = 300;

/**Coordenada X de la comida*/

int foodX;

/**Coordenada Y de la comida */

int

foodY;

/**Control flash de alimentos*/

boolean b = true;

/**Objeto aleatorio*/

Aleatorio aleatorio = new Random();

public SnakeCanvas() {

//Inicialización

init();

ancho = this.getWidth();

height = this.getHeight();

//Iniciar el hilo

new Thread(this).start()

}/**

* Inicializar datos de inicio

*/

private void init(){

>//Inicializa el número de nodos

snakeNum = 7;

//Inicializa los datos del nodo

for(int i = 0; i lt; número de serpiente; i ) {

serpiente[i][0] = 100 - ANCHO DE SERPIENTE * i;

serpiente[i][1] = 40; }

//Inicializa la dirección del movimiento

direction = DIRECTION_RIGHT;

//Inicializa las coordenadas de los alimentos

foodX = 100;

foodY = 100;

}pintura vacía protegida(Gráficos g) {

//Borrar pantalla

g.setColor(0xffffff) ;

g.fillRect(0, 0, ancho, alto);

g.setColor(0); //Dibuja el cuerpo de la serpiente

for( int i = 0; i lt ; número de serpiente; i ){

g.fillRect(serpiente[i][0], serpiente[i][1], ANCHO DE SERPIENTE

<); p>}

//Dibujar comida

if(b){

g.fillRect(foodX, foodY, SNAKEWIDTH, SNAKEWIDTH);

}

}movimiento de vacío privado (dirección int){

//movimiento del cuerpo de la serpiente

for(int i = número de serpiente - 1; i gt ; 0; i--) {

serpiente[i][0] = serpiente[i - 1][0];

serpiente[i][1] = serpiente[ i - 1][1] ;

}//La primera celda se mueve

cambiar(dirección){

caso DIRECTION_UP:

serpiente[0] [1] = serpiente[0][1] - SNAKEWIDTH;

romper;

caso DIRECTION_DOWN:

serpiente[0][ 1] = serpiente[ 0][1] ANCHO SERPIENTE;

romper;

caso DIRECTION_LEFT:

serpiente[0][0] = serpiente[0] [0] - SCN

KEWIDTH;

romper;

caso DIRECTION_RIGHT:

serpiente[0][0] = serpiente[0][0] SNAKEWIDTH;

descanso;

}

}

/**

* Come alimentos y crece tú mismo

*/

private void eatFood(){

//Determina si la cabeza de serpiente se superpone con la comida

if(snake[0][0] = = comidaX amp;amp; serpiente[0][1] == comidaY){

NumSerpiente;

generarComida();

}

}

/**

* Generar comida

* Nota: Las coordenadas de la comida deben estar dentro de la pantalla y no pueden coincidir con la serpiente. body

*/

private void generateFood(){

while(true){

foodX = Math.abs(random. nextInt() (ancho - ANCHO SERPIENTE 1))

/ ANCHO SERPIENTE * ANCHO SERPIENTE;

comidaY = Math.abs(random.nextInt() (alto - ANCHO SERPIENTE 1))

/ ANCHO DE SERPIENTE * ANCHO DE SERPIENTE;

booleano b = verdadero;

for(int i = 0; i lt; número de serpiente; i ){

if(comidaX == serpiente[i][0] amp; amp; serpiente[i][1] == comidaY){

b = false

romper; p>

}

}

si(b){

romper;

}

}

}

/**

* Determinar si el juego ha terminado

* Condiciones finales:

* 1. La cabeza de la serpiente excede el límite

* 2. La cabeza de la serpiente se toca a sí misma

*/

private boolean isGameOver(){

//Determinación de límites

if(snake[0][0] lt; 0 || serpiente[0][0] gt; (ancho - SNAKEWIDTH) ||

serpiente[0][1] lt; 0 || serpiente[0][1] gt; (altura - ANCHO DE SERPIENTE)){

return true;

}

//se encontró consigo mismo

for(int i = 4; i lt; SnakeNum; i ){

if(snake[0][0] == serpiente [i][0]

amp; serpiente[0][1] == serpiente[i][1]){

devuelve verdadero;

}

}

return false;

}/**

* Manejo de eventos

* /

<

p>public void keyPressed(int keyCode){

int action = this.getGameAction(keyCode);

//Cambiar dirección

switch(action){

caso ARRIBA:

if(dirección != DIRECTION_DOWN){

dirección = DIRECTION_UP;

}

romper;

caso ABAJO:

if(dirección != DIRECTION_UP){

dirección = DIRECTION_DOWN;

}

interrupción;

caso IZQUIERDA:

if(dirección != DIRECCION_RIGHT){

dirección = DIRECCION_LEFT;

}

descanso;

caso DERECHA:

if(dirección != DIRECCIÓN_LEFT){

dirección = DIRECCIÓN_DERECHA;

}

interrupción;

caso FUEGO:

//Pausar y continuar

isPaused = !isPaused;

romper;

}

}/**

* Métodos de hilo

* Utilice retrasos precisos

*/

ejecución pública void(){

prueba{

mientras (isRun) {

//Hora de inicio

inicio largo = System.currentTimeMillis();

if(!isPaused){

//Comer comida

eatFood();

//Mover

move(dirección);

//Finalizar el juego

if(isGameOver()){

romper;

}

//Control de parpadeo

b = !b;

}

//Repintar

repintar();

final largo = System.currentTimeMillis();

//Retraso

if(end - start lt; SLEEP_TIME){

Thread.sleep(SLEEP_TIME - (end - start));

}

}

}catch(Excepción e){}

}

}