Foros del Web » Programación para mayores de 30 ;) » Java »

Ayuda en programación de Wireless Toolkit 2.5.1

Estas en el tema de Ayuda en programación de Wireless Toolkit 2.5.1 en el foro de Java en Foros del Web. Buenas amigos, soy nuevo en esta gran comunidad. Mi problema es el siguiente: Tengo una aplicación en Wireless Toolkit 2.5.1 en el cual tengo una ...
  #1 (permalink)  
Antiguo 16/02/2011, 23:58
 
Fecha de Ingreso: enero-2011
Mensajes: 2
Antigüedad: 13 años, 3 meses
Puntos: 0
Ayuda en programación de Wireless Toolkit 2.5.1

Buenas amigos, soy nuevo en esta gran comunidad.
Mi problema es el siguiente:
Tengo una aplicación en Wireless Toolkit 2.5.1 en el cual tengo una bola manual(de color verde, la cual manipulo con las flechas del teclado) y un player (bola automática de color celeste, la cual se mueve de izquierda a derecha y viceversa) y quisiera que me ayuden en la programación de tal manera que la bola manual al mínimo roce con el player se produzca un efecto de eclipse(que se pinte de color negro el fondo de pantalla), sólo en el instante del choque.

PD: En el siguiente archivo, lo que NO QUIERO es que me salga el efecto de eclipse cuando la bola manual se encuentre a cierta inclinación con respecto a la bola automática.

Espero me hayan entendido. Gracias de antemano por su ayuda.

Progreso normal
[URL=http://img254.imageshack.us/i/juego2b.jpg/][IMG]http://img254.imageshack.us/img254/755/juego2b.th.jpg[/IMG][/URL]

Roce normal
[URL=http://img717.imageshack.us/i/juego2a.jpg/][IMG]http://img717.imageshack.us/img717/7641/juego2a.th.jpg[/IMG][/URL]

He aquí mi problema
[URL=http://img401.imageshack.us/i/juego2p.jpg/][IMG]http://img401.imageshack.us/img401/5083/juego2p.th.jpg[/IMG][/URL]

Por favor miren la imagen y hay verán lo que no quiero



/*importamos las clases de java que utilizaremos en nuestro programa*/
import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;

/*aqui nuestro MIDlet, esta clase sera la primera en ser ejecutada cuando se
ejecute el programa*/
public class Juego2 extends MIDlet {
//metodo cuando el midlet arranca
public void startApp() {
//creamos un objeto SSCanvas (nuestra pantalla de juego)
SSCanvas screen=new SSCanvas();
//indicamos al dispositivo que screen (instancia de SSCanvas) será la nueva pantalla activa
Display.getDisplay(this).setCurrent(screen);
new Thread(screen).start(); //arrancamos el bucle (nuevo hilo de ejecución)
}

//metodo cuando el midlet entra en pausa
public void pauseApp() {
}

//metodo cuando el midlet es destruido
public void destroyApp(boolean unconditional) {
}
}


//esta clase es la encargada de hacer funcionar nuestra aplicación gráfica
class SSCanvas extends Canvas implements Runnable{
private Sprite ball;
private Sprite player;

//metodo constructor
public SSCanvas(){
//instanciamos (creamos) el objeto ball a partir de la clase Sprite
ball = new Sprite(getWidth()/2,getHeight()/2,20,20);
player = new Sprite(getWidth()/2,getHeight()/2,20,20);
}

public void run(){
while(true){
//actualizamos la posicion de la bola
ball.computeBallX(getWidth(),getHeight());
player.computePlayerX(getWidth(),getHeight());
player.computePlayerY(getWidth(),getHeight());



//forzamos el repintado de la pantalla
repaint();
serviceRepaints();
try {
Thread.sleep(5);
} catch (InterruptedException e) {
}
}
}
//metodo de la clase canvas para pintar en pantalla
public void paint(Graphics g){
//seleccionamos el color negro para pintar el fondo
if(player.collision(ball) )g.setColor(0,0,0);
else g.setColor(255,255,255);
//pintamos el fondo de pantalla con un rectangulo con el tamaño de
//la pantalla getWidth() y getHeight() es un método de la clase canvas
//que nos devuelve el ancho y alto de la pantalla

g.fillRect(0,0,getWidth(),getHeight());
//pintamos la bola en pantalla
ball.draw(g);
player.draw1(g);





}

/*sobrecarga de método para detectar cuando una tecla es soltada
por el usuario*/
public void keyReleased(int keyCode) {
int action=getGameAction(keyCode);
switch (action) {
case LEFT:
player.keyUp(player.LEFT);
break;
case RIGHT:
player.keyUp(player.RIGHT);
break;
case UP:
player.keyUp(player.UP);
break;
case DOWN:
player.keyUp(player.DOWN);
break;
case FIRE:
break;
}
}

//sobrecarga del método que detecta cuando una tecla es pulsada por el usuario
public void keyPressed(int keyCode) {
int action=getGameAction(keyCode);
switch (action) {
case LEFT:
player.keyPress(player.LEFT);
break;
case RIGHT:
player.keyPress(player.RIGHT);
break;
case UP:
player.keyPress(player.UP);
break;
case DOWN:
player.keyPress(player.DOWN);
break;
case FIRE:
break;
}
}
}

class Sprite{
//atributos privados
protected int x;
protected int y;
protected int width;
protected int height;
protected int incX,incY;
private boolean startX=false; //movimiento inicial en x=apagado
private boolean startY=false; //movimiento inicial en y=apagado


//declaracion de constantes
protected static final int LEFT = 1;
protected static final int RIGHT = 2;
protected static final int UP = 3;
protected static final int DOWN = 4;
protected static final int FIRE = 5;

//metodo constructor
public Sprite(int x,int y,int width,int height){
this.x=x;
this.y=y;
this.width=width;
this.height=height;
incX=1;
incY=1;
}


//metodo que actualiza la posición del sprite
public void computeBallX(int screenW, int screenH){
if(x <= 0)incX=1;
else if(x+width >= screenW)incX=-1;
x+=incX;
}

public void computeBallY(int screenW, int screenH){
if(y <= 0)incY=1;
else if(y+width >= screenH)incY=-1;
y+=incY;
}




//metodo que actualiza la posicion del sprite que controlamos por teclado
public void computePlayerX(int screenW, int screenH) {
if(x + incX > 0 && (x + incX) < (screenW - width)){
x+=incX;
if(startX==false)incX=0;

}
}
public void computePlayerY(int screenW, int screenH) {
if(y + incY > 0 && (y + incY) < (screenH - height)){
y+=incY;
if(startY==false)incY=0;

}
}





//metodo para detectar colisiones
public boolean collision(Sprite sp){
//comprobamos si el sprite 1 ha colisionado o
//superpuesto sobre el sprite 2
int mayor=x,menor=x;
int mayor2=y,menor2=y;
if(sp.x>mayor)mayor=sp.x;
if(sp.x<menor)menor=sp.x;
if(sp.y>mayor2)mayor2=sp.y;
if(sp.y<menor2)menor2=sp.y;
if (((mayor-menor)<(width/2+sp.width/2))&&((mayor2-menor2)<(height/2+sp.height/2)))return true;
else return false;

}


//metodo que actualiza la posicion del sprite

//metodo para detener el desplazamiento del sprite
public void keyUp(int keyCode) {
switch (keyCode) {
case LEFT:
startX=false;
break;
case RIGHT:
startX=false;
break;
case UP:
startY=false;
break;
case DOWN:
startY=false;
break;
}
}

//método para indicar la dirección del desplazamiento
public void keyPress(int keyCode) {
switch (keyCode) {
case LEFT:
incX=-1;
startX=false;
break;
case RIGHT:
incX=1;
startX=false;
break;
case UP:
incY=-1;
startY=false;
break;
case DOWN:
incY=1;
startY=false;
break;
case FIRE:
break;
}
}
//metodo que muestra en pantalla al sprite
public void draw(Graphics g){
g.setColor(x,255,255);
g.fillArc(x,y, width, height,0, 360);
}

public void draw1(Graphics g){
g.setColor(0,250,0);
g.fillArc(x,y,y/8, y/8,0, 360);
}


}
  #2 (permalink)  
Antiguo 17/02/2011, 01:06
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años
Puntos: 1284
Tema movido desde AJAX
__________________
Por favor:
No hagan preguntas de temas de foros en mensajes privados... no las respondo

Etiquetas: movil, programacion
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:20.