Jeu Client/Serveur A l'aide

Jeu Client/Serveur A l'aide - Java - Programmation

Marsh Posté le 13-05-2005 à 17:13:39    

Bonjour à tous,  
voila je développe actuellement un jeu en java
il se joue à deux, un client et un serveur.
Le problème c'est que je lance un processus chez le Client pour qu'il envoie des messages au serveur
mais j'ai juste besoin d'envoyer des messages à certains moments, quand le client appui sur des bouton
ces boutons ne sont pas dans la meme classe que la connection.
Mais une fois mon processus lancé chez le client j'ai une boucle while et j'arrive à une impasse,  
soit il se déconnecte du serveur quand je sors de la boucle
soit il ne fait pas attention aux boutons sur lesquels je clik parce qu'il est bloqué dans sa boucle
 
je voudrais savoir en fait comment je pourrais mettre mon processus en pause et le reprendre seulement quand je clik
ci dessous mon prog client  
la méthode envoiMessage() est celle qui devrait normalement réactiver le processus
 
t java.awt.*;
import java.awt.event.*;
import java.net.*;
import java.io.*;
 
public class Client extends Frame implements Runnable, ActionListener  
{
 boolean connecte = false;
 public boolean ended = false;
 
 String leTexte = "";
 int portServeur;
    String adresseServeur;
    Thread processus=null;
    Label conn=new Label("Cliquez pour connection" );
    Socket sk;
    BufferedReader depuisServeur;
    PrintWriter versServeur;
    Panel p=new Panel();
     
    public Client(String adresse, int port)  
    {
     portServeur=port;
        adresseServeur=adresse;
         
        //création de l'interface
          p.setBackground(Color.white);
          add(BorderLayout.CENTER,p);
          p.setLayout(new GridLayout(2,1));
          p.add(conn);
          conn.setAlignment(Label.CENTER);
          Panel p1=new Panel();
          p.add(p1);
          Button b=new Button("Connexion" );
          p1.add(b);
          b.addActionListener(this);
          pack();
       
    }//Client()
     
    public void connect()  
    {
     try  
     {
         sk=new Socket(adresseServeur,portServeur);
            depuisServeur=new BufferedReader(new InputStreamReader(sk.getInputStream()));
            versServeur=new PrintWriter(new OutputStreamWriter(sk.getOutputStream()),true);
        }  
        catch (Exception e) {}  
    }//connect()
     
    public void disconnect()  
    {
     try  
     {
         sk.close();
        }  
        catch (IOException e) {}
    }//disconnect()
     
    public void run()  
    {
     boolean fini=false;
        try  
        {
            String ligne;
            String rep;
             
            connect();
             
            while(!fini)
            {            
             ligne=depuisServeur.readLine();
             System.out.println("OK" );
             System.out.println(leTexte);
             
             if(ligne.equals("connecte" ))  
             {
              setVisible(false);
              versServeur.println("OK" );
             }
             if(ligne.equals("OK" ))
             {
              versServeur.println(leTexte);
             }
            }
             
        }  
        catch (IOException e)  
        {
         conn.setText("Connexion impossible." );
        }  
        finally  
        {
         processus=null;
        }
         
    }//run()
     
    public void actionPerformed(ActionEvent e)  
    {              
     //processus d'attente des messages
        processus = new Thread(this);
        processus.start();
             
    }//actionPerformed()
 
    public Client(String adresse, String port)  
    {
     System.out.println("Chargement en cours..." );
        String adr="localhost";
        if (adresse!=null) adr=adresse;
         
        int p=2201;
        if (port != null)  
        {
         try  
         {
             p=Integer.parseInt(port);
            }
         catch (Exception e) {p=2201;}
        }  
        Client cli=new Client(adr,p);
        cli.setTitle("Connexion" );
        cli.setVisible(true);
    }//Client()
     
    public void envoiMessage(String telTexte)
    {
        String ligne ="";
        leTexte = telTexte;
        System.out.println(leTexte);
    }//envoiMessage()
 
}//class Client

Reply

Marsh Posté le 13-05-2005 à 17:13:39   

Reply

Marsh Posté le 13-05-2005 à 17:45:57    

En fait je crois que je vais simplifier ma question par ce que la c un peu embrouiller
 
Y'a t-il une méthode pour mettre en pause un Thread et une autre pour le remettre en route??
 
Merci d'avance

Reply

Marsh Posté le 13-05-2005 à 23:22:19    

Je ne sais pas si ça peut t'aider, mais j'ai fait un jeu (de go) avec client/serveur et ce que j'ai fait c'est un timer qui envoit toutes les secondes un message au serveur et recoit une reponse en retour. J'ai definit une constante pour les messages non significatifs et qui est le message par defaut.Ca te permet de faire ce que tu veux entre deux tops du timer. Tu peut peut-etre essayer de l'adapter à ton problème...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed