domingo, 27 de marzo de 2011

Ejemplo de Hilos

Este es un ejemplo sencillo de ejecucion de hilos, donde el metodo run es simplemente un ciclo for que mediante una variable de control i, se ejecutará 10 veces; dentro de su ejecución simplemente va a imprimir el string que le mandamos de parámetro al constructor y después el valor de la variable i, inmediatamente después de haber ejecutado la impresión en pantalla, vamos a poner al hilo a dormir, esto lo hacemos con el método sleep.


public class Hilos1{
public static void main(String[] args){
Hilo1 h1 = new Hilo1("Uno");
Hilo1 h2 = new Hilo1("Dos");
Hilo1 h3 = new Hilo1("Tres");
Hilo1 h4 = new Hilo1("Cuatro");
h1.start();
h2.start();
h3.start();
h4.start();
}
}

class Hilo1 extends Thread{
String s;

public Hilo1(String s){
this.s = s;
}

public void run(){
for(int i=0; i<10; i++){
System.out.println(s+" "+i);
try{
sleep(Math.round(Math.random()*1000));
}catch(InterruptedException e){
}
}
}
}

miércoles, 23 de marzo de 2011

Practica con Sprite y Tiles

//Declaramos las variables.
private Image imgGoofy;
private Sprite sprGoofy;
private int xPosGoofy, yPosGoofy;
private int sequence = 12;

//Inicializamos las variables
imgGoofy = Image.createImage("/imagenes/goofy/issac.png");
sprGoofy = new Sprite(imgGoofy, 32, 48);
xPosGoofy = 95;
yPosGoofy = 250;

//Lo pitamos en el graphics

sprGoofy.setPosition(xPosGoofy, yPosGoofy);
sprGoofy.setFrame(sequence);
sprGoofy.paint(g);


//le damos movimiento al presionar las teclas
if ((keyStates & RIGHT_PRESSED) != 0){
    if (i < 9 || i > 11){i = 9;}
    xPosGoofy = Math.min(w-50, xPosGoofy + 5);
    sequence = i;
     i++;
}






//Este es el tile que vamos a utilizar para cargarlo por partes

private Image mapaImg;
private TiledLayer tile;


private int [] map =    {1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2,
                             3, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,12,
                             5, 6, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6,12,
                             5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,12,
                             5, 7, 7, 7, 8,10,10,10,10,10,10,10,10,10,10,10, 9, 7, 7, 7, 7, 7, 7,12,
                             5, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7,12,
                             5, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7,12,
                             5, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7,12,
                             5, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7,12,
                             5, 7,10,10,10,10,10, 9, 7, 7, 7, 7, 8,10,10,10, 9, 7, 7, 7, 7, 7, 7,12,
                             5, 7, 7, 7, 7, 7, 7, 9, 7, 7, 7, 7, 9, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7,12,
                             5, 7, 7, 7, 7, 7, 7, 9, 7, 7, 7, 7, 9, 7, 7, 7, 8,10,10,10, 9, 7, 7,12,
                             5, 7, 7, 6, 6, 7, 7, 9, 7, 7, 7, 7, 9, 7, 7, 7, 9, 7, 7, 7, 9, 7, 7,12,
                             5, 7, 7, 6, 6, 7, 7, 9, 7, 7, 7, 7, 9, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7,12,
                             5, 7, 7,10,10,10,10, 9, 7, 7, 7, 7, 9, 7, 7, 7, 9, 7, 7, 7, 7, 7, 7,12,
                             5, 7, 7, 7, 7, 7, 7, 9, 7, 7, 7, 7, 9, 7, 7, 7, 9, 7, 7, 7, 9, 7, 7,12,
                             5, 7, 7, 7, 7, 7,17, 9, 7, 7, 7, 7,10,17, 7, 7,10,10,10,10,17, 7, 7,12,
                             5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,12,
                             5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,12,
                             5, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7,12,
                             5, 6, 7, 7, 7, 7, 7, 7, 7,15,16, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 7, 6,12,
                             5, 4, 4, 4, 4, 4, 4, 4, 4,13,14, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4, 4,12};


        w = getWidth();//ancho de la pantalla
        h = getHeight();//alto de la pantalla

        xTiles = 24;//cantidad de tiles en x
        yTiles = 22;//cantidad de tiles en y
        xPosTile = -130;//posicion x del tile en pantalla
        yPosTile = -225;//posicion y del tile en pantalla

        mapaImg = Image.createImage("/imagenes/mapa/tilesMapa.png");//cargamos la imagen
        tile = new TiledLayer(xTiles, yTiles, mapaImg, 24, 24);//

//Metodo para cargar el sprite en el tile

private void cargaSprites(){
        for(int i = 0;i < map.length;i++){
            int columna = i % 24;
            int fila = (i - columna) / 24;
            tile.setCell(columna, fila, map[i]);
        }
    }


tile.setVisible(true);
tile.setPosition(xPosTile, yPosTile);
tile.paint(g);

if ((keyStates & RIGHT_PRESSED) != 0){
    xPosTile -= 5;
}

jueves, 17 de marzo de 2011

hoy le voy a hablar del web Gl una nueva tecnologia que se dessarrollo con ayuda de google y mozilla fundation para hacer de la web una experienza vacana aqui unos ejemplos pero solo se ven si tienes actualizado el mozilla a 4.0 y el google chrome canary http://alteredqualia.com/

Ejemplos de juegos en J2ME

JUEGOS EN J2ME

Buenas noches, esta vez subimos varios ejemplos de juegos para dispositivos móviles, hecho por alumnos, en los cuales podemos encontrar colisiones, movimientos, sprites, movimiento de objetos entre otros. Son muy buenos y sirven para tener en cuenta muchos otros puntos de vista y dar nuevas soluciones, espero sea de ayuda, y gracias los que hicieron los programas.
juegos mobile J2ME.zip por 4shared

click aqui-DESCARGAR_CODIGOS por mediafire

Saludos

NOTA: Si alguien está interesado en mandar publicaciones de codigos u otras cosas que sirvan para compartir el conocimiento por favor enviarlas al siguiente correo: desarrollox2@gmail.com

lunes, 7 de marzo de 2011

Validar campo tecla digitada en un JTexField

Con este metodo puede validar cada tecla digitada en una caja de texto, para este caso se valida que solo se puedan digitar numeros, si se presiona una letra no la deja escribir, a su vez en este metodo podemos modificarlo para que se puedan validar mas cosas, esta modificacion va en la condicion if, donde podemos validar con el codigo ASCII, el metodo codePointAt() de un String saca ese codigo ASCII y validamos los caracteres que queramos. Este metodo debemos ponerlo en un evento KeyReleased del JTexField, en Netbeans en modo grafico le damos clic derecho a la caja de texto, eventos, key y KeyReleased.


private void metodoKeyReleased(java.awt.event.KeyEvent evt) {
javax.swing.JTextField objJTF = (javax.swing.JTextField)evt.getSource();
String texto = objJTF.getText();
char[] fuente = texto.toCharArray();
char[] resultado = new char[fuente.length];
int j = 0;
boolean error = false;
for (int i = 0; i < fuente.lenght; i++) {

if (fuente[i] >= '0' && fuente[i] <= '9')

resultado[j++] = fuente[i];
else {
error = true;
java.awt.Toolkit.getDefaultToolkit().beep();
}
}
if ( error )
objJTF.setText(new String(resultado, 0, j));
}

sábado, 5 de marzo de 2011

Validar contraseña (ejemplo)

Este metodo valida la clave segun las condiciones.
Primera letra en mayuscula y ultima en un numero
el resto minusculas

/* @param c String
* @return bolean
*/

public static boolean validarClave(String c) {

int pi = c.charAt(0);
int p = 0;
int x = 0;
String cad = c.substring(1, c.length()-1);
int pf = c.charAt(c.length()-1);
if (c.length() >= 5 && c.length() <= 9) { if (pi > 64 && pi <> 47 && pf <58 ) { for (int i = 0; i < cad.length(); i++) { p = cad.codePointAt(i); if (p > 96 && p < 123) {
x++;
}
}

if (x == cad.length()) {
return true;
}else {
return false;
}
}else {
return false;
}
}else {
return false;
}
}

Cargando imagen en J2ME

protected void paint(Graphics g) {
        Image img = null;
        try {
                img = Image.createImage("/Images/logo.png");
        } catch (IOException e) {
                 System.err.println("Error: " + e);
        }
        g.drawImage(img, 0, 0, Graphics.LEFT|Graphics.TOP);
    }

viernes, 4 de marzo de 2011

web interactiva.

Comenzare esta entrada, diciendote que hay nuevas tecnologias para el desarrollo web interactivo libre de desarrollo en flash y rico en informacion marquetada y javascript, como lo es el html5 y el css3 una prueba buena son los experimentos de google donde hallaras impresionantes experimentos y algunos con open source.

para saber mas acerca de javascript recomiendo esta pagina web .

y para conocer php y diferentes aplicaciones open desarrolladas en esta tecnologia recomiendo esta.





Canvas en J2ME



protected void paint(Graphics g) {
        g.setColor(211, 211, 211);
        g.fillRect(0, 0, getWidth(), getHeight());

        g.setColor(0, 0, 0);      
        g.drawLine(30, 30, 100, 100);//Cabello
        g.drawLine(60, 25, 100, 100);//Cabello
        g.drawLine(90, 20, 100, 100);//Cabello
        g.drawLine(120, 30, 100, 100);//Cabello
        g.drawLine(150, 25, 100, 100);//Cabello
        g.drawLine(180, 20, 100, 100);//Cabello
        g.drawLine(210, 25, 100, 100);//Cabello

        g.setColor(255, 217, 198);
        g.fillRoundRect(50, 50, 130, 130, 130, 130);//cabeza

        g.setColor(255, 255, 255);
        g.fillRoundRect(70, 80, 30, 40, 40, 40);//Ojo derecho
        g.fillRoundRect(110, 80, 30, 40, 40, 40);//Ojo izquierdo

        g.setColor(0, 0, 0);
        g.fillRoundRect(75, 95, 20, 20, 20, 20);//Ojo derecho
        g.fillRoundRect(115, 95, 20, 20, 20, 20);//Ojo izquierdo
        g.drawLine(105, 125, 105, 135);//Nariz
        g.drawLine(105, 135, 110, 135);//Nariz
        g.fillRoundRect(100, 140, 20, 30, 10, 10);//Boca

        g.setColor(255, 255, 255);
        g.fillRoundRect(101, 141, 18, 8, 8, 5);//Dientes arriba
        g.fillRoundRect(101, 161, 18, 8, 8, 5);//Dientes abajo
      
    }

jueves, 3 de marzo de 2011


Aqui unos libros en PDF de programacion en JAVA ME (micro edition) para dispositivos móviles en español y en ingles para descargar, son recomendados.
Linux for humans

DESCARGAR PDF
pdf j2me.zip

Ejemplos Menus #1

Menu
1. Fibonacci
2. Serie A
3. Tabla de multiplicar
4. Convertir Mayusculas, minusculas y contar letras

Fibonacci:
La sucesión inicia con 0 y 1, y a partir de ahí cada elemento es la suma de los dos anteriores.
Esta sucesión fue descrita en Europa por Leonardo de Pisa, matemático italiano del siglo XIII también conocido como Fibonacci. Tiene numerosas aplicaciones en ciencias de la computación, matemáticas y teoría de juegos.
Ejemplo:
0, 1, 1, 2, 3, 5, 8, 13, 21, 34, 55.........


public String cadFibo(int d1, int d2, int serie){
        int suma = 0;
        int n1 = d1;
        int n2 = d2;
        String cadena = "";
        for (int i = 0; i < serie; i++){
            suma = n1 + n2;
            cadena = cadena + " " + n1;
            n1 = n2;
            n2 = suma;
        }
        return cadena;
    }


Serie A: 1/2 + 2/4 + 3/7 + 4/11.........

 Tabla de Multiplicar: Las tablas de multiplicar se usan para definir la operación binaria del producto para un sistema algebraico n x n = n.


public String resMulti(int d1, int d2){
        String r = "" + (d1 * d2);
        return r;
    }


Convertir palabras y contarlas:


public String canCaracteres(String d1){
        String cadena = d1;
        int n = cadena.length();
        return ""+n;
    }


 Archivo del codigo - Descarga

miércoles, 2 de marzo de 2011

El siguiente código muestra un ejemplo completo de uso de RMS.

import java.io.*;
import javax.microedition.midlet.*;
import javax.microedition.rms.*;

public class RMS extends MIDlet {
// nombre de la BD
static final String BD = "datos";

String dato;
int id, i;
char b;

public RMS() {
RecordStore rs = null;

// Borramos la BD si tenía algo
try {
RecordStore.deleteRecordStore(BD);
} catch( Exception e ){}

try {
// Abrimos el recordStore
rs = RecordStore.openRecordStore(BD, true);

guardaRegistro(rs,"Datos del registro 1");
guardaRegistro(rs,"Datos del registro 2");
guardaRegistro(rs,"Datos del registro 3");

// Leemos los registros
RecordEnumeration registros = rs.enumerateRecords(null, null, false);
// Recorremos todos los elementos
while (registros.hasNextElement()) {

// Obtenemos el ID del siguiente registro
verRegistro(rs, registros.nextRecordId());
}
rs.closeRecordStore();
} catch( RecordStoreException e ){
System.out.println( e );
}
notifyDestroyed();
}

public void verRegistro(RecordStore rs, int id) {
try {
ByteArrayInputStream bais = new ByteArrayInputStream(rs.getRecord(id));
DataInputStream is = new DataInputStream(bais);
// leemos el registro
try {
dato = is.readUTF();
System.out.println("-> "+dato);
} catch (EOFException eofe) {
} catch (IOException ioe) {}
} catch (RecordStoreException e) {}
}

public void guardaRegistro(RecordStore rs, String dato) {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
DataOutputStream os = new DataOutputStream(baos);
try {
// guadar el dato
os.writeUTF(dato);
} catch (IOException ioe) {}

// extraer el array de butes
byte[] b = baos.toByteArray();

// lo añadimos al recordStore
try {
rs.addRecord(b, 0, b.length);
} catch (RecordStoreException rse) {}
}

public void destroyApp( boolean unconditional ) {}
public void startApp() {}
public void pauseApp() {}
}

martes, 1 de marzo de 2011

RMS: Almacenamiento en MIDP

MIDP define una sencilla base de datos orientada a registros que permite almacenar a las aplicaciones datos de forma persistente. Esta base se denomina Record Management System (RMS).

A continuación, se puede ver un sencillo ejemplo de creación de un RecordStore:

import javax.microedition.midlet.*;
import javax.microedition.rms.*;

public class RecordStoreTest1 extends MIDlet {
public RecordStoreTest1() {
}
public void startApp() throws MIDletStateChangeException {
RecordStore rs=null;
try {
rs = RecordStore.openRecordStore("file1",true);
System.out.println("Archivo se abre");
}catch(Exception e){
System.out.println("Error: "+e.getMessage());
}
finally{
try {
rs.closeRecordStore();
System.out.println("archivo cerrado");
}catch (Exception e){
System.out.println("Error: "+e.getMessage());
}
}
destroyApp(true);
notifyDestroyed();
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
}
}

Metodo valida el correo

/**
* Este metodo valida el correo
* El correo valida que antes de la @ 'arroba' debe de tener caracateres
* alfanumericos solamenete, ademas entre la @ y el punto
* tambien alfanuemricos y despues del punto
*
* @param m String es la cadena que recibe
* @return boolean si el correo es valido retorna true
*/


public boolean validarMail(String m) {
char c1 = m.charAt(0);
int pos1 = 0;
int pos2 = 0;
int a1 = 0;
int a2 = 0;
int a3 = 0;
int x = 0;
String cadena1 = "";
String cadena2 = "";
String cadena3 = "";
if (c1 != '@' && c1 != '.') {
for (int i=1; i <>
if (m.charAt(i) == '@') {
pos1 = i;
}
}
for (int i=1; i <>
if (m.charAt(i) == '.') {
pos2 = i;
}
}
cadena1 = m.substring(0, pos1);
cadena2 = m.substring(pos1+1, pos2);
cadena3 = m.substring(pos2+1, m.length());
for (int i = 0;i <>
System.out.println("carcater "+cadena1);
a1 = cadena1.codePointAt(i);//
if ((a1 > 47 && a1 <> 64 && a1 <>
|| (a1 > 96 && a1 < a1="="46">
x++;
}
}
System.out.println("1 "+cadena2);
for (int i = 0; i <>
a2 = cadena2.codePointAt(i);
System.out.println("carcater "+a2);
if ((a2 > 47 && a2 <> 64 && a2 <>
|| (a2 > 96 && a2 <>
x++;
}
}
for (int i = 0;i <>
a3 = cadena3.codePointAt(i);
if ((a3 > 47 && a3 <> 64 && a3 <>
|| (a3 > 96 && a3 <>
x++;
}
}
System.out.println("xxx "+x+" "+(m.length()-2));
if (x == m.length()- 2) {
if (pos1 != 0 && pos2 != 0 && (pos1 + 2) <>
if (m.length()-1 >= (pos2 + 2)) {
return true;
}else {
return false;
}
}else{
return false;
}
}else {
return false;
}
}else {
return false;
}
}