Menú

Mostrar Mensajes

Esta sección te permite ver todos los mensajes escritos por este usuario. Ten en cuenta que sólo puedes ver los mensajes escritos en zonas a las que tienes acceso en este momento.

Mostrar Mensajes Menú

Mensajes - Z@@K

#11
Hola colegas,

tengo una consulta...

Estoy haciendo mi primer juego en Java, un juego sencillo, y hoy es el primer día que comienzo a agregarle sonido a los programas...

Bueno, según lo que he aprendido, creé la siguiente clase:

Código (java) [Seleccionar]
package sources;

import java.applet.Applet;
import java.applet.AudioClip;

public class Sounds {
   
   public static final AudioClip normalShoot =Applet.newAudioClip(Sounds.class.getResource("../sources/normalshoot.wav"));
   public static final AudioClip fastReload =Applet.newAudioClip(Sounds.class.getResource("../sources/fastReload.wav"));
   public static final AudioClip outOfAmmo =Applet.newAudioClip(Sounds.class.getResource("../sources/outofammo.wav"));
   
}


Esta clase la hice para utilizar esos tres sonidos.
El sonido "normalshoot.wav" lo quiero utilizar cada vez que el jugador preciona y suelta la tecla "x", por lo tanto en la clase llamada "Player" que es la que implementa KeyListener agregué el siguiente codigo en el metodo keyReleased:

Código (java) [Seleccionar]
       if(e.getKeyCode() == KeyEvent.VK_X && !gp.isPaused()){
           if(bullets>0){
               shootTime = 0;
               bullets--;
               sources.Sounds.normalShoot.play();
           }
           else
               sources.Sounds.outOfAmmo.play();
       }


donde pueden ver que utilizo sources.Sounds.outOfAmmo.play() para que suene cada vez que se dispara.

Bueno, el problema es que al correr el programa y disparar suena, pero no siempre... suena la mayoría de las veces, pero aveces no se por que no...

que piesan que debería hacer para asegurar que siempre suene? debo de crear un hilo por separado para estos sonidos?

cualquier tipo de sugerencia sería agradecido.


Saludos,
Zaak
#12
Java / ¿Donde descargar Javadoc para Java 3D?
29 Julio 2014, 18:13 PM
Hola buen día,

ustedes saben que Java ofrece documentación sobre las librerías que vienen incluidas en el API. Esta documentación puede ser vista online en el siguiente enlace:

http://docs.oracle.com/javase/7/docs/api/

(ese enlace es para la documentación de Java 7, pero también la pueden encontrar para Java 8)

Además dicha documentación también puede ser descargada y así no tener que verla online, la descarga se encuentra en el siguiente enlace:

http://www.oracle.com/technetwork/java/javase/documentation/java-se-7-doc-download-435117.html

Bueno, yo deseo aprender a programar en java 3D (Paquetes no incluido en el jdk, pero se pueden descargar por aparte en la pagina de Oracle) y he encontrado que Oracle también proporciona documentación Online para estos paquetes:

http://docs.oracle.com/cd/E17802_01/j2se/javase/technologies/desktop/java3d/forDevelopers/J3D_1_3_API/j3dapi/

¿Alguno de ustedes sabe donde puedo descargar esta documentación?
he estado buscando pero no logro encontrar el sitio de descarga...


Para mí es importante la descarga de esta documentación debido a que la registro en mi IDE (netbeans) y así el IDE reconoce los paquetes, las clases, etc y me brinda la información que necesito.

Les agradecería mucho si me indican el link donde puedo descargar esa documentación de java3d.

Gracias!
-----------------------------------------------

Ya lo encontré!!!!!!
Gracias de todas formas ;)
#13
Hola nuevamente!!

Sí, sí, yo se que ya es la tercera vez consecutiva que escribo en este foro, pero esta vez quiero compartir uno que otro link con ustedes.
Espero les sean de utilidad a todos aquellos que como yo se están iniciando en en mundo de la programación Java y piensan que la mejor manera de aprender es desarrollando pequeños juegos 2D y a lo mejor en 3D.

1) Primero que nada, un link donde encontraran un libro que les enseña a programar desde cero, el único problemita es que solamente les sera útil a los que mastican el inglés, creo que es posible buscarlo en español, yo se los recomiendo:

http://www.identi.li/index.php?topic=48906

2) En el siguiente link encontraran disponible para descargar un libro el cual explica como tratar las imagenes, figuras, texto 2D, etc.. en Java. Esto es muy util para aquellos que desean hacer videojuegos : )

http://www.lcc.uma.es/~galvez/Java2D.html

3) El siguiente link es una pagina la cual les explica como crear un pequeño juego llamado minitenis (ya lo había comentado en un post anterior):

http://www.edu4java.com/es/game/game0.html

4) El siguiente link es de un libro que les enseña a programar videojuegos en java, es un poquito complejo y en ingles, pero ya le heche una ojeada y es muy bueno, sin embargo es del 2005 o 2004 creo :P

http://it-ebooks.info/book/805/

5) También está este link para la descarga de un libro (en ingles también) para los que desean programar juegos 3D:

http://it-ebooks.info/book/2998/

Bueno, eso es todo lo que yo les puedo aportar por ahora, espero les sean utiles ya que yo me he pasado casi tres días buscando información acerca de la programación de videojuegos y eso fue lo que mire mas interesante....

Me gustaría que otros que tengan algo más que aportar escriban sobre este mismo tema, algún libro, alguna pagina sobre programación de juegos 2D, etc..

Todo es bienvenido!!!


Gracias por su atención, y nos seguimos escribiendo!

Saludos,
Z@@k
#14
Java / Re: Aprendiendo a desplazar imagenes
18 Julio 2014, 02:31 AM
Hola!!!
Soy yo nuevamente : P
Gracias Zoik!, pero fijate que ya solucioné este problema : )

Explicaré como fue solucionado para todos los novatos que se pasen por aquí.

Yo estaba tratando de hacer un juego llamado Ping Pong en Java, de un solo jugador...
ustedes saben, aquel viejo juego de una pelotita revotando por todos lados y un pedazo de tabla intentando impedir que caiga en lo mas profundo de la ventana...

Bueno, el caso es que al fin había terminado el juego por mi propia cuenta (estaba bien feliz), el código es el siguiente:

Código (java) [Seleccionar]

import java.awt.Color;
import java.awt.Graphics;
import javax.swing.JFrame;
import java.awt.event.KeyEvent;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

public class PingPong extends javax.swing.JPanel implements java.awt.event.KeyListener{
    int arriba;
    int abajo;
    int x;
    int y;
    boolean continuar = true;
    Mover motor;
    PingPong(){
        motor= new Mover();
        x=18;
        y=98;
        arriba=82;
        abajo=arriba + 40;
        setFocusable(true);
        addKeyListener(this);
    }
   
    public static void main(String[] agrs){
        JFrame isaac = new JFrame("Hola");
        PingPong daniel = new PingPong();
        isaac.add(daniel);
        isaac.setSize(420, 250);
        isaac.setDefaultCloseOperation(3);
        isaac.setVisible(true);
        daniel.motor.start();
       
    }
   
    public void keyReleased(KeyEvent e) {}
   
    public void keyTyped(KeyEvent e) {}
   
    public void keyPressed(KeyEvent e) {
        if(e.getKeyCode()==KeyEvent.VK_DOWN)
            arriba+=18;
        if(e.getKeyCode()==KeyEvent.VK_UP)
            arriba-=18;
        if(arriba<10)
            arriba=10;
        if(arriba>162)
            arriba=162;
        abajo=arriba + 40;
        repaint();
    }
   
    public void paint(Graphics g){
        super.paint(g);
        g.fillRect(0, 0, 400, 250);
        g.clearRect(0, 10, 382, 192);//Area de movimiento
        g.fillRect(10, arriba, 8, 40);//La tabla
        g.fillRect(x, y, 8, 8);
        //System.out.println(arriba + ", " + abajo);
       
    }
    class Mover extends Thread{
        int velocidad;
        int movimientoX;
        int movimientoY;
        int countLoop=0;
        Mover(){
           
            velocidad=10;
            movimientoX=4;
            movimientoY=-4;
        }
        public void run(){
            while(continuar){
                try{
                    Thread.currentThread().sleep(velocidad);
                    moverBola();
                    repaint();
                    countLoop++;
    System.out.println(countLoop*velocidad/1000);
                    if(x+8<=0){
                        JOptionPane.showMessageDialog(null, "Game Over...\nYou last for " + countLoop*velocidad/1000 + " Seconds!");
                        this.stop();
                    }
                       
                }
                catch (InterruptedException ex) {
                        Logger.getLogger(PingPong.class.getName()).log(Level.SEVERE, null, ex);
                }
            }
        }
       
       
        public void moverBola(){
            y+=movimientoY;
            x+=movimientoX;
            check();
        }
       
        public void check(){
            if(y<=10 || y>=194)
                movimientoY=-movimientoY;
            if(x==374)
                movimientoX=-movimientoX;
            if(x==18 && movimientoX<0)
                if(y<abajo && (y+8)>arriba){
                    movimientoX=-movimientoX;
                }
        }
       
       
    }
}


//La linea 88 y 89 de este código no las entiendo, pero siempre las utilizo despues
//del try cuando aplico ese Thread por que
//si no el IDE me dice que las agregue (Las utilizo por que las aprendí de otro
//código de un juego que me encontré hace un par de semanas)

Yo se que visualmente el jueguito está horrible jajaja, pero yo lo hice solo para poner en practica lo aprendido y no le puse mucha importancia a como quedara visualmente...

bueno, el problema era que yo puse en el código que cada vez que el jugador presionara las teclas de arriba o abajo se sumaría o restarían 18 a la posición vertical de la tabla, pero me dí cuenta probando el juego que si el jugador mantenía la tecla de arriba o de abajo presionada con el objetivo de que la tabla corriera continuamente, la tabla primeramente daba un paso y hasta después corría continuamente : (

En ese entonces fue cuando les consulté que podía hacer...
Hasta que en una pagina encontré que explicaban como hacer exactamente este jueguito con el nombre de: "Minitenis" y pude verificar como aplicaron otra lógica para que el movimiento de la tabla sea siempre continuo.

Les comparto la página donde encontré la creacion de "Minitenis":

http://edu4java.com/es/game/game0.html

La lógica que aplican en el desarrollo de este sencillo juego es que cuando el jugador presiona arriba o abajo, el código que está en el método "keyPressed" cambia la cantidad que se está sumando continuamente (mediante un while) a la posición vertical de la tabla de cero a uno o menos uno (en dependencia de si se aprieta arriba o abajo) y el método "keyReleased" convierte esta cantidad nuevamente a cero...

si no me entendieron pueden ver el código en el link que les mostré, y verán lo ordenado y genial que está comparado con el mío.... jajajaja... bueno, con algo se empieza ;)

Saludos a todos!!!!!
Muchas gracias por su atención.
#15
Java / Aprendiendo a desplazar imagenes
15 Julio 2014, 19:07 PM
Hola de nuevo!!!

Bueno, les explico, yo soy nuevo programando en Java y me interesa mucho adentrarme en el mundo de la programación... Además ya pasé con éxito la prueba de iniciación en la creación de mi propio "Hola mundo!" así que no me detendré ahora.

Estoy aprendiendo a crear graficos 2D y mostrarlos en un JPanel el cual se agrega a un JFrame, bla bla bla etc

Bueno, si quiero utilizar el teclado de direcciones del pc (arriba, abajo, izquierda y derecha) para darle movimiento a uno de estos graficos (o a una imagen insertada) he aprendido a utilizar la interfaz "KeyListener" junto con la clase "KeyEvent" y una que otra linea de código.

El problema que encuentro en esto es que si mantengo una tecla de dirección presionada el método keyPressed se activa una vez, luego hace una pausa y luego se activa continuamente.

¿como puedo hacer para que desde el momento que que presiona la tecla y la mantenga presionada el método keyPressed se mantenga dando una respuesta continua y no haga esa odiosa pausa?

Que pasen un agradable día.
Gracias por la atención.

Saludos!
#16
Hola a todos!!, no frecuento hacer preguntas en foros, pero ya que me acabo de suscribir a esta página web tan genial (en serio, gracias a los que crearon este sitio web ya que me parece estupendo) haré mi primera consulta:

Hace unos días estaba programando en Java con ayuda de NetBeans, bueno, estaba creando, compilando y corriendo una clase llamada "Tester" en un package llamado "myFavorites" en un proyecto llamado "aprendiendo". De repente se me ocurrió ir directamente al directorio donde NetBeans creó el archivo "Tester.java" y por accidente lo borré... No se que otras travesuras hice por ahí pero el punto es el siguiente:

Desde ese entonces no puedo crear una clase que se llame "Tester" en un package que se llame "myFavorites" en un proyecto que se llame "aprendiendo" INCLUSO si ya he eliminado el proyecto "aprendiendo" anterior donde cometí el delito que les he contado...

Cada vez que intento crear la clase Tester, Netbeans me dice "Hey! estas duplicando esta clase!!"... si me voy al directorio donde Netbeans crea las clases siempre encuentro la clase "Tester.class" que ya no debería estar ahí...

¿es un error con el que tengo que vivir toda la vida?
¿que puedo hacer para borrar esa clase si netbeans no me muestra la Tester.java para poder eliminarla desde netbeans?

PD: disculpen que mi pregunta sea tan extensa, pero me gusta ser muy explicativo.

Gracias por la atención prestada :)
Suerte a todos!