public void run() { for (int i = 0; i < partie.getTailleShip().length; i++) { try { joueur.sendCommande("SHIP/" + partie.getTailleShip()[i] + "/"); joueur.setLastShip(partie.getTailleShip()[i]); synchronized (this) { this.wait(); } // placement de Ship recu de la part du client // on passe au Ship suivant } catch (IOException e) { // retenter l'envoi de la cmd en cas d'echec i--; continue; } catch (InterruptedException e) { } } // ajout du Joueur dans le tableau de priorite (pour savoir dans quel ordre jouent les joueurs) synchronized (partie) { partie.getPriorite().add(joueur); } try { joueur.sendCommande( "HEYLISTEN/(serveur) Sous-marins en place, en attente des autres joueurs."); joueur.sendCommande("ALLYOURBASE/"); } catch (IOException e) { } if (partie.getGrille().estInitialisee()) { System.out.println( "[PLACEMENT J" + joueur.getNumeroClient() + "] Grille initialisee, debut de la partie"); synchronized (partie) { partie.notify(); } } System.out.println("[PLACEMENT J" + joueur.getNumeroClient() + "] Fin thread " + getName()); }
public void actionPerformed(ActionEvent e) { if (e.getSource() == butConnect) { try { boolean ok = serverConnection(); if (ok) { setInitPanel(); } else { System.out.println("Le pseudo existe déjà, choisissez en un autre."); } } catch (IOException err) { System.err.println( "Problème de connection avec le serveur: " + err.getMessage() + "\n.Arrêt..."); System.exit(1); } } else if (e.getSource() == butListParty) { try { // envoyer requête LIST PARTY oos.writeInt(JungleServer.REQ_LISTPARTY); oos.flush(); // recevoir résultat et l'afficher dans textInfoInit System.out.println("flush"); boolean pret = ois.readBoolean(); System.out.println(pret); if (pret) { String nomParty = (String) ois.readObject(); System.out.println("apres read"); textInfoInit.append(nomParty + " "); } } catch (ClassNotFoundException err) { } catch (IOException err) { System.err.println( "Problème de connection avec le serveur: " + err.getMessage() + "\n.Arrêt..."); System.exit(1); } } else if (e.getSource() == butCreateParty) { try { boolean ok; // envoyer requête CREATE PARTY (paramètres : nom partie et nb joueurs nécessaires) oos.writeInt(JungleServer.REQ_CREATEPARTY); oos.writeObject(textCreate.getText()); int nbJoueurs = (Integer) spinNbPlayer.getValue(); oos.writeInt(nbJoueurs); oos.flush(); // recevoir résultat -> ok ok = ois.readBoolean(); System.out.println(ok); // si ok == true : if (ok) { // mettre le panneau party au centre setPartyPanel(); // afficher un message dans textInfoParty comme quoi il faut attendre le début de partie textInfoParty.append("Attendre le début de la partie"); // créer un ThreadClient et lancer son exécution ThreadClient threadClient = new ThreadClient(this); threadClient.start(); } } catch (IOException err) { System.err.println( "probleme de connection serveur : " + err.getMessage() + "\n.Aborting..."); System.exit(1); } } else if (e.getSource() == butJoinParty) { try { int idPlayer; // envoyer requête JOIN PARTY (paramètres : numero partie) oos.writeInt(JungleServer.REQ_JOINPARTY); oos.flush(); System.out.println("requete envoyée"); int numPartie = Integer.parseInt(textJoin.getText()); oos.writeInt(numPartie); oos.flush(); System.out.println("numPartie flushé"); // recevoir résultat -> idPlayer idPlayer = ois.readInt(); System.out.println("idplayer reçu : " + idPlayer); // si idPlayer >= 1 : if (idPlayer >= 1) { // mettre le panneau party au centre setPartyPanel(); // afficher un message dans textInfoParty comme quoi il faut attendre le début de partie textInfoParty.append("Attendre la début de la partie"); // créer un ThreadClient et lancer son exécution System.out.println("avant démarrage du thread"); ThreadClient threadClient = new ThreadClient(this); threadClient.start(); System.out.println("Apres le thread"); } } catch (IOException err) { System.err.println("Problème de connection serveur: " + err.getMessage() + "\n.Arrêt..."); System.exit(1); } } else if (e.getSource() == butPlay) { try { // envoyer requête PLAY (paramètre : contenu de textPlay) oos.writeInt(JungleServer.REQ_PLAY); oos.writeObject(textPlay.getText()); oos.flush(); orderSent = true; butPlay.setEnabled(false); textPlay.setEnabled(false); // mettre orderSent à true // bloquer le bouton play et le textfiled associé } catch (IOException err) { System.err.println("Problème connection serveur: " + err.getMessage() + "\n.Arrêt..."); System.exit(1); } } else if (e.getSource() == butQuit) { try { oos.close(); ois.close(); setConnectionPanel(); comm = null; } catch (IOException err) { System.err.println("Problème connection serveur: " + err.getMessage() + "\n.Arrêt..."); System.exit(1); } } }
public ShipPlacement(ThreadClient j, Partie p) { partie = p; joueur = j; setName( "ShipPlacement du Joueur no " + joueur.getNumeroClient() + " : " + joueur.getNomClient()); }