Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Tabla de contenidos
• Introducción
• Requerimientos
• Objetivos
• Características
• Funcionalidad del código
Introducción
Requerimientos
Objetivos
El objetivo principal de este programa es proporcionar una versión sencilla y funcional del
juego Snake recreada en java y en forma arquitectural MVC.
Características
Diagrama UML
Diagrama Dinámico
Diagrama UML
5
El programa este hecho en una forma de MVC de tres capas, separado por 3 distintos
paquetes, el launcher, la presentación y la lógica.
Launcher
Presentación
6
-controlador
pActual=Integer.parseInt(vista.getPuntaje());
pActual=pActual+10;
//FORMULA: nivel^2*10+40
if(pActual==Integer.parseInt(vista.getNivel())*Integer.parseInt(vista.get
Nivel())*10+40){
aumentarNivel();
}
sPActual=Integer.toString(pActual);
vista.setPuntaje(sPActual);
}
nActual=Integer.parseInt(vista.getNivel());
nActual=nActual+1;
sNActual=Integer.toString(nActual);
vista.setNivel(sNActual);
}
-modelo
-PanelFondo
@Override
public void paint(Graphics lapiz){
super.paint(lapiz);
for(int i=0;i<can;i++){
for(int j=0;j<can;j++){
lapiz.fillRect(residuo/2 + i*tam, residuo/2
+ j*tam, tam-1, tam-1);
}
}
ImageIcon backgroundImage = new
ImageIcon(getClass().getResource("/Presentacion/hqdefault (3).jpg"));
lapiz.drawImage(backgroundImage.getImage(), 0, 0, 800, 800, null);
}
-Reproductor
this.musica =
Applet.newAudioClip(getClass().getResource("/Presentacion/musica.au"));
}
-Serpiente
@Override
public void paint(Graphics lapiz){
super.paint(lapiz);
lapiz.setColor(colorsnake);
int[] nuevo={Math.floorMod(ultimo[0]+agregarx,can),
Math.floorMod(ultimo[1]+agregary,can)};
boolean existe=false;
for(int i=0; i<snake.size();i++){
if(nuevo[0]==snake.get(i)[0] && nuevo[1]==snake.get(i)[1]){
existe=true;
break;
}
}
if(existe){
JOptionPane.showMessageDialog(this,"has perdido");
}else{
if(nuevo[0]==comida[0]&&nuevo[1]==comida[1]){
snake.add(nuevo);
vista.getControl().aumentarPuntaje();
generarComida();
}else{
snake.add(nuevo);
snake.remove(0);
}
}
this.direccionproxima=dir;
}
if((this.direccion.equals("ar")||
this.direccion.equals("ab"))&&(dir.equals("iz")||dir.equals("de"))){
this.direccionproxima=dir;
}
}
Lógica
-Caminar
this.serpiente=serpiente;
@Override
public void run() {
int vel=380;
while(estado){
serpiente.Avanzar();
serpiente.repaint();
try {
Thread.sleep(vel);
vel=(int)(300/Integer.parseInt(serpiente.getVista().getNivel()))+50;
} catch (InterruptedException ex) {
-Dirección
public Direccion(){
private Serpiente serpiente;
public Direccion(){