All pastes #442207 Raw Edit

ClientMine

public java v1 · immutable
·published 2007-04-16 02:18 UTC
rendered paste body
import java.awt.BorderLayout;import java.awt.Color;import java.awt.Container;import java.awt.FlowLayout;import java.awt.GridLayout;import java.awt.Menu;import java.awt.MenuBar;import java.awt.MenuItem;import java.awt.event.ActionEvent;import java.awt.event.ActionListener;import java.io.BufferedReader;import java.io.BufferedWriter;import java.io.IOException;import java.io.InputStreamReader;import java.io.ObjectInputStream;import java.io.OutputStreamWriter;import java.io.PrintWriter;import java.net.ConnectException;import java.net.Socket;import java.net.UnknownHostException;import java.util.ArrayList;import javax.swing.ImageIcon;import javax.swing.JButton;import javax.swing.JFrame;import javax.swing.JLabel;import javax.swing.JOptionPane;import javax.swing.JPanel;import java.io.StreamTokenizer;class GrilleConnect4 extends JFrame{	private static final long serialVersionUID = 3151245389790032908L;	static ArrayList<Partie> lesParties;	static boolean partieEnCours=true;	private static int nbColonnes=7, nbLignes=6;	private static int[] hauteurCol;	private static Joueur unJoueurClient;	private static Joueur unAutreJoueur;	private static ImageIcon tablJeton[][]= new ImageIcon[6][7];	private static PrintWriter pw;	private static BufferedReader br;	private static Socket soc;	private static JButton btnCol[]= new JButton[nbColonnes];	private static Joueur joueursTours[]=new Joueur[2];	//Creation des composants de la fenetre	private Container cont;	private MenuBar mnuBar;	//Creation des panneaux	private JPanel panBtNom;	private JPanel panBtn; 	private JPanel panNomClrJeton;	private  JLabel nomAutreJoueur,precisionJoueur;	private static JLabel lblJouer = new JLabel(); 	private JPanel panJeton;	private static boolean tourAJouer=true;	//Creation des l'imageIcon pour les jetons et des chemins	private ImageIcon imgJeton;	static final String jetonBlanc = "JetonDefaut.gif";	static final String flecheBtn = "Fleche.gif";	//La liste des label qui ont des images en background	private static JLabel[][] lblGridLayOut;	public GrilleConnect4(){		//Titre ajouter dans le main, Titre + nom du joueur		setBounds(150, 150, 600, 500);		setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);		cont = getContentPane();		lblJouer.setAlignmentY(CENTER_ALIGNMENT);		mnuBar = new MenuBar();		mnuBar.add(new Menu("Fichier"));		mnuBar.add(new Menu("?"));		//		(mnuBar.getMenu(0)).add(new MenuItem("Exit"));		(mnuBar.getMenu(0)).getItem(0).addActionListener(new ClicExit());		//		(mnuBar.getMenu(1)).add(new MenuItem("Statistique"));		(mnuBar.getMenu(1)).getItem(0).addActionListener(new ClicStatistique());		setMenuBar(mnuBar);		precisionJoueur= new JLabel();		nomAutreJoueur= new JLabel();		cont.setLayout(new BorderLayout());		lblGridLayOut = new JLabel[nbLignes][nbColonnes];		hauteurCol = new int[nbColonnes];		panBtNom = new JPanel (new GridLayout(2,1));		panBtn = new JPanel(new GridLayout(1,nbColonnes,2,2));		panBtn.setBackground(Color.white);		panNomClrJeton = new JPanel (new FlowLayout());		panNomClrJeton.setBackground(Color.white);		panNomClrJeton.add(precisionJoueur);		panNomClrJeton.add(nomAutreJoueur);		nomAutreJoueur.setForeground(joueursTours[1].getJetonJoueur().getCouleurJeton());		nomAutreJoueur.setText(" Contre " +unAutreJoueur.getNomJoueur());		precisionJoueur.setForeground(joueursTours[0].getJetonJoueur().getCouleurJeton());		precisionJoueur.setText("Vous jouez avec les jetons de cette couleur !");		panJeton = new JPanel(new GridLayout(nbLignes,nbColonnes,2,2));		panJeton.setBackground(Color.white);		// Ajouts des boutons, au nombre des colonnes		int k=0;		for (JButton i  :btnCol) {			i = new JButton(new ImageIcon(flecheBtn));			i.setName(String.valueOf(k));			i.setSize(70, 70);			i.setBackground(Color.white);			i.addActionListener(new ClicBouton());			btnCol[k]=i;			panBtn.add(i);			k++;		}		panBtNom.setAlignmentX(CENTER_ALIGNMENT);		panBtNom.add(panNomClrJeton);		panBtNom.add(panBtn);		cont.add(panBtNom,BorderLayout.NORTH);		// Ajouts des jetons defauts dans le formulaire		for(int x=0;x<nbLignes;x++) {			for(int y=0;y<nbColonnes;y++) {				imgJeton = new ImageIcon(jetonBlanc);				JLabel lblJeton = new JLabel(imgJeton);				lblGridLayOut[x][y] = lblJeton;				panJeton.add(lblJeton);			}		}		ReinitialiseP4();		cont.add(panJeton,BorderLayout.CENTER);		cont.add(lblJouer,BorderLayout.SOUTH);	}//ICI COMMENCE LE DEBUT	public static void main(String[] args) {		ObjectInputStream ois;		try{// CRÉATION DU SOCKET ET CE QUI VA AVEC !			soc = new Socket("localHost", 3000);			pw = new PrintWriter(new BufferedWriter(new OutputStreamWriter(soc.getOutputStream())), true);			br = new BufferedReader(new InputStreamReader(soc.getInputStream( ) ) );			//	ois= new ObjectInputStream(soc.getInputStream());			//ICI, LE MEC, (ou la mecque) ENTRE SON NOM			unJoueurClient = new Joueur(JOptionPane.showInputDialog("Veuillez entrer votre nom avant de debuter la partie "));			pw.println(unJoueurClient.getNomJoueur());// QUI EST ENVOYER AU DIEU-SERVEUR			unAutreJoueur = new Joueur(br.readLine());// QUI LUI RETOURNE UN NOOB ADVERSAIRE		// ICI C'EST LE CODE MAUDIT QUI DOIT, normalement,			// PRENDRE UN INTEGER DU SERVEUR, CET INTEGER SERA LE NO DU JOUEUR, SI 1 sa 			//VEUT DIRE QUIL EST PREMIER, si 2 DEUXIEME, SI 3 C'est que y'a un probleme			System.out.println("Passe 5");			int noJoueur;			noJoueur =Integer.parseInt(br.readLine());			unJoueurClient.setNoJoueur(noJoueur);			System.out.println("Passe 6");						// EN GROS SA FAUT JARRANGE,DONC OSEF			if (tourAJouer){				unJoueurClient.setJetonJoueur(new Jeton("JetonRouge.gif",Color.red));				unAutreJoueur.setJetonJoueur(new Jeton("JetonBleu.gif",Color.blue));				joueursTours[0]=unJoueurClient;				joueursTours[1]=unAutreJoueur;				//	etatDesBtn(false);			}else{				unJoueurClient.setJetonJoueur(new Jeton("JetonBleu.gif",Color.blue));				unAutreJoueur.setJetonJoueur(new Jeton("JetonRouge.gif",Color.red));				joueursTours[0]=unAutreJoueur;				joueursTours[1]=unJoueurClient;				JOptionPane.showMessageDialog(null, "ABC");			}			//CREATION DU FORM			GrilleConnect4 GrilleDeJeu = new GrilleConnect4();			//PREND L'INTEGER ET DIT A QUI COMMENCER ! TADAM !			if (unJoueurClient.getNoJoueur() ==1){				tourAJouer=true;			}else{				tourAJouer=false;				etatDesBtn(false);				}			//MET LE NOM DU JOUEUR CURRENT EN HAUT, TRES IMPORTANT SINON LA PROF VA SE FUCKER			//AVEC DEUX FENETRE IDENTIQUE			GrilleDeJeu.setTitle("Connect 4 " + unJoueurClient.getNomJoueur());			//ABRACADABRA APPARAIT FENETRE DE JEU !			GrilleDeJeu.setVisible(true);			//MA PARTIE EN COURS, JE NE GERE PAS ENCORE LA FIN DUNE PARTIE...A suivre dans			//le prochain episode			while(partieEnCours){				rempliPanneau(Integer.parseInt(br.readLine()),false);				etatDesBtn(true);			}			//	lesParties=	(ArrayList<Partie>)ois.readObject();		}catch(UnknownHostException e){			JOptionPane.showMessageDialog(null,e.toString() +" Erreur du cote client");			System.exit(0);			/*	}catch(ClassNotFoundException e){			JOptionPane.showMessageDialog(null,e.toString() +" Erreur du cote client");			System.exit(0);*/		}catch(ConnectException e){			JOptionPane.showMessageDialog(null, "Le serveur est déjà occupé avec deux joueurs.");			System.exit(0);		}catch (IOException e){			JOptionPane.showMessageDialog(null,e.toString() +" Erreur du cote client");			System.exit(0);		}	}//	Mes évènements :  Clic dans le menu, clic sur les boutons du tableau.	public class ClicExit implements ActionListener {		public void actionPerformed(ActionEvent e)  {			try{				partieEnCours=false;				soc.close();				System.exit(0);			}catch (IOException err){				JOptionPane.showMessageDialog(null, "Erreur du cote client, lors de la fermeture");				System.exit(0);			}		}	}	public class ClicStatistique implements ActionListener {		public void actionPerformed(ActionEvent e){			//Requete au serveur pour les statistiques de Partie			String champs="";			for (Partie p : lesParties){				champs+="Premier joueur : " + p.getJoueurUn()+ ", second joueur : " + p.getJoueurDeux()+ ", le gagnant : "  +p.getLeGagnant() +", le nombre de coup joué : " + p.getNombreCoupJouer() + "\n";			}			JOptionPane.showMessageDialog(null,	"Voici les parties joués depuis le dernier démarrage du serveur :" + "\n" + champs);		}	}	public class ClicBouton implements ActionListener {		public void actionPerformed(ActionEvent e){				JButton sender = (JButton)e.getSource();			int colClicker = Integer.parseInt(sender.getName());			rempliPanneau(colClicker,true);		}	}	public static void rempliPanneau(int indexClic,boolean envoi){		if(tourAJouer){			//(lblGridLayOut[hauteurCol[indexClic]][indexClic]).setIcon(new ImageIcon("JetonRouge.gif"));			(lblGridLayOut[hauteurCol[indexClic]][indexClic]).setIcon(	joueursTours[0].getJetonJoueur().getImgJeton());			tablJeton[hauteurCol[indexClic]][indexClic]=(	joueursTours[0].getJetonJoueur().getImgJeton());			tourAJouer=false;				lblJouer.setForeground(joueursTours[1].getJetonJoueur().getCouleurJeton());			lblJouer.setText("C'est a "+joueursTours[1].getNomJoueur()+" jouer !");		}else{			//(lblGridLayOut[hauteurCol[indexClic]][indexClic]).setIcon(new ImageIcon("JetonBleu.gif"));			(lblGridLayOut[hauteurCol[indexClic]][indexClic]).setIcon(	joueursTours[1].getJetonJoueur().getImgJeton());			tablJeton[hauteurCol[indexClic]][indexClic]=(	joueursTours[1].getJetonJoueur().getImgJeton());			tourAJouer=true;			lblJouer.setForeground(joueursTours[0].getJetonJoueur().getCouleurJeton());			lblJouer.setText("C'est a "+joueursTours[0].getNomJoueur()+" jouer !");			//lblJouer.setText("C'est a ****MOI****, de jouer");		}		partieEnCours=continuerPartie();		hauteurCol[indexClic]--;		if(hauteurCol[indexClic]<0){			btnCol[indexClic].setEnabled(false);		}		if (envoi){			etatDesBtn(false);			pw.println(Integer.toString(indexClic));			}	}	public static void etatDesBtn(boolean btnEtat){		for(int i=0;i<nbColonnes;i++){			btnCol[i].setVisible(btnEtat);		}	}	public static boolean continuerPartie(){		return true;	}	private void ReinitialiseP4(){		for(int x=0;x<nbLignes;x++) {			for(int y=0;y<nbColonnes;y++) {				lblGridLayOut[x][y].setIcon(new ImageIcon(jetonBlanc));				}		}		for(int x=0;x<nbColonnes;x++){			hauteurCol[x] = nbLignes-1;		}	}}