java - Game with server and multiple client, make sure only one game object is created -


i'm trying write poker server , client program, create game in server class , client class takes output , displays them. however, when ever this, there seem 2 game objects created, first player gets input consistent object shown in console, second player displays cards not shown in sysout method, , can not seem find created second game object.

server class:

 import java.io.bufferedreader;  import java.io.ioexception; import java.io.inputstreamreader; import java.io.printwriter; import java.net.inetaddress; import java.net.serversocket; import java.net.socket; import java.net.unknownhostexception; import java.util.arraylist; import java.util.hashset;  public class pokerserver {  /**  * port server listens on.  */ private static final int port = 9050; // keeps track of names private static arraylist<string> names = new arraylist<string>(); // broadcast messages private static arraylist<printwriter> writers = new arraylist<printwriter>(); private boolean bothplayersconnected = false;  /**  * appplication main method, listens on port , spawns  * handler threads.  */ public static void main(string[] args) throws exception {      system.out.println("the poker server running.");     serversocket listener = new serversocket(port);     try {         while (true) {             new gamethread(listener.accept()).start();         }     } {         listener.close();     } }  private static class gamethread extends thread {     private string name;     private socket socket;     private bufferedreader in;     private printwriter out;     private game game;      public gamethread(socket socket) {         this.socket = socket;     }      /**      * services thread's client repeatedly requesting screen name      * until unique 1 has been submitted, acknowledges name ,      * registers output stream client in global set,      * repeatedly gets inputs , broadcasts them.      */     public void run() {         try {             system.out.println("get part");             // create character streams socket.             in = new bufferedreader(new inputstreamreader(socket.getinputstream()));             out = new printwriter(socket.getoutputstream(), true);               // name of player             out.println("submitname");             name = in.readline();             names.add(name);              while(names.size()<2){                 out.println("message waiting opponent connect");             }              // successful name has been chosen, add             // socket's print writer set of writers             // client can receive broadcast messages.             // out.println("nameaccepted");             // writers.add(out);                  game = new game(names.get(0), names.get(1), 1000);                  game.dealtoplayers();                  out.println(names.get(0) + game.getplayer1().gethand()[0].transferstr());                 out.println(names.get(0) + game.getplayer1().gethand()[1].transferstr());                 out.println(names.get(1) + game.getplayer2().gethand()[0].transferstr());                 out.println(names.get(1) + game.getplayer2().gethand()[1].transferstr());                  // accept messages client , broadcast them.                 // ignore other clients cannot broadcasted to.                 while (true) {                     string input = in.readline();                     if (input == null) {                         return;                     } else if (input.startswith(names.get(0))) {                      }                     (printwriter writer : writers) {                         writer.println("message " + name + ": " + input);                     }                 }         } catch (ioexception e) {             system.out.println(e);         } {             // client going down! remove name , print             // writer sets, , close socket.             if (name != null) {                 names.remove(name);             }             if (out != null) {                 writers.remove(out);             }             try {                 socket.close();             } catch (ioexception e) {             }         }      }  }  } 

client class

import java.awt.borderlayout; import java.awt.color; import java.awt.dimension; import java.awt.gridlayout; import java.awt.event.actionevent;  import java.awt.event.actionlistener; import java.io.bufferedreader; import java.io.ioexception; import java.io.inputstreamreader; import java.io.printwriter; import java.net.inetaddress; import java.net.socket; import java.net.unknownhostexception;  import javax.swing.jbutton; import javax.swing.jframe; import javax.swing.jlabel; import javax.swing.joptionpane; import javax.swing.jpanel; import javax.swing.jscrollpane; import javax.swing.jtextarea; import javax.swing.jtextfield;  public class pokerclient {      bufferedreader in;     printwriter out;     string playername = "poker";     jframe frame = new jframe(playername);      jpanel playerhandpanel, controlpanel, bottompanel, toppanel, messageboard;     jbutton check, fold;     jtextfield textfield = new jtextfield(10);     jlabel firstline = new jlabel("");      string serveraddress = "localhost";      card playerhand1, playerhand2;       public pokerclient() {          // layout gui         frame.setsize(1100, 700);         frame.setresizable(true);         frame.setdefaultcloseoperation(jframe.exit_on_close);           playerhandpanel = new jpanel(new gridlayout(1, 0));         playerhandpanel.setpreferredsize(new dimension(600, 300));          playerhandpanel.setvisible(true);          toppanel = new jpanel(new gridlayout(1, 0));         toppanel.setpreferredsize(new dimension(900, 300));          toppanel.setvisible(true);          messageboard = new jpanel(new gridlayout(0, 1));         messageboard.add(firstline);          controlpanel = new jpanel();         controlpanel.setpreferredsize(new dimension(600, 40));         controlpanel.setvisible(true);          toppanel.add(messageboard);          check = new jbutton("check");         check.addactionlistener(new actionlistener() {             public void actionperformed(actionevent e) {                 out.println(playername+"check");             }         });          fold = new jbutton("fold");         fold.addactionlistener(new actionlistener() {             public void actionperformed(actionevent e) {                 out.println(playername+"fold");             }         });          textfield.addactionlistener(new actionlistener() {             public void actionperformed(actionevent e) {                 if(isint(textfield.gettext())){                     out.println(textfield.gettext());                     textfield.settext("");                 } else{                     jframe frame = new jframe("not number");                     frame.setsize(600, 70);                     frame.setlocation(400, 250);                     frame.setresizable(false);                     jlabel label = new jlabel("you must enter number in order raise");                     frame.add(label);                     frame.setvisible(true);                     frame.tofront();                     frame.repaint();                     textfield.settext("");                 }             }         });          controlpanel.add(check);         controlpanel.add(fold);         controlpanel.add(new jlabel(" raise:"));         controlpanel.add(textfield);          bottompanel = new jpanel();         bottompanel.add(controlpanel, borderlayout.south);         bottompanel.add(playerhandpanel, borderlayout.north);            frame.add(toppanel, borderlayout.north);         frame.add(bottompanel, borderlayout.south);         //frame.add(firstline, "south");         frame.setvisible(true);     }       private static boolean isint(string s)     {      try       { int = integer.parseint(s); return true; }       catch(numberformatexception er)       { return false; }     }      /**      * prompt , return desired screen name.      */     private string getname() {          return joptionpane.showinputdialog(             frame,             "choose screen name:",             "screen name selection",             joptionpane.plain_message);     }      private card constructcard(string line){          int seperator = line.indexof('/');          int cardnum = integer.parseint(line.substring(0, seperator));          card card;          if(line.substring(seperator+1).startswith("s")){            card = new card(cardnum, suit.spade);          } else if(line.substring(seperator+1).startswith("c")){            card = new card(cardnum, suit.club);          } else if(line.substring(seperator+1).startswith("d")){            card = new card(cardnum, suit.diamond);          } else{            card = new card(cardnum, suit.heart);          }          system.out.println(card.tostring());          return card;     }      /**      * connects server enters processing loop.      */     private void run() throws ioexception {          socket socket = new socket(serveraddress, 9050);         in = new bufferedreader(new inputstreamreader(             socket.getinputstream()));         out = new printwriter(socket.getoutputstream(), true);            // process messages server, according protocol.         while (true) {             string line = in.readline();             system.out.println(line);             if (line.startswith("submitname")) {                 string name = getname();                 playername = name;                 out.println(name);                 frame.settitle(playername);              } else if (line.startswith(playername)) {                 playerhandpanel.add(new cardcomponent(constructcard(line.substring(playername.length()))));                 playerhandpanel.revalidate();                 playerhandpanel.repaint();             } else if(line.startswith("card")){                 toppanel.add(new cardcomponent(constructcard(line.substring(4))));                 toppanel.revalidate();                 toppanel.repaint();             } else if(line.startswith("message")){                 firstline.settext(line.substring(7));             }         }     }       public static void main(string[] args) throws exception {         pokerclient client = new pokerclient();         client.frame.setdefaultcloseoperation(jframe.exit_on_close);         client.frame.setvisible(true);         client.run();     } } 


Comments

Popular posts from this blog

mysql - Dreamhost PyCharm Django Python 3 Launching a Site -

java - Sending SMS with SMSLib and Web Services -

java - How to resolve The method toString() in the type Object is not applicable for the arguments (InputStream) -