domingo, 24 de noviembre de 2013

Cliente V2.0



import java.awt.Color;
import java.awt.Dimension;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.io.File;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.net.InetAddress;
import java.net.Socket;
import java.util.ArrayList;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.ImageIcon;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.Timer;
import java.net.URL;
import javax.swing.*;
import javax.sound.sampled.*;
/**
 *
 * @author Eduardo Yair-
 */
public class Cliente extends JLabel implements Juego{
    JFrame frm=new JFrame("Speed Racer GT");
    Socket sokete;
    ArrayList<Enemigo> racerx=new ArrayList<Enemigo>();
    ArrayList<Auto> speedr=new ArrayList<Auto>();
    Timer t;
    ObjectInputStream entradaOBJ;
    ObjectOutputStream objSaliente;
    Image track=new ImageIcon(getClass().getResource("media/fondo.png")).getImage();
    Image autoi=new ImageIcon(getClass().getResource("media/carpot.png")).getImage();
    Image enemyi=new ImageIcon(getClass().getResource("media/enemy.png")).getImage();
    Image enemyj=new ImageIcon(getClass().getResource("media/enemy1.png")).getImage();
    Image enemyk=new ImageIcon(getClass().getResource("media/enemy2.png")).getImage();
    Image enemyl=new ImageIcon(getClass().getResource("media/ship.png")).getImage();

    int pos=0;
    public static void main(String args[]) throws Exception{
        new Cliente();
    }
    public void bkgrndmsk()throws Exception {
        URL url = new URL(  "https://dl.dropboxusercontent.com/u/96424843/hocus.wav");      
        //String strFilename = "media/hocus.wav";
        //File sound=new File(strFilename);
        //InputStream in = ClassLoader.getSystemResourceAsStream("media/hocus.wav");
        //URL urlToClip = this.getClass().getResource("media/hocus.wav");
        Clip clip = AudioSystem.getClip();
        // getAudioInputStream() also accepts a File or InputStream
        AudioInputStream ais = AudioSystem.getAudioInputStream(url);
        clip.open(ais);
        clip.loop(Clip.LOOP_CONTINUOUSLY);
        SwingUtilities.invokeLater(new Runnable() {
            public void run() {
                JOptionPane.showMessageDialog(null, "La música se terminara cuando acabe el juego");
            }
        });
    }
    public Cliente() throws Exception{
        super();
        bkgrndmsk();
        conectar();
        frm.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        Dimension pantalla=Toolkit.getDefaultToolkit().getScreenSize();
        frm.setSize(pantalla);
        frm.setUndecorated(true);
        frm.add(this);
        frm.setVisible(true);
        this.setFocusable(true);
        this.addKeyListener(error85);
        setBackground(Color.BLACK);
        t=new Timer(5,updater);
       
        t.start();
    }
    public void dibujarAuto(Auto c,Graphics2D g2d){
        if(!c.perder){
            g2d.drawImage(autoi,c.posx,c.posy,c.ancho,c.alto , null);
        }
    }
     public void paint(Graphics g){
        super.paint(g);
        Graphics2D g2d=(Graphics2D)g;
        g2d.setColor(Color.white);
        g2d.drawImage(track, 0, pos,frm.getWidth() ,frm.getHeight() , null);
        g2d.drawImage(track, 0, 0-frm.getHeight()+pos,frm.getWidth() , frm.getHeight() , null);
        for(Auto a:speedr){
            dibujarAuto(a,g2d);
        }
        dibujarEnemigos(racerx,g2d);
    }
    public void dibujarEnemigos(ArrayList<Enemigo> enem,Graphics2D g2d){
        for(int i=0;i<enem.size();i++){
            int r=i%3;
            if(r==0){
                g2d.drawImage(enemyi,enem.get(i).posx,enem.get(i).posy,enem.get(i).ancho,enem.get(i).alto , null);
            }else if(r==1){
                g2d.drawImage(enemyj,enem.get(i).posx,enem.get(i).posy,enem.get(i).ancho,enem.get(i).alto , null);
            }else if(Math.random()*2<=4){
                g2d.drawImage(enemyk,enem.get(i).posx,enem.get(i).posy,enem.get(i).ancho,enem.get(i).alto , null);
            }else if(Math.random()*2>=4){
                g2d.drawImage(enemyl,enem.get(i).posx,enem.get(i).posy,enem.get(i).ancho,enem.get(i).alto , null);}
        }
    }
    public void recibirEnemigos(){
        try{
            //s.setSoTimeout(5);
            Mensaje mensaje=(Mensaje)entradaOBJ.readObject();
           
            racerx=mensaje.enemigos;
            speedr=mensaje.autos;
            pos=mensaje.fondo;
            //imprimirEnemigos();
        }catch(IOException e ){
            //e.printStackTrace();
            //System.exit(0);
        }
        catch(Exception e ){
            //e.printStackTrace();
        }
    }
    @Override
    public void conectar() {
        try{
            //System.out.println("Estableciendo Conexión");
            InetAddress ad=InetAddress.getByName(JOptionPane.showInputDialog("IP (Server): "));
            sokete=new Socket(ad,Integer.parseInt(JOptionPane.showInputDialog("Puerto: ")));
            entradaOBJ=new ObjectInputStream(sokete.getInputStream());
            objSaliente=new ObjectOutputStream(sokete.getOutputStream());
        }catch(Exception e){
            //e.printStackTrace();
        }
    }
    public void mover(Movimiento m) {
        try{
            objSaliente.writeObject(m);
            //ois.readInt();
            //Thread.sleep(200);
            objSaliente.flush();
            //sokete.getOutputStream().flush();
            //ooo.reset();
           
        }catch(Exception e){
            //e.printStackTrace();
        }
    }

    @Override
    public void actualizar() {
            recibirEnemigos();
            repaint();
    }

    @Override
    public void ganar() {
    }

    @Override
    public void perder() {
        throw new UnsupportedOperationException("Not supported yet.");
    }
    ActionListener updater=new ActionListener(){
        public void actionPerformed(ActionEvent ae) {
            actualizar();
        }
       
    };
    KeyListener error85=new KeyListener(){
        public void keyTyped(KeyEvent ke) {
        }
        public void keyPressed(KeyEvent ke) {
            if(ke.getKeyCode()==KeyEvent.VK_ESCAPE){
                System.exit(0);
            }
            Movimiento m=new Movimiento(ke,true);
            mover(m);
        }
        public void keyReleased(KeyEvent ke) {
            Movimiento m=new Movimiento(ke,false);
            mover(m);
        }
    };
}

No hay comentarios:

Publicar un comentario