//--------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); } }
//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 }); } }
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 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); } } } }
//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(); } }
//--------------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(); }