private void Listen_for_TCP_Pakete()
 {
     while (broadcast_status)
     {
         Netzwerkkommunikation.Start_TCP_Listener();
     }
 }
Пример #2
0
        //--------Computergegner Runtime-------------//
        private void Computergegener_Runtime(Spieler CP_spieler)
        {
            while (true)
            {
                while (CP_spieler.status)
                {
                    System.Threading.Thread.Sleep(500);
                    Würfel.Dispatcher.Invoke(new Click_Event(Würfel_Click));
                    System.Threading.Thread.Sleep(500);
                    foreach (Figur figur in CP_spieler.eigene_Figuren)
                    {
                        if (figur.mögliche_Position != null)
                        {
                            figur.Set_Figureposition(figur.mögliche_Position);
                            Netzwerkkommunikation.Sende_TCP_Nachricht_an_alle_Spieler("Spielfigur Update," + Statische_Methoden.Konvertiere_FARBE_zu_string(figur.farbe) + "," + figur.id + "," + figur.aktuelle_Position.position.X + "," + figur.aktuelle_Position.position.Y);
                            Figur_wurde_bewegt();

                            break;
                        }
                    }
                    foreach (Figur figur in CP_spieler.eigene_Figuren)
                    {
                        figur.mögliche_Position = null;
                    }
                }
                System.Threading.Thread.Sleep(1000);
            }
        }
 private void Sart_TCP_Listener()
 {
     while (UDP_thread_status)
     {
         Netzwerkkommunikation.Start_TCP_Listener();
     }
 }
        private void btn_beitreten_Click(object sender, RoutedEventArgs e)
        {
            if (Spieler_name.Text == "" || Spieler_name.Text == "Gib einen Spielernamen ein" || Spieler_name.Text.Length > 20)
            {
                MessageBox.Show("Gegen sie einen gültigen Namen ein!", "Fehler", MessageBoxButton.OK);
                Spieler_name.Focus();
                return;
            }

            if (Spieler_name.Text.Contains(","))
            {
                MessageBox.Show("Der Spielername darf kein \",\"enthalten", "Fehler", MessageBoxButton.OK);
                Spieler_name.Focus();
                return;
            }
            if (ausgewählten_Host.freie_plätze > 0)
            {
                string message = "Clientanfrage," + Spieler_name.Text + "," + Statische_Variablen.eigene_IPAddresse.ToString() + "," + ausgewählte_Farbe;
                Netzwerkkommunikation.Send_TCP_Packet(message, ausgewählten_Host.host_ip);
                //Warten auf zusage
                Netzwerkkommunikation.Start_TCP_Listener();
                if (Statische_Variablen.anfragen_result == true)
                {
                    Task tcp_listener = Task.Factory.StartNew(Sart_TCP_Listener);
                    btn_beitreten.IsEnabled = false;
                    Spieler_name.IsEnabled  = false;
                    RB_blau.IsEnabled       = false;
                    RB_gelb.IsEnabled       = false;
                    RB_gruen.IsEnabled      = false;
                    RB_blau.IsEnabled       = false;
                    btn_Abbrechen.IsEnabled = true;
                    Hosts.IsEnabled         = false;
                }
            }
        }
Пример #5
0
 public static void Sende_UDP()
 {
     while (UDP_Threadstatus)
     {
         Netzwerkkommunikation.Send_UDP_BC_Packet(Generiere_UDP_Nachricht());
         Thread.Sleep(1000);
     }
 }
 private void Send_Broadcast()
 {
     while (broadcast_status)
     {
         Netzwerkkommunikation.Send_UDP_BC_Packet(broadcast_string);
         Thread.Sleep(1000);// Ein mal in der Sekunde wird ein Broadcast gesendet;
     }
 }
Пример #7
0
        //Spielrecht -------------------------------------------------------------------------------------------------------
        public static void Gebe_Spielrecht_weiter()
        {
            string name = Ermittle_nächsten_Spieler(aktiver_Spieler.farbe).name;

            Netzwerkkommunikation.Sende_TCP_Nachricht_an_alle_Spieler("Mitspieler;Spielrecht;" + name);
            if (Ermittle_nächsten_Spieler(aktiver_Spieler.farbe).ip.Address == Netzwerkkommunikation.Eigene_IP_Adresse().Address)
            {
                Analysiere_Nachricht(new string[] { "Spielrecht_update", name });
            }
        }
Пример #8
0
 private static string Generiere_UDP_Nachricht()
 {
     return("Client" + ";" +
            "Spielangebot" + ";" +
            Netzwerkkommunikation.Eigene_IP_Adresse() + ";" +
            "Spielname" + ";" +
            Spieler_Rot + ";" +
            Spieler_Gelb + ";" +
            Spieler_Grün + ";" +
            Spieler_Blau);
 }
Пример #9
0
 //Senden / Empfangen -----------------------------------------------------------------------------------------------
 public static void Warte_auf_Spieler()
 {
     while (UDP_Threadstatus)
     {
         if (Prüfe_Startfähigkeit())
         {
             UDP_Threadstatus = false;
             Starte_Spiel();
             break;
         }
         Netzwerkkommunikation.Start_TCP_Listener();
     }
 }
Пример #10
0
        public Spielwiese(Frame root_Frame)
        {
            InitializeComponent();
            aktive_Seite             = AKTIVE_SEITE.SPIELWIESE;
            this.root_Frame          = root_Frame;
            this.TCP_listener_status = true;
            lokaler_spieler          = Ermittele_lokalen_Spieler();
            Würfel      = Btn_Wuerfel;
            active_chat = Chat_rot;

            Initialisiere_alle_Felder(Grid_Spielwiese); // Hier werden alle Felder anhand der UIElement Control elemente erzeugt.
            Initialisiere_Spiel();                      // Hier werden die Spielfiguren der Spieler erzeugt.

            foreach (Spieler spieler in alle_Spieler)
            {
                if (spieler.status)
                {
                    TB_aktiver_Spieler.Text = spieler.name;
                    aktiver_spieler         = spieler;
                }
                switch (spieler.farbe)
                {
                case FARBE.ROT: L_Spielername_rot.Content = spieler.name; break;

                case FARBE.GELB: L_Spielername_gelb.Content = spieler.name; break;

                case FARBE.GRUEN: L_Spielername_gruen.Content = spieler.name; break;

                case FARBE.BLAU: L_Spielername_blau.Content = spieler.name; break;
                }
                foreach (Figur figur in spieler.eigene_Figuren)
                {
                    Grid_Spielwiese.Children.Add(figur.bild);                                           //Hier wird jede figur der oberfläche hinzugefügt
                }
                spieler.nächster_Spieler = Ermittele_nächsten_Spieler(spieler.farbe);
            }

            if (lokaler_spieler.status == true)
            {
                Netzwerkkommunikation.Anlaysiere_IP_Paket("Spielrecht," + lokaler_spieler.name);
            }
            Task TCPListener = Task.Factory.StartNew(Listen_for_TCP_Pakete);

            foreach (Spieler spieler in alle_Spieler)
            {
                if (spieler.spieler_art == SPIELER_ART.COMPUTERGEGNER)
                {
                    Task.Factory.StartNew((Computergegener) => Computergegener_Runtime(spieler), spieler);
                }
            }
        }
Пример #11
0
 private void btn_Aufgeben_Click(object sender, RoutedEventArgs e)
 {
     this.TCP_listener_status = false;
     root_Frame.Content       = new Startseite(root_Frame);
     Netzwerkkommunikation.Sende_TCP_Nachricht_an_alle_Spieler("Client_abbruch," + lokaler_spieler.name);
     spiel_felder.Clear();
     ziel_felder.Clear();
     start_felder.Clear();
     spieler_rot.Clear();
     spieler_gelb.Clear();
     spieler_gruen.Clear();
     spieler_blau.Clear();
     alle_Spieler.Clear();
 }
 public Spiel_erstellen(Frame root_Frame)
 {
     this.ausgewählte_farbe = FARBE.LEER;
     this.root_Frame        = root_Frame;
     InitializeComponent();
     this.comboBox_rot.SelectedIndex = 1;
     Spielerstellenlabel.Add(L_Name_Spieler_rot);
     Spielerstellenlabel.Add(L_Name_Spieler_gelb);
     Spielerstellenlabel.Add(L_Name_Spieler_gruen);
     Spielerstellenlabel.Add(L_Name_Spieler_blau);
     aktive_Seite = AKTIVE_SEITE.SPIEL_ERSTELLEN;
     Netzwerkkommunikation.Iinitialisiere_BC_IP_Addressen();
     Netzwerkkommunikation.Iinitialisiere_IP_Addressen();
 }
 private void btn_Abbrechen_Click(object sender, RoutedEventArgs e)
 {
     if (ausgewählten_Host != null)
     {
         Netzwerkkommunikation.Send_TCP_Packet("Clientabsage," + Statische_Variablen.eigene_IPAddresse.ToString(), ausgewählten_Host.host_ip);
     }
     btn_Abbrechen.IsEnabled = false;
     btn_beitreten.IsEnabled = true;
     Spieler_name.IsEnabled  = true;
     RB_blau.IsEnabled       = true;
     RB_gelb.IsEnabled       = true;
     RB_gruen.IsEnabled      = true;
     RB_blau.IsEnabled       = true;
     Hosts.IsEnabled         = true;
 }
Пример #14
0
 public void Text_in_Chat_senden(string spielername)
 {
     active_chat.Text += "\n" + spielername + ": " + Chat_eingabe.Text;
     if (aktiver_chat_spieler != null)
     {
         Netzwerkkommunikation.Send_TCP_Packet("Chatinformationen," + Chat_eingabe.Text, aktiver_chat_spieler.ip);
     }
     else
     {
         Netzwerkkommunikation.Sende_TCP_Nachricht_an_alle_Spieler("Chatinformationen," + Chat_eingabe.Text);
     }
     active_chat.ScrollToEnd();
     Chat_eingabe.Text = "";
     Chat_eingabe.Focus();
 }
 private void BTN_Starten_Click(object sender, RoutedEventArgs e)
 {
     // Sobald man Starten drückt wird die getroffene Auswahl Überprüft. Bei einer gültigen Auswahl werden zwei neue
     // Threads gestartet. Der eine Sendet eine UDP-Nachricht für potentielle Spieler(Clients) und der Andere horcht auf die
     // Leitung um Client-Anfragen zu verarbeiten. Dabei ist der Button disabled. Wenn das Spiel gestartet wird, wird der
     // Button erneut getriggert um das Spiel zu starten.
     if (BTN_Starten.IsEnabled)
     {
         if (S_erstellen.Prüfe_auswahl())
         {
             BTN_Starten.IsEnabled        = false;
             CB_Blau.IsEnabled            = false;
             CB_Gelb.IsEnabled            = false;
             CB_Rot.IsEnabled             = false;
             CB_Grün.IsEnabled            = false;
             S_erstellen.Spieler_Rot      = CB_Rot.Text;
             S_erstellen.Spieler_Gelb     = CB_Gelb.Text;
             S_erstellen.Spieler_Grün     = CB_Grün.Text;
             S_erstellen.Spieler_Blau     = CB_Blau.Text;
             S_erstellen.UDP_Threadstatus = true;
             Task.Factory.StartNew(S_erstellen.Warte_auf_Spieler);
             Task.Factory.StartNew(S_erstellen.Sende_UDP);
         }
         else
         {
             MessageBox.Show("Es müssen mindestens 2 Spieler gegeneinander antreten", "Fehler - ungültige Auswahl", MessageBoxButton.OK);
         }
     }
     else
     {
         string startnachricht = S_erstellen.Generiere_Startnachricht();
         Netzwerkkommunikation.Sende_TCP_Nachricht_an_alle_Spieler(startnachricht);
         Statische_Variablen.aktuelle_Seite = "Spielfeld";
         Klassen.SeitenFunktionen.Spielfeld.aktiver_Spieler = Klassen.SeitenFunktionen.Spielfeld.alle_Mitspieler
                                                              [new Random().Next(0, Klassen.SeitenFunktionen.Spielfeld.alle_Mitspieler.Count)];
         Statische_Variablen.rootFrame.Content = new Spielfeld();
         Klassen.SeitenFunktionen.Spielfeld.Gebe_Spielrecht_weiter();
         Klassen.SeitenFunktionen.Spielfeld.spielstatus = true;
         foreach (Spieler spieler in Klassen.SeitenFunktionen.Spielfeld.alle_Mitspieler)
         {
             if (spieler.spieler_art == Statische_Variablen.SPIELER_ART.CP_GEGNER)
             {
                 Task.Factory.StartNew(spieler.Computergegner_Runtime);
             }
         }
     }
 }
        private void btn_abbrechen_Click(object sender, RoutedEventArgs e)
        {
            if (MessageBox.Show("Achtung!", "Wollen sie wirklich abbrechen ?!", MessageBoxButton.YesNo) == MessageBoxResult.Yes)
            {
                broadcast_status = false;
                Spielerstellenlabel.Clear();
                alle_Spieler.Clear();
                known_IP_S.Clear();
                alle_Hosts.Clear();

                for (int i = 0; i < 10; i++)
                {
                    Netzwerkkommunikation.Send_UDP_BC_Packet("Hostinformationen," + eigene_IPAddresse.ToString() + ",absage,,,,,,");
                }
                root_Frame.Content = new Startseite(root_Frame);
            }
        }
Пример #17
0
 //Würfeln ----------------------------------------------------------------------------------------------------------
 public static void Würfeln()
 {
     Aktiviere_Deaktiviere_Würfel(false);
     versuche--;
     würfelzahl = new Random().Next(1, 7);
     Zeige_Zahl(würfelzahl);
     if (würfelzahl == 6)
     {
         versuche = 1;
     }
     Netzwerkkommunikation.Sende_TCP_Nachricht_an_alle_Spieler("Mitspieler;Würfel_update;" + würfelzahl);
     if (!Prüfe_Figurbeweglichkeit() && versuche > 0)
     {
         Aktiviere_Deaktiviere_Würfel(true);
     }
     else if (!Prüfe_Figurbeweglichkeit() && versuche <= 0)
     {
         Gebe_Spielrecht_weiter();
     }
 }
Пример #18
0
 public static void TCP_Listener()
 {
     while (spielstatus)
     {
         //testcode////////////////////////////////////////////////////////////////
         //Analysiere_Nachricht(new string[] { "Würfel_update", "6" });
         //Analysiere_Nachricht(new string[] { "Figur_update", "GELB", "1", "10"});
         //Analysiere_Nachricht(new string[] { "Figur_update", "ROT", "1", "20" });
         //for (int i = 0; i < 44; i++)
         //{
         //    Analysiere_Nachricht(new string[] { "Figur_update", "GELB", "1", i.ToString() });
         //    Analysiere_Nachricht(new string[] { "Figur_update", "BLAU", "1", i.ToString() });
         //    Analysiere_Nachricht(new string[] { "Figur_update", "ROT", "1", i.ToString() });
         //    Analysiere_Nachricht(new string[] { "Figur_update", "GRÜN", "1", i.ToString() });
         //    Thread.Sleep(100);
         //}
         //testcode///////////////////////////////////////////////////////////////
         Netzwerkkommunikation.Start_TCP_Listener();
     }
 }
Пример #19
0
 // Spielstart ------------------------------------------------------------------------------------------------------------------------
 private static void Starte_Spiel()
 {
     // Erstellt Computergegner
     if (Spieler_Rot == "Computergegner")
     {
         Erstelle_Spieler("ROT", "CP Gegner Rot", Netzwerkkommunikation.Eigene_IP_Adresse());
     }
     if (Spieler_Gelb == "Computergegner")
     {
         Erstelle_Spieler("GELB", "CP Gegner Gelb", Netzwerkkommunikation.Eigene_IP_Adresse());
     }
     if (Spieler_Grün == "Computergegner")
     {
         Erstelle_Spieler("GRÜN", "CP Gegner Grün", Netzwerkkommunikation.Eigene_IP_Adresse());
     }
     if (Spieler_Blau == "Computergegner")
     {
         Erstelle_Spieler("BLAU", "CP Gegner Blau", Netzwerkkommunikation.Eigene_IP_Adresse());
     }
     if (Spieler_Rot == "Ich")
     {
         Erstelle_Spieler("ROT", Statische_Variablen.lokaler_Spieler, Netzwerkkommunikation.Eigene_IP_Adresse());
     }
     if (Spieler_Gelb == "Ich")
     {
         Erstelle_Spieler("GELB", Statische_Variablen.lokaler_Spieler, Netzwerkkommunikation.Eigene_IP_Adresse());
     }
     if (Spieler_Grün == "Ich")
     {
         Erstelle_Spieler("GRÜN", Statische_Variablen.lokaler_Spieler, Netzwerkkommunikation.Eigene_IP_Adresse());
     }
     if (Spieler_Blau == "Ich")
     {
         Erstelle_Spieler("BLAU", Statische_Variablen.lokaler_Spieler, Netzwerkkommunikation.Eigene_IP_Adresse());
     }
     Start_Button.Dispatcher.Invoke(new Click_Event(Start_Invoker));
 }
Пример #20
0
        //--------------Würfellogick--------------//
        private void Btn_Wuerfel_Click(object sender, RoutedEventArgs e)
        {
            z = zufallszahl.Next(1, 7);
            Btn_Wuerfel.Content = z.ToString();

            Btn_Wuerfel.IsEnabled = false;
            Netzwerkkommunikation.Sende_TCP_Nachricht_an_alle_Spieler("Wuerfelzahl," + z.ToString());

            if (!Zug_ist_möglich(z, aktiver_spieler.eigene_Figuren))
            {
                if (z != 6)
                {
                    if (Sind_alle_Figuren_im_Haus())
                    {
                        verbleibende_würfelversuche -= 1;
                        if (verbleibende_würfelversuche > 0)
                        {
                            if (aktiver_spieler.spieler_art == SPIELER_ART.NORMALER_SPIELER)
                            {
                                Btn_Wuerfel.IsEnabled = true;
                            }
                        }
                        else
                        {
                            Forward_Spielrecht();
                        }
                    }
                    else
                    {
                        Forward_Spielrecht();
                    }
                }
                else
                {
                    if (aktiver_spieler.spieler_art == SPIELER_ART.NORMALER_SPIELER)
                    {
                        Btn_Wuerfel.IsEnabled = true;
                    }
                }
            }
            //________________________________________________________________________________________________________________________
            //if (Sind_alle_Figuren_im_Haus() && verbleibende_würfelversuche > 0)
            //{
            //    if (z != 6 && verbleibende_würfelversuche >0)
            //    {
            //        verbleibende_würfelversuche--;
            //    }
            //    else
            //    {
            //        Zug_ist_möglich(z,aktiver_spieler.eigene_Figuren);
            //        Btn_Wuerfel.IsEnabled = false;
            //    }
            //}
            //else if (Sind_alle_Figuren_im_Haus() && verbleibende_würfelversuche < 1)
            //{
            //    Btn_Wuerfel.IsEnabled = false;
            //    Forward_Spielrecht();
            //}
            //else
            //{
            //    if (z != 6)
            //    {
            //        if (Zug_ist_möglich(z,aktiver_spieler.eigene_Figuren))
            //        {
            //            Btn_Wuerfel.IsEnabled = false;
            //        }
            //        else
            //        {
            //            Btn_Wuerfel.IsEnabled = false;
            //            if(aktiver_spieler.spieler_art == SPIELER_ART.NORMALER_SPIELER) MessageBox.Show("Es ist kein Zug möglich", "Information", MessageBoxButton.OK);
            //            Forward_Spielrecht();
            //        }
            //    }
            //    else
            //    {
            //        if (Zug_ist_möglich(z, aktiver_spieler.eigene_Figuren))
            //        {
            //            Btn_Wuerfel.IsEnabled = false;
            //        }
            //        else
            //        {
            //            lokaler_spieler.status = true;
            //        }
            //    }
            //}

            //if (verbleibende_würfelversuche < 1) Forward_Spielrecht();
        }
        private void btn_spiel_starten_Click(object sender, RoutedEventArgs e)
        {
            //
            //In den If Abfragen wird geprüft ob min 2 gültige spieler da sind und kein slot mehr offen ist und ein Name angegeben wurde.
            //
            int temp = 0;

            if (!Überprüfe_eingabe_Name())
            {
                return;
            }

            if (Prüfe_Startbedingungen(L_Name_Spieler_rot))
            {
                temp++;
            }
            if (Prüfe_Startbedingungen(L_Name_Spieler_gelb))
            {
                temp++;
            }
            if (Prüfe_Startbedingungen(L_Name_Spieler_gruen))
            {
                temp++;
            }
            if (Prüfe_Startbedingungen(L_Name_Spieler_blau))
            {
                temp++;
            }

            if (temp < 2)
            {
                MessageBox.Show("Es müssen mindestens 2 Spieler gegeneinander antreten", "Fehler", MessageBoxButton.OK);
                return;
            }

            if (temp >= 2)
            {
                broadcast_status = false;
                if (L_Name_Spieler_rot.Text.ToString() == "Computergegner")
                {
                    Spieler CP_Gegner1 = new Spieler(FARBE.ROT, "Computergegner 1", SPIELER_ART.COMPUTERGEGNER, new System.Net.IPAddress(0));
                }
                if (L_Name_Spieler_gelb.Text.ToString() == "Computergegner")
                {
                    Spieler CP_Gegner1 = new Spieler(FARBE.GELB, "Computergegner 2", SPIELER_ART.COMPUTERGEGNER, new System.Net.IPAddress(0));
                }
                if (L_Name_Spieler_gruen.Text.ToString() == "Computergegner")
                {
                    Spieler CP_Gegner1 = new Spieler(FARBE.GRUEN, "Computergegner 3", SPIELER_ART.COMPUTERGEGNER, new System.Net.IPAddress(0));
                }
                if (L_Name_Spieler_blau.Text.ToString() == "Computergegner")
                {
                    Spieler CP_Gegner1 = new Spieler(FARBE.BLAU, "Computergegner 4", SPIELER_ART.COMPUTERGEGNER, new System.Net.IPAddress(0));
                }

                Spieler host_spieler = new Spieler(ausgewählte_farbe, Spielername_eingabe.Text, SPIELER_ART.NORMALER_SPIELER, eigene_IPAddresse);
                host_spieler.status = true;

                string client_startmessage = Statische_Methoden.Erstelle_Startnachricht_für_clients();
                foreach (Spieler spieler in alle_Spieler)
                {
                    if (spieler.spieler_art == SPIELER_ART.NORMALER_SPIELER)
                    {
                        Netzwerkkommunikation.Send_TCP_Packet(client_startmessage, spieler.ip);
                    }
                }

                Spielerstellenlabel.Clear();
                root_Frame.Content = new Spielwiese(root_Frame);
            }
        }