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){
}
}
}
}
domingo, 27 de marzo de 2011
miércoles, 23 de marzo de 2011
Practica con Sprite y Tiles

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
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();
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
* @return
*/
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;
}
}
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);
}
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.
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
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() {}
}
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:
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
* @return
*/
* 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;
}
}
Suscribirse a:
Entradas (Atom)