martes, 10 de febrero de 2009

Seguimiento del ejemplito que postie

Ahora para que ya postie esto tienen que pasar a la siguiente fase que es aleatoriamente pintar el cubo dentro del panel.

Después de hacer eso juguemos a enviar pares de cubos comenzando desde la coordenada (0,0), y igual manera que el cubo de movimiento aleatorio hagando con estos pares sin salirse del panel.

Espero que esto les ayude

Seguire postiando pero ustedes ocupenlo para los cursos que dan si es que estan con grupos que comienzan a jugar con JAVA.

Generar Color para el cubo aleatoriamente

Este código que estoy posteando sirve para pintar un formulario, encima un panel y depués un canvas y en su interior de este una imagén.
La imagén que se pinta es de forma aleatoria es decir por medio de un random se hace la elección de que color de cubo se pinta en el canvas.

De acuero al valor entero que regrese el random es el nombre del archivo que se quiere guardar en la variable col que es de tipo String.

public String colorCubo() {
valC = valorColor();
if (valC == 0) { col = "blue.png";
} else if (valC == 1) { col = "green.png";
} else if (valC == 2) { col = "pink.png";
} else if (valC == 3) { col = "red.png";
} else if (valC == 4) { col = "yellow.png";
} else {
colorCubo();
}
return col;
}

Para que se ejecute el randon unicamente se manda ha llamar este metodo y busca el valor hasta el límite que es 5.

public int valorColor() {
int auxC;
Random rc = new Random();
auxC = rc.nextInt(5);
return auxC;

}

Clase Cubo

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package test;

import java.awt.Canvas;
import java.awt.Graphics;
import java.awt.image.BufferedImage;
import javax.imageio.ImageIO;

/**
*
* @author cvleonardo
*/
public class Cubo extends Canvas {

protected BufferedImage sprite;
private int valC;
String col = "";
String colorCubo = "";
public String color = "";
private String[] imagen = {color};
private int altoCubo;
private int anchoCubo;
private int posX;
private int posY = 31;

public Cubo(int posX, int posY, String colorCubo) {
this.posX = posX;
this.posY = posY;
this.colorCubo = colorCubo;
imagen[0] = color;
int pos = 0;
cargaSprite(imagen[pos]);
anchoCubo = sprite.getHeight();
altoCubo = sprite.getWidth();

}

protected final void cargaSprite(String imagen) {
try {
java.net.URL url = getClass().getClassLoader().getResource("res/" + colorCubo);
sprite = ImageIO.read(url);

} catch (java.net.MalformedURLException e) {
e.printStackTrace();

} catch (java.io.IOException e) {
e.printStackTrace();

}

}

public void paintCubo(Graphics g) {
g.drawImage(sprite, posX, posY, this);
}
}

Clase ContenedorTablero

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package test;

import java.awt.Canvas;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.image.BufferStrategy;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.util.Random;
import java.util.Vector;
import javax.imageio.ImageIO;
import javax.swing.JPanel;

/**
*
* @author cvleonardo
*/
public class ContenedorTablero extends Canvas {

private JPanel panelTablero;
protected BufferedImage sprite;
private BufferStrategy strategy;
private Vector cub;
public int posX = 0, valX, possX;
public int posY = 0, valY;
public int valC;
private Cubo cubo;
public String col = "";
public String colorCubo = "";

public ContenedorTablero(JPanel panelTablero) {
this.panelTablero = (JPanel) panelTablero;
setBounds(0, 0, 192, 414);
panelTablero.setPreferredSize(new Dimension(192, 414));
panelTablero.add(this);
requestFocusInWindow();
createBufferStrategy(2);
strategy = getBufferStrategy();
cub = new Vector();

}

public void paintTablero() {
Graphics g = strategy.getDrawGraphics(); // Corresponde al double buffer
try {
java.net.URL url = getClass().getClassLoader().getResource("res/fondo.png");
sprite = ImageIO.read(url);
g.drawImage(sprite, 0, 0, this);

} catch (IOException ex) {
ex.printStackTrace();

}

colorCubo = colorCubo();
cubo = new Cubo(32, 32, colorCubo);
cub.add(cubo);


for (Cubo c : cub) {
c.paintCubo(g);
}
strategy.show();

}

public String colorCubo() {
valC = valorColor();
if (valC == 0) {
col = "blue.png";
} else if (valC == 1) {
col = "green.png";
} else if (valC == 2) {
col = "pink.png";
} else if (valC == 3) {
col = "red.png";
} else if (valC == 4) {
col = "yellow.png";
} else {
colorCubo();
}
return col;

}

public int valorColor() {
int auxC;
Random rc = new Random();
auxC = rc.nextInt(5);
return auxC;

}
}

Clase Animacion

/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package test;

/**
*
* @author cvleonardo
*/
public class Animacion {

private javax.swing.JPanel panelTablero;
private javax.swing.JFrame frame;
public int _PECES = 2;
ContenedorTablero conTab;

public Animacion() {
frame = new javax.swing.JFrame();
initComponents();

}

private void initComponents() {
panelTablero = new javax.swing.JPanel();
frame.getContentPane().setLayout(null);
frame.setResizable(false);
java.awt.Dimension screenSize = java.awt.Toolkit.getDefaultToolkit().getScreenSize();
frame.setBounds((screenSize.width - 961) / 2, (screenSize.height - 678) / 2, 192, 414);
frame.setVisible(true);
frame.setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
panelTablero.setLayout(null);
frame.getContentPane().add(panelTablero);
panelTablero.setBounds(0, 0, 192, 414);

conTab = new ContenedorTablero(panelTablero);
conTab.paintTablero();

}

public static void main(String args[]) {
new Animacion();
}
}

Paquete para el programa

Desarrollen este Empaquetamiento

viernes, 23 de enero de 2009

Programa de puzzle

Para aprender todos juntos genero este blog en el publicaremos código compartiendo nuestros conocimientos. Espero sea de su agrado.

Comenzaremos desarrollando un programa sencillo llamado PUZZLE.

Especificaciones.

Propósito:
• El objetivo de este ejercicio es desarrollar en Java un juego de tipo puzzle, el cual es una variación del juego Tetris.

Reglas del juego:
• Existen 5 elementos diferentes, cada uno con un color específico (cinco colores).
• Se generan pares de elementos en el tablero de juego cada X milisegundos; X decrece cada 2 minutos de juego; X = 2 seg, al inicio del juego Cada par de elementos aparece en posición aleatoria sobre la primera línea superior del tablero de juego. Después, comienza a bajar hasta que cada elemento del par se apila justo encima de otro elemento que se encuentre en el fondo.



Esta es la primer parte.

Los que quieran comenzar a programar envien un correo para que les mande las imagenes.

Felices desarrollos.
Seguire publicando en una semana