martes, 12 de mayo de 2009

JDomino

Bueno aquí dejo este juego de domino, el cual AUN ESTA EN ETAPA DE DESARROLLO, pero quise compartirlo para que la gente vea lo juegue y lo critique descargalo AQUI Instrucciones: * pide un nombre o lo que sea escribe lo que sea para que puedas jugar. * dale click en jugar. * cuando sea tu turno escoge cualquiera de tus fichas y arrástrala hasta donde quieras ponerla, (el borde se pondrá rojo cuando puedas soltarla). * si no tienes fichas para jugar click en pasar. * si quieres volver a jugar clic en repartir y empieza otra vez; gente espero le guste

lunes, 11 de mayo de 2009

Que es un metodo

Un método y no quiero complicarles la vida es un pedazo de código que se ejecuta cuando nosotros lo llamamos, los métodos tienes una estructura o una forma de escribirlos y es la siguiente:

public void setNumero1(int n1){

numero1=n1;

}

donde public es el tipo de acceso, éste puede ser:

public: el método puede ser llamado por cualquier clase.

private: el método solo puede ser llamado por la misma clase donde está escrito.

: si no pones ni public ni private ni nada el método puede ser accedido solo desde las clases que estén en el mismo paquete o package, paqute se refiere a la carpeta donde están las clases, osea si yo todas mis clases esta una carpeta que se llama misClases solo las clases que esten hay pordran llamar aun metodo al cual no se le especifica el nivel de acceso.

public void setNumero1(int n1){

numero1=n1;

}

void hace referencia al dato que se retorna osea que el el método que en su dato de retorno tiene void quiere decir que no retorna nada.

este puede ser de un tipo de dato basico ya sea

int

double

boolean

char

float

por ejemplo

public int sumar(){

resultado=numero1+numero2;

return resultado;

}

aquí se especifica que este método devuelve un dato de tipo int, cuando el tipo de ato de retorno es diferente de void, entonces se utiliza la linea return

en este metodo se suma numero1 con numero2 y seguarda el resultado en resultado, y seguido se retorna el valor de resultado, el la linea return resultado;

public int sumar(){

resultado=numero1+numero2;

return resultado;

}

El nombre del metodo esto tiene cierta reglas y convenciones

reglas:

* no puede comenzar con un numero o con un carácter raro.

esta mal esto: public void 1ermetodo()

* no puede contener caracteres aritmético-lógicos.

esta mal esto: public void primer-metodo()

* no puede tener ni comas, ni comillas, ni nada de eso.

esta mal esto: public void primer,metodo()

mejor dicho usar los caracteres

desde la a/A (minúscula o mayúscula) hasta la z/Z(minúscula o mayúscula), los numero de 1 hasta 9 y el guion bajo "_".

osea:

public void primer_Metodo()

public void metodo1()

convenciones

* debe comenzar con minúscula.

osea no se escribe public void Primer_Metodo() si no public void primer_Metodo()

* si tiene mas de 2 palabras de la segunda en adelante se escribe con mayúscula inicial.

osea se escribes public void primerMetodo().

el nombre del método debe ser explicito osea debe explicar que es lo que hace el método por ejemplo suma, resta... si vemos esos metodos sabemos que es para sumar, restar, ect.

public void setNumero1(int n1){

numero1=n1;

}

los parametros que recibe esto se define dentro de parentesis por ejemplo este método recibe un parámetro llamado n1 de tipo int

en caso de recibir otro parámetro se beben separar por comas, lo parámetros pueden ser de cualquier clase o dato básico.

creo que con esto ya entiendes lo que es un método...

por ejemplo

public void sumar(int n1,int n2){

System.out.println(n1+n2);

}

Java Que es la clase Java y que es el Objeto

DESGARGA EJEMPLO AQUI Bueno para no complicar mucho este cuento y hablar de las propiedades de lo que es la Programación Orientada a Objetos: Clase es la compilación de tu código java: osea que si tu escribes el código: public class MiClase { public MiClase() { } } lo guardas en un .java osea que te queda un archivo MiClase.java cuando tu compilas ese código que esta en MiClase.java se crea un archivo que quedaria algo como MiClase.class Ese archivo MiClase.class, ese es tu clase. Ahora no tiene sentido una clase que no tenga ni métodos ni variables ni nada, entonces ahora haremos algo mas enfocado para que veas como es que es esto. tenemos el siguiente código: public class Operaciones { int numero1=0; int numero2=0; int resultado=0; public void setNumero1(int n1){ numero1=n1; } public void setNumero2(int n2){ numero2=n2; } public int multiplicar(){ resultado=numero1*numero2; return resultado; } public int dividir(){ resultado=numero1/numero2; return resultado; } public int sumar(){ resultado=numero1+numero2; return resultado; } public int restar(){ resultado=numero1-numero2; return resultado; } } y tenemos este código: public class MiClase { public static void main (String[] args) { Operaciones mi_Objeto_Operaciones=new Operaciones(); int mi_suma=0; int mi_resta=0; int mi_multiplicacion=0; int mi_division=0; mi_Objeto_Operaciones.setNumero1(11); mi_Objeto_Operaciones.setNumero2(7); mi_suma=mi_Objeto_Operaciones.sumar(); mi_resta=mi_Objeto_Operaciones.restar(); mi_multiplicacion=mi_Objeto_Operaciones.multiplicar(); mi_division=mi_Objeto_Operaciones.dividir(); System.out.println ("La suma es "+mi_suma); System.out.println ("La resta es "+mi_resta); System.out.println ("La multiplicacion es "+mi_multiplicacion); System.out.println ("La division es "+mi_division); } } en Operaciones nosotros describimos una clase que tiene 2 variables y 6 métodos. los métodos setNumero1 y setNumero2, son métodos usados para darle valores a las variables numero1 y numero2 respectivamente, el nombre n importa pero pon convención se utiliza el prefijo "set" seguido del nombre de la variable, cada uno de estos métodos recibe un parámetro int (el cual ser asignado ya sea a numero1 o a numero2. el método suma, este método no recibe ningún valor o parámetro pero retorna el valor de la suma de numero1 y numero2. en MiClase tenemos un unico metodo el "main" y aqui creamos un objeto de tipo Operaciones que llamamos mi_Objeto_Operaciones en la linea Operaciones mi_Objeto_Operaciones=new Operaciones(); luego le damos valor a numero1 y numero2 en las lineas mi_Objeto_Operaciones.setNumero1(11); mi_Objeto_Operaciones.setNumero2(7); y luego llamamos los métodos de operaciones(sumar,restar,multiplicar,dividir) y guardamos esos valores en variables mi_suma=mi_Objeto_Operaciones.sumar(); mi_resta=mi_Objeto_Operaciones.restar(); mi_multiplicacion=mi_Objeto_Operaciones.multiplicar(); mi_division=mi_Objeto_Operaciones.dividir(); y por ultimo mostramos los resultados por pantalla System.out.println ("La suma es "+mi_suma); System.out.println ("La resta es "+mi_resta); System.out.println ("La multiplicacion es "+mi_multiplicacion); System.out.println ("La division es "+mi_division); ENTONCES LA CLASE ES EL .CLASS QUE SE CREA CUANDO COMPILAMOS UN .JAVA Y UN OBJETO ES UNA INSTANCIA DE UNA CLASE OSEA CUANDO HACEMOS new Operaciones() ESTAMOS CREANDO UN OBJETO DE LA CLASE OPERACIONES DESGARGA EJEMPLO AQUI

domingo, 10 de mayo de 2009

JAVA DESDE CERO

Ok esto es un pequeño manual de Java el cual ira creciendo poco a poco espero me colaboren para yo colaborar dudad o comentarios abajito esta la ventanita de comentarios o a codigo.java@hotmail.com y empezamos: primero: Necesitas JDK que es el compilador de java lo consigues en: Java JDK Y necesitas un IDE el ide el el programa donde vas a escribir el código yo uso JCreator y este lo consigues aqui: JCreator u otros IDEs NETBEANS ECLIPSE JBUILDER esta clase muestra un mensaje que dice: "Este es mi mensaje" public class Ejercicio1 {//por convención la primera letra en en mayúscula public static void main (String[] args) {//y este método es donde se ejecuta todo System.out.println("Este es mi mensaje");//Esta linea muestra el mensaje } } Clase 2: import javax.swing.JOptionPane; public class Ejercicio2 {//por convención la primera letra en en mayúscula public static void main (String[] args) {//y este método es donde se ejecuta todo JOptionPane.showMessageDialog(null,"Este es mi mensaje");//Esta linea muestra el mensaje } } la diferencia es que una se muestra en el pront y otra se muestra en una pequeña ventana emergente asi como esta descarga los archivos aqui

sábado, 2 de mayo de 2009

Reproducir Audio / Sonido en java

Bueno aqui y como pa salir del paso les traigo este ejemple es lo mas sencillo que pude escribir si hago algo mas sencillo se lo paso NO NECESITA SER UN APPLET!!
aqui esta el codigo usuado
aqui los sonidos estan en la misma carpeta que el class
pero tu lo hace como quiera
import java.applet.AudioClip;
import javax.swing.JApplet;
import java.io.File;
import java.net.URL;
public class CargarAudioYReproducir{
public static void main(String a[] ){
try {
//archivo de audio
File f=new File("welcome.wav");
//lo convertimos a url
URL u=f.toURL();
//Bueno de la AudioClip no se puede instancias por eso esto
AudioClip sonido=JApplet.newAudioClip(u);
//para que suene
sonido.play();
//como el programa se ejecuta muy rapido el audio no se alcanza a escuchar
Thread.currentThread().sleep(5000);
//si fuese una ventana no fuese necesario esa linea
}catch (Exception ex) {
System.out.println (ex);
}
}
}
/***/
ahora aqui hay una clase donde encapsule todo este proceso osea en otras palabras mas papallo:
import java.applet.AudioClip;
import javax.swing.JApplet;
import java.io.File;
import java.net.URL;
public class Audio {
private AudioClip clip=null;
private String dir=null;
public Audio(AudioClip ac) {
clip=ac;
}
public Audio(URL u){
this(JApplet.newAudioClip(u));
dir=u.getPath()+" "+u.getFile();
}
public Audio(File f)throws Exception {
this(f.toURL());
}
public Audio(String d)throws Exception{
this(new File(d));
}
public static Audio getAudioClip(String d){
try {
return new Audio(d);
}catch (Exception ex) {
System.out.println (ex);
}
return null;
}
public void play(){
clip.play();
}
public void stop(){
clip.stop();
}
public void loop(){
clip.loop();
}
public String toString(){
return dir+"\n"+clip.toString();
}
}

jueves, 30 de abril de 2009

Conexion java con puerto serial db 25

Bueno esta conexion tambien la hice con la Com32 de la Sun pero por las mismas razones que modifique la libreria del paralelo, Sun no da soporte para Windows por lo menos en este aspecto, bueno aqui les dejo el codigo que use para comunicar el puerto serial o db9 con java enviar y leer datos:
import javax.swing.JLabel;
import javax.swing.JFrame;
import javax.swing.JButton;
import javax.swing.JOptionPane;
import java.awt.Font;
import java.awt.Toolkit;
import java.awt.Component;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.List;
import app.Com;
import app.Parameters;
import core.SerialPort;
public class Ventana extends JFrame implements ActionListener{
JLabel labelDato;
private JButton boton;
private Hilo hilo;
public Ventana() {
setLayout(null);
labelDato = new JLabel("...");
boton=new JButton("iniciar");
setDefaultCloseOperation(javax.swing.WindowConstants.EXIT_ON_CLOSE);
setTitle("...:::PUERTO:::SERIAL:::...");
labelDato.setFont(new Font("Arial", 0, 54));
labelDato.setLocation(10,10);
labelDato.setSize(280,280);
boton.setLocation(10,300);
boton.setSize(280,20);
boton.addActionListener(this);
add(labelDato);
add(boton);
setLocation(300,300);
setSize(300,350);
centrar(this);
setResizable(false);
setVisible(true);
}
public void actionPerformed(ActionEvent evento){
if(boton.getText().matches("iniciar")){
boton.setText("detener");
iniciar();
}else{
boton.setText("iniciar");
detener();
}
}
public void centrar(Component componente){
Toolkit tk=Toolkit.getDefaultToolkit ();
int lx=(int) tk.getScreenSize().getWidth()*1;
int ly=(int) tk.getScreenSize().getHeight()*1;
lx=lx/2-componente.getWidth()/2;
ly=ly/2-componente.getHeight()/2;
componente.setLocation(lx,ly);
}
private void iniciar(){
try {
if(hilo==null){
hilo = new Hilo(this);
hilo.start();
}else{
hilo.resume();
}
}catch (Exception ex) {
System.out.println (ex);
}
}
private void detener(){
try {
hilo.suspend();
labelDato.setText("...");
setTitle("...:::PUERTO:::SERIAL:::...");
}catch (Exception ex) {
System.out.println (ex);
}
}
}
class Hilo extends Thread{
private Ventana ventana;
public Hilo(Ventana ven){
ventana=ven;
}
public void run(){
try {
SerialPort libres = new SerialPort();
List lista = libres.getFreeSerialPort();
if(lista.size()<1){
throw new Exception("NO SE HAN ENCONTRADO PUERTOS DISPONIBLES");
}
String puerto=lista.get(0);
Parameters configuracion = new Parameters();
configuracion.setPort(puerto);
configuracion.setBaudRate("9600");
configuracion.setStopBits("2");
Com com = new Com(configuracion);
int dato=0;
int i=0;
System.out.println("LOG");
while(true){
dato = com.receiveSingleDataInt();
ventana.labelDato.setText( dato +"");
ventana.setTitle("...:::PUERTO:::SERIAL::("+puerto+"):::..."+dato);
System.out.println("lee "+dato);
sleep(100);
com.sendSingleData(i);
System.out.println("env "+i);
i++;
}
}catch (Exception ex) {
System.out.println (ex);
}
}
public void detener(){
ventana.dispose();
ventana=null;
}
}
class Ejecutable{
public static void main(String args[]) {
Ventana v=new Ventana();
}
}
y aqui les dejo los enlaces para descargar la libreria y el codigo:
http://www.4shared.com/file/102621757/a6780501/conexion_java_serial_db9.html
si ese no funciona prueba con este:
http://www.4shared.com/get/102621757/a6780501/conexion_java_serial_db9.html

Conexion de java con el puerto paralelo db 25

Bueno eso ya estaba hecho haciendolo con el API Com32 de la sun.... pero por su guerra de licencias y leyes y eso y lo otro sun HA DEJADO DE DAR SOPORTE A WINDOWS!!!!, nada raro pero en fin entonces hay que utilizar otro metodo para conectarse y es siguiente es usando JNI 
Esto es llamar metodos nativos esos metodos estan dentro de una dll y alguien que sabes mucho, mucho hizo esa vaina y yo lo implemente:
este es mi codigo:
import javax.swing.JOptionPane;
public class Prueba {
    public Prueba(){
     while (true){
     int n=pedirEntero("Digite un numero");
     escribirEnPuerto(n);
     mostrarPuertos();
     }
    }
    
    public int pedirEntero(String msj){
int n=10;
try {
     String _n="";
     _n=JOptionPane.showInputDialog(null,msj);
     n=Integer.parseInt(_n);
     n=Math.abs(n);
     return n;
}catch (Exception ex) {
return pedirEntero(msj);
}
}
public void escribirEnPuerto(int n){
PuertoParalelo pp = new PuertoParalelo();
try {
pp.output((short)888,(short)n);
}catch (Exception ex) {
System.out.println (ex);
}
try {
pp.output((short)889,(short)n);
}catch (Exception ex) {
System.out.println (ex);
}
try {
pp.output((short)890,(short)n);
}catch (Exception ex) {
System.out.println (ex);
}
}
public void mostrarPuertos(){
System.out.println ("Valores en puertos");
PuertoParalelo pp = new PuertoParalelo();
try {
System.out.println ("puerto 888: "+pp.input((short)888));
}catch (Exception ex) {
System.out.println (ex);
}
try {
System.out.println ("puerto 889: "+pp.input((short)889));
}catch (Exception ex) {
System.out.println (ex);
}
try {
System.out.println ("puerto 890: "+pp.input((short)890));
}catch (Exception ex) {
System.out.println (ex);
}
}
public static void main(String args[]){
new Prueba();
    }
    
}
y aqui les dejo la libreria y el codigo:
http://www.4shared.com/get/102617690/f7a09095/comunicacion_con_db25_conexion_java_paralelo.html
si ese enlace no funciona prueba con este:
http://www.4shared.com/file/102617690/f7a09095/comunicacion_con_db25_conexion_java_paralelo.html
ya  con eso funciona
la conexion con la protoboard esta en una entrada mas abajo
COMENTARIOS, DUDAS... SI NO LO DICES NO LO SE