Пример #1
0
 /**
  * setzt, dass der Client bereit zum Spielen ist. Wenn alle Clients bereit zum Spielen sind,
  * wird allen ein Startsignal geschickt
  *
  * @param zeile Daten des Clients
  */
 private void behandleBereitsein(String zeile) {
   bereit = true;
   int id = Integer.parseInt(zeile.substring(zeile.indexOf(";") + 1));
   MultiplayerSpiel spiel = getSpielById(id);
   spiel.addSpieler(spieler);
   boolean alleBereit = true;
   for (MultiplayerSpieler spieler : spiel.getAlleSpieler())
     for (ArduinoRacerConnectionThread thread : threads)
       if (spieler.getId() == thread.spieler.getId()) alleBereit &= thread.bereit;
   System.out.println("ALLEBEREIT?" + alleBereit);
   if (alleBereit) {
     spiele.remove(spiel);
     try {
       sendeVerfuegbareSpieleAnAlle();
     } catch (Exception e1) {
       e1.printStackTrace();
     }
     for (MultiplayerSpieler spieler : spiel.getAlleSpieler())
       for (ArduinoRacerConnectionThread thread : threads)
         if (spieler.getId() == thread.spieler.getId()) {
           try {
             thread.out.writeObject(SPIEL_START);
             System.out.println(SPIEL_START);
             thread.out.flush();
           } catch (Exception e) {
             e.printStackTrace();
           }
         }
   }
 }
Пример #2
0
 /**
  * behandelt einen Beitritt des Clients zu ein Spiel. Dabei werden die übergebenen Daten zu
  * einem vorhanden Spiel zugewiesen und bei einem erfolglosen Beitritt eine dementsprechende
  * Meldung geschickt. Ansonsten wir eine Beitrittsbestätigung geschickt.
  *
  * @param zeile Daten des Clients
  * @throws IOException Wenn beim Senden ein Fehler auftritt
  */
 private void behandleBeitritt(String zeile) throws IOException {
   System.out.println("behandleBeitritt");
   int id = Integer.parseInt(zeile.substring(zeile.indexOf(";") + 1));
   MultiplayerSpiel spiel = getSpielById(id);
   String grund = null;
   if (spiel == null) grund = "Teilnahme am Spiel fehlgeschlagen";
   else if (spiel.hasSpieler(spieler.getId()))
     grund = "Spieler mit Ihrer ID ist bereits im Spiel vorhanden";
   else if (spiel.hasAutofarbe(spieler.getAuto().getFarbe()))
     grund = "Spieler mit Ihrem Auto ist bereits im Spiel vorhanden";
   else if (spiel.hasSpielername(spieler.getName()))
     grund = "Spieler mit Ihrem Name ist bereits im Spiel vorhanden";
   else {
     spiel.addSpieler(spieler);
     out.writeObject(BEITRITTS_BESTAETIGUNG + ";" + id);
     out.flush();
     sendeVerfuegbareSpieleAnAlle();
     if (spiel.getGesamtSpieler() == spiel.getBegetetreteneSpieler()) {
       for (MultiplayerSpieler spieler : spiel.getSpieler())
         for (ArduinoRacerConnectionThread thread : threads)
           if (spieler.getId() == thread.spieler.getId()) {
             thread.out.writeObject(SPIEL_OK);
             System.out.println("SPIEL_PK");
             thread.out.flush();
           }
       System.out.println(spiel.getSpielersteller().getId() + threads.toString());
       for (ArduinoRacerConnectionThread thread : threads)
         if (spiel.getSpielersteller().getId() == thread.spieler.getId()) {
           thread.out.writeObject(SPIEL_OK);
           System.out.println("SPIEL_OK TO SERVER");
         }
     }
   }
   if (grund != null) {
     out.writeObject(BEITRITTS_ABSAGE + ";" + id + ";" + grund);
     out.flush();
   }
 }