/// <summary> /// Handelt de bericht die uit de server komt. /// </summary> /// <param name="message">het bericht die uit de server komt.</param> /// <param name="socket">De client.</param> public override void ProcessStream(string message, Socket socket) { // [0] is altijd de event. // [1] De naam van de speler. // [2] Het berichtje. // [3] De naam van de tegen speler. string[] opgeknipt = message.Split(new char[] { '%' }); // Change this string to event. Events events = EnumHelperl.EnumConvert <Events>(opgeknipt[0]); switch (events) { // Het spel is gecreeerd. case Events.GecreeerdSpel: Thread.Sleep(1000); Console.WriteLine(); Console.WriteLine("Je moet op een speler wachten."); break; case Events.SpelerInvoegde: Console.WriteLine(); Thread.Sleep(1000); Console.WriteLine("Nu mag je je teken kiezen."); Console.WriteLine(); string teken = this.VraagOmEigenTekenTeKiezen(); this.ZetTekenCommando(teken); break; case Events.TekenIngezet: this.StartHetSpelCommando(); break; case Events.TegenSpelerHeeftTekenIngezet: Console.WriteLine(); Console.WriteLine($"De tegenspeler heeft {opgeknipt[2]} gekozen"); Console.WriteLine(); Console.Write($"Jij gaat"); ColorConsole.Write(ConsoleColor.Red, $" {opgeknipt[4]}"); Console.WriteLine(" gbruiken."); Thread.Sleep(500); break; case Events.NaamVeranderd: Console.WriteLine(); Console.WriteLine("Omdat je tegenspeler dezelfde naam heeft, wordt je naam automatisch verandert."); Console.Write($"Je nieuwe naam is: "); ColorConsole.WriteLine(ConsoleColor.Green, $"{opgeknipt[1]}"); break; case Events.Gestart: Console.WriteLine(); Thread.Sleep(1000); ColorConsole.WriteLine(ConsoleColor.Green, "Na twee seconden wordt het spel gestart."); Thread.Sleep(2000); break; case Events.BordGetekend: Console.Clear(); Thread.Sleep(500); Console.WriteLine(); Console.WriteLine($"{opgeknipt[2]}"); break; case Events.JeRol: Console.WriteLine(); int inzet = this.Doezet(); if (inzet > 0 || inzet <= this.dimension) { this.DoeZetCommando(inzet); } break; case Events.OngeldigInzet: Console.WriteLine(); Console.WriteLine("Deze kolom is vol. Je mag een andere kolom kiezen."); inzet = this.Doezet(); if (inzet > 0 || inzet <= this.dimension) { this.DoeZetCommando(inzet); } break; case Events.Wachten: Console.WriteLine(); Console.WriteLine($"{opgeknipt[3]} is aan het spelen. je moet op hem/haar nu wachten."); break; case Events.HeeftGewonnen: case Events.HetBordVolGeworden: if (events == Events.HeeftGewonnen) { Console.WriteLine(); Console.WriteLine($"{opgeknipt[1]}: je hebt gewonnen."); } else if (events == Events.HetBordVolGeworden) { Console.WriteLine(); Console.WriteLine("Het speelvlak is vol."); } break; case Events.SpelGevonden: Console.WriteLine(); Console.WriteLine("Er is een spel gevonden."); break; case Events.HeeftGewonnenTegenSpeler: Console.WriteLine(); Console.WriteLine($"{opgeknipt[3]} heeft gewonnen."); Thread.Sleep(1000); if (opgeknipt[3] == "Computer") { this.UitVoerNieuwRonde(); } else { Console.WriteLine("Wacht op hem/haar."); } break; case Events.WachtOPReactie: Console.WriteLine(); Console.WriteLine("Wacht op hem/haar."); break; case Events.TegenSpelerVerlaten: Console.Clear(); Console.WriteLine(); Console.WriteLine("De andere speler heeft het spel verlaten."); if (this.WilNieuweSpel()) { this.NieuweSpel(); } else { this.DichtHetWindow(); } break; case Events.SpelGestopt: Console.WriteLine(); this.UitVoerNieuwRonde(); break; case Events.WachtenNieuweSpeler: Console.WriteLine(); Console.WriteLine("Je moet op een nieuwe Speler wachten."); break; case Events.SpelVerwijderd: Console.WriteLine(); Console.WriteLine("Het spel is gestopt!"); Console.WriteLine("De speler heeft het spel verlaten. Het spel wordt verwijderd."); if (this.WilNieuweSpel()) { this.NieuweSpel(); } else { this.DichtHetWindow(); } break; } }
/// <summary> /// behanelt het berichtje die uit een cleint wordt gestuurd. /// </summary> /// <param name="message">De bericht.</param> /// <param name="socket">De client.</param> public override void ProcessStream(string message, Socket socket) { try { if (message == string.Empty) { throw new ArgumentException("Mag niet message empty zijn."); } if (socket == null) { throw new ArgumentException("Mag niet een client null zijn."); } Game game; // [0] is altijd de commando. // [1.....] is de rest van de bericht. string[] opgeknipt = message.Split(new char[] { '%' }); // change the string to enum. Commandos commando = EnumHelperl.EnumConvert <Commandos>(opgeknipt[0]); switch (commando) { case Commandos.VerzoekTotDeelnemenSpel: this.Send(socket, this.handler.StreamOntvanger(message, socket)); break; // Geef een teken aan een speler. // en geef de andere speler de andere teken. case Commandos.ZetTeken: string msg = string.Empty; Teken teken = EnumHelperl.EnumConvert <Teken>(opgeknipt[1].ToString()); game = this.GetGame(socket); game.TekenenBehandl(socket, teken); msg = $"{Events.TegenSpelerHeeftTekenIngezet.ToString()}%%{opgeknipt[1]}%%{game.TegenSpeler(game.GetSpelerViaTcp(socket)).GebruikTeken.ToString()}"; this.SendBerichtNaarDeTegenSpeler(game, msg, socket); Thread.Sleep(1000); this.Send(socket, Events.TekenIngezet.ToString()); break; // start het spel. case Commandos.Starten: this.GetGame(socket).StartHetSpel(); break; // doe zet op het speelvlak. case Commandos.DoeZet: game = this.GetGame(socket); if (game != null) { // eerst gaat het spel de inzet van de speler zetten. // dan gaat de controller dat nummertje uit de properties speler op halen. game.DoeInzet(opgeknipt[1], socket); Speler speler = game.GetSpelerViaTcp(socket); game.GameController.DoeInzet(speler); } break; case Commandos.NieuwRonde: game = this.GetGame(socket); if (game != null) { // Als de speler een nieuw rondje wil doen. // Er staat alleen een speler dan de situatie verandert tot wachten op andere speler. if (game.GetSpelers().Count == 1) { game.ZetSituatie(Status.Wachten); Thread.Sleep(500); this.SendBerichtNaarDeTegenSpeler(game, Events.WachtenNieuweSpeler.ToString(), socket); } else { // Als het spel twee spelers heeft dan gaat het door. game.GameController.NieuwRonde(); } } break; case Commandos.WilNietNieuweRonde: // neem de game. game = this.GetGame(socket); if (game != null) { this.VerWijdertHetSpelMetSpeller(socket); } socket.Close(); this.clienten.Remove(socket); break; } } catch (Exception e) { throw new ArgumentException(e.Message); } }