Ayúdame a proporcionar un programa fuente de juego JAVA
/******** ********** **************************************** *********** *************
* Puntos de análisis:
*1) La parte principal ha sido ensamblado en el objeto SnakeModel, y la operación se implementa mediante el control del teclado.
********************************************* *** ****************************/
importar java.awt.*;
importar java.awt. evento.*;
importar javax.swing.*
importar java.util.*; ! ! ! =========== ======================================= ========== /Clase principal
//================================= = ====
la clase pública GreedSnake implementa KeyListener
{
JFrame mainFrame
Canvas paintCanvas
JLabel labelScore; // marcador
SnakeModel SnakeModel=null; // serpiente
public static final int canvasWidth=200
public static final int canvasHeight= 300;
public static final int nodeWidth=10;
public static final int nodeHeight=10;
//------ --- ----------------------------------------- --- ----------
//GreedSnake(): Inicializa la interfaz del juego
//---------- ---- ---------------------------------------------- ---- -----
public GreedSnake()
{
// Establecer elementos de la interfaz
mainFrame=new JFrame("GreedSnake ");
Contenedor cp=mainFrame.add(labelScore, BorderLayout.NORTH);
paintCanvas=new Canvas();
paintCanvas .setSize(canvasWidth 1, altura del lienzo 1);
paintCanvas.addKeyListener(this);
cp.add(paintCanvas, BorderLayout.CENTER
JPanel panelButtom=new JPanel); ();
panelButtom.setLayout(new BorderLayout());
JLabel labelHelp; // Información de ayuda
labelHelp=new JLabel( "PageUp, PageDown para velocidad;", JLab
el .CENTER);
panelButtom.add(labelHelp, BorderLayout.NORTH);
labelHelp=new JLabel("ENTER o R o S significa inicio;", JLabel. p>
panelButtom.add(labelHelp, BorderLayout.CENTER);
labelHelp=new JLabel("Espacio o P significa pausa", JLabel.CENTER);
panelButtom. add(labelHelp, BorderLayout.SOUTH);
cp.add(panelButtom, BorderLayout.setVisible(true);
begin();
} p>
//------------------------------------------- ----- --------------------------
//keyPressed(): detección de clave
//----------------------------------------- ---- -----------------------
tecla pública vacía presionada (Evento clave e)
{
int keyCode=e.getKeyCode();
if(snakeModel.running) switch(keyCode)
{
case KeyEvent. VK_UP:
snakeModel.changeDirection(SnakeModel.UP);
romper;
caso KeyEvent.VK_DOWN:
snakeModel.VK_LEFT: n= (Node)nodeArray.removeLast(); // Quitar la cola
matriz[n.x][n.y]=false;
countMove;
return true;
}
}
}
return false; //fuera de límites (golpea la pared)
}
//-------------------------------------- --- -----------------------
//run(): Hilo de movimiento de serpiente p>
//------------------------------------------- ------ --------------------------
ejecución pública vacía()
{
ejecutando=true;
mientras(ejecutando)
{
intenta
{ p>
Thread.sleep (timeInterval);
}catch(Exception e)
{
brea
k;
}
if(!paused)
{
if(moveOn())// no terminado
{
gs.repaint();
}
else// Se acabó el juego
{
JOptionPane.showMessageDialog(null, "GAME OVER",
"Game Over", JOptionPane.INFORMATION_MESSAGE
break; p> p>
}
}
corriendo=false;
}
//------ -------------------------------------------------- -- ------------
// createFood(): Genera comida y coloca la comida
//-------- ------------------------------------------------- - -----------
Nodo privado createFood()
{
int x=0;
int y=0;
hacer
{
Aleatorio r=nuevo Aleatorio();
x=r.nextInt( maxX );
y=r.nextInt(maxY) )
} while(matrix[x][y]);
devuelve nuevo Nodo(x , y);
}
//----------------------------- ---- ---------------------------- ------------
//speedUp ():acelera el movimiento de la serpiente
//------------------------------ ------------------ -------------------------------- ----
public void speedUp() p>
{
timeInterval*=speedChangeRate;
}
//--------------- -------------------------------- -------- ---------- -----
//speedDown(): ralentiza el movimiento de la serpiente
//- ----------------- --------------------------------- ----------------- -
public void speedDown()
{
timeInterval/=speedChangeRate;
}
// --------------------------------- -------------- --- --------------------
//cambiarPa
useState(): cambia el estado del juego (pausar o reanudar)
//----------------------- ---------------------------------------
cambio público vacíoPauseState( )
{
pausado=! pausado;
}
}
}