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

java error - pelota que rebota - client server

Estas en el tema de java error - pelota que rebota - client server en el foro de Java en Foros del Web. hola a todos, estoy tratando de hacer un ejercicio en java, se trata de una animacion de una pelota que pasa de una ventana server ...
  #1 (permalink)  
Antiguo 28/05/2016, 20:08
 
Fecha de Ingreso: enero-2011
Mensajes: 24
Antigüedad: 13 años, 3 meses
Puntos: 0
java error - pelota que rebota - client server

hola a todos, estoy tratando de hacer un ejercicio en java, se trata de una animacion de una pelota que pasa de una ventana server a una ventana client y va rebotando segun el lado de la ventana que toca, el problema es que inicia bien desde la ventana del server, respeta el rebote en los angulos que toca (izquierda,arriba,abajo) en la ventana del server nose usa el lado derecho, luego cuando pasa a la ventana del client respeta los rebotes en los angulos de arriba y abajo pero cuando llega al lado derecho (del client) la pelota desaparece y loq me sirve es que retorne con el rebote al server y siga rebotando.

dejo una imagen, en este ejemplo por el momento funciona los puntos 1,2,3,4 y la pelota luego desaparece (tendria que hacer 5,6,7,8)

(en otro ejemplo funcionarian los puntos 8,7,6,5 y la pelota luego desaparece, tendria que hacer 4,3,2,1)

en ambos casos nunca regresa al server.....

alguna idea o sugerencia??




aqui esta el codigo del client PelotaNetClient.java, el codigo del server esta en pastebin porque supera el limite de caracteres del post

PelotaNetServer.java
http://pastebin.com/EUiw9XTV

PelotaNetClient.java
Código Java:
Ver original
  1. package pelotaCS;
  2.  
  3. // creo class y su constructor
  4. import pelotaCS.PelotaNetServer;
  5. import java.awt.*;
  6. import java.awt.event.*;
  7. import java.io.*;
  8. import java.net.*;
  9. import javax.swing.*;
  10.  
  11. public class PelotaNetClient extends JFrame {
  12.     private Socket conexion = null;
  13.     private DataOutputStream out = null;
  14.     private DataInputStream input = null;
  15.     public PelotaNetClient(){
  16.         super("Pelota - Client");
  17.         this.setSize(500,400);
  18.        
  19.        // this.setLocationRelativeTo(null);
  20.         this.setLocation(600,40);
  21.         this.setDefaultCloseOperation(EXIT_ON_CLOSE);
  22.         conectar();  // me conecto al server
  23.         this.setVisible(true);
  24.     }//fin constructor
  25.    
  26. // METODO para la conexion y inicio de la animacion.    
  27.     public void conectar(){
  28.         try{ // me conecto al server
  29.             conexion = new Socket("localhost",6789);
  30.             //obtengo el stream del input del server y doy un output al server
  31.             out = new DataOutputStream(conexion.getOutputStream());
  32.             input = new DataInputStream(conexion.getInputStream());
  33.         }catch(Exception e){
  34.             JOptionPane.showMessageDialog(null,e.toString());
  35.             System.exit(-1);
  36.         }
  37.         Container contenedor = this.getContentPane();
  38.         PanelAnimacionClient pan = new PanelAnimacionClient(this,contenedor.getSize());
  39.         contenedor.add(pan);
  40.         }
  41.  
  42. class PanelAnimacionClient extends JPanel implements ActionListener{
  43.     private PelotaNetClient ventana ;
  44.     private Dimension dimension;
  45.     private Image bufferVirtuale;
  46.     private Graphics offScreen;
  47.     private Timer tim = null;
  48.     private int xPelota = 0;
  49.     private int yPelota = 0;
  50.     private int diametroPelota = 40;
  51.     private int movimiento = 3;
  52.     private int timerDelay = 10;
  53.     private boolean derecha,abajo,pelotaPresente,llegadaComunicada ;
  54.  
  55.     public PanelAnimacionClient(PelotaNetClient ventana,Dimension dimension){    
  56.         super();
  57.         this.ventana = ventana;
  58.         this.setSize(dimension);
  59.         derecha = true;
  60.         abajo = true;
  61.         pelotaPresente = false;
  62.         llegadaComunicada = false;
  63.         tim = new Timer(timerDelay,this);
  64.         tim.start();
  65.     }
  66.     public void update(Graphics g){
  67.         paint(g);
  68.     }
  69.     public void paint(Graphics g){
  70.         super.paint(g);
  71.         bufferVirtuale = createImage(getWidth(),getHeight());
  72.         offScreen = bufferVirtuale.getGraphics();
  73.         Graphics2D screen =(Graphics2D)g;
  74.         offScreen.setColor(new Color(254,18,22));
  75.         if (pelotaPresente){
  76.             offScreen.fillOval(xPelota,yPelota,diametroPelota,diametroPelota);
  77.         }
  78.         screen.drawImage(bufferVirtuale,0,0,this);
  79.         offScreen.dispose();
  80.     }
  81.     public void actionPerformed(ActionEvent e){
  82.         if (pelotaPresente){
  83.             if (abajo){
  84.                
  85.                 if (yPelota > (this.getHeight()-diametroPelota)){
  86.                     abajo = false;
  87.                     yPelota -= movimiento;// borde alto
  88.                 }else{
  89.                     yPelota += movimiento;
  90.                 }
  91.             }else{        
  92.                 if (yPelota <=0){ // borde abajo
  93.                     abajo = true;
  94.                     yPelota += movimiento;    
  95.                 }else{
  96.                     yPelota -= movimiento;// borde abajo
  97.                 }
  98.             }
  99.             if (derecha){
  100.                 if((!llegadaComunicada)&&(xPelota <=(this.getWidth()-diametroPelota))){
  101.                     try{
  102.                         ventana.getOutput().writeBoolean(abajo);
  103.                         ventana.getOutput().writeInt(yPelota);
  104.                         llegadaComunicada = true;
  105.                     }catch( Exception ecc){
  106.                     JOptionPane.showMessageDialog(null,ecc.toString());
  107.                     System.exit(-1);
  108.                 }
  109.             }else{
  110.                 xPelota += movimiento;
  111.                     if (xPelota < this.getWidth()){
  112.                     pelotaPresente = false;
  113.                     llegadaComunicada = false;
  114.                     }
  115.                 }
  116.             }else{                          // la pelota esta llendo a la izquierda
  117.                 if (xPelota < 0){           // fin ventana izquierda
  118.                     derecha = true;          // cambio direccion pasa de derecha a izquierda
  119.                     xPelota -= movimiento;
  120.                 }else{
  121.                     xPelota += movimiento;
  122.                 }
  123.             }
  124.         }else{
  125.             boolean direccion = true;
  126.             int y=0;
  127.             try{
  128.                 direccion = ventana.getInput().readBoolean();
  129.                 y = ventana.getInput().readInt();// espero que llegue la pelota
  130.                 abajo = direccion; //direccion de ingreso
  131.                 derecha = false; // se mueve hacia la izquierda
  132.                 yPelota = y;  // coordinadas iniciales de la pelota
  133.                 xPelota = 0;
  134.                 pelotaPresente = true;
  135.                 }
  136.             catch( Exception ecc){
  137.                 JOptionPane.showMessageDialog(null,ecc.toString());
  138.                     System.exit(-1);
  139.                 }
  140.             }
  141.         repaint();
  142.         }
  143.     }
  144.  
  145.     public DataInputStream getInput(){
  146.         return input;
  147.     }
  148.     public DataOutputStream getOutput(){
  149.         return out;
  150.     }
  151. }  
  152.     //fin de la class palota net client

execPelotaServer.java
http://pastebin.com/sChkag1c

execPelotaClient.java
http://pastebin.com/ft2EbAui

primero hago el run del file execPelotaServer.java y luego del execPelotaClient.java

gracias anticipadas.
salu2

Última edición por italo_pm; 28/05/2016 a las 22:09

Etiquetas: server
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 15:05.