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