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:
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
){ PingPong daniel = new PingPong();
isaac.add(daniel);
isaac.setSize(420, 250);
isaac.setDefaultCloseOperation(3);
isaac.setVisible(true);
daniel.motor.start();
}
arriba+=18;
arriba-=18;
if(arriba<10)
arriba=10;
if(arriba>162)
arriba=162;
abajo=arriba + 40;
repaint();
}
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);
}
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();
}
}
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.htmlLa 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.