private bool AllColumnsAreValid(Board aBoard) { var isValid = true; uint columnIndex = 0; while (isValid && columnIndex < aBoard.Dimensions.Width) { isValid = IsBlockValid(aBoard, 0, ExtensionsMethods.Pred(aBoard.Dimensions.Height), columnIndex, columnIndex); columnIndex++; } return(isValid); }
private void SpawnPlayers(int nbPlayers) { if (!GameManager.instance.ArePlayerAlreadyChosen) { for (var i = 1; i <= nbPlayers; i++) { var index = Random.Range(0, _spawnPoints.Count - 1); var instance = Instantiate(PlayerPrefab, Vector3.zero, Quaternion.identity); instance.name = "P" + i; instance.GetComponent <PlayerPrefs>().PlayerName = instance.name; instance.GetComponent <PlayerPrefs>().PlayerColor = ExtensionsMethods.Random(ref GameManager.instance.AvailableColors); var head = instance.transform.FindChild("Head"); head.GetComponent <SnakeController>().Dead = true; var pInfos = new GameManager.PlayerInformations(); pInfos.PlayerColor = instance.GetComponent <PlayerPrefs>().PlayerColor; pInfos.PlayerName = instance.GetComponent <PlayerPrefs>().PlayerName; GameManager.instance.PlayerInfo.Add(instance.name, pInfos); PlayersAlive.Add(instance.name, instance); head.position = _spawnPoints[index].position; head.rotation = Quaternion.Euler(new Vector3(0, 0, Random.Range(0, 361))); _spawnPoints.RemoveAt(index); } GameManager.instance.ArePlayerAlreadyChosen = true; } else { foreach (var pInfo in GameManager.instance.PlayerInfo.OrderBy(pair => pair.Key)) { var index = Random.Range(0, _spawnPoints.Count - 1); var instance = Instantiate(PlayerPrefab, Vector3.zero, Quaternion.identity); instance.name = pInfo.Key; instance.GetComponent <PlayerPrefs>().PlayerName = instance.name; instance.GetComponent <PlayerPrefs>().PlayerColor = pInfo.Value.PlayerColor; var head = instance.transform.FindChild("Head"); head.GetComponent <SnakeController>().Dead = true; PlayersAlive.Add(instance.name, instance); head.position = _spawnPoints[index].position; head.rotation = Quaternion.Euler(new Vector3(0, 0, Random.Range(0, 361))); _spawnPoints.RemoveAt(index); } } foreach (var player in GameManager.instance.PlayerInfo.OrderBy(pair => pair.Key)) { Debug.Log("Info sur " + player.Value.PlayerName + " : Couleur : " + player.Value.PlayerColor); } switch (GameManager.instance.NbPlayers) { case 2: GameObject.Find("ScoreP1").SetActive(true); GameObject.Find("ScoreP2").SetActive(true); GameObject.Find("ScoreP3").SetActive(false); GameObject.Find("ScoreP4").SetActive(false); break; case 3: GameObject.Find("ScoreP1").SetActive(true); GameObject.Find("ScoreP2").SetActive(true); GameObject.Find("ScoreP3").SetActive(true); GameObject.Find("ScoreP4").SetActive(false); break; case 4: GameObject.Find("ScoreP1").SetActive(true); GameObject.Find("ScoreP2").SetActive(true); GameObject.Find("ScoreP3").SetActive(true); GameObject.Find("ScoreP4").SetActive(true); break; } StartCoroutine(StartGame()); }
public void ProcessClientRequests(object argument) { string clientName = $"Client {ClientConcreteComponent.NumberOfConnectedClient}"; connectedClients.Add(ClientConcreteComponent.NumberOfConnectedClient, new ConnectedClientDecarated(new ClientConcreteComponent(((TcpClient)argument), clientName))); int clientDictrionaryKey = ClientConcreteComponent.NumberOfConnectedClient; TcpClient client = (TcpClient)argument; bool playGame = false; Random random = new Random(); int number = random.Next(1, 100); try { StreamReader reader = new StreamReader(client.GetStream()); writer = new StreamWriter(client.GetStream()); ClientList.Add(client); //Thread thread; //thread = new Thread(() => SeverSendMessage($"Connected. {clientName} ")); //thread.Start(); SeverSendMessage($"Connected. {clientName} "); var s = String.Empty; while (!(s = reader.ReadLine()).Equals("Exit") || (s == null)) { clientName = connectedClients[clientDictrionaryKey - 1].GetClientName(); s = s.Trim(); if (s == "im exit") { connectedClients.Remove(clientDictrionaryKey - 1); break; } if (CloseExistingConnectionOnCall) { break; } if (playGame && !s.Equals(null)) { try { string response = ExtensionsMethods.Game(number, Int32.Parse(s)); SeverSendMessage($"{clientName} {response}"); //thread = new Thread(() => SeverSendMessage($"{clientName} {response}")); //thread.Start(); } catch (Exception e) { } } if (s.Contains("command change name")) { ChangeClientName(clientDictrionaryKey - 1, "new client name"); Console.WriteLine("From client -> " + s); SeverSendMessage($"{clientName}: {s}"); //thread = new Thread(() => SeverSendMessage($"{clientName}: {s}")); //thread.Start(); } if (s.Contains("show info")) { s = s.Remove(0, 10).Trim(); var adapterFunctionality = new StrategyFunctionality(); s = adapterFunctionality.ComponentInformation(s); Console.WriteLine("From client -> " + s); SeverSendMessage($"{clientName}: {s}"); //thread = new Thread(() => SeverSendMessage($"{clientName}: {s}")); //thread.Start(); } else { Console.WriteLine("From client -> " + s); SeverSendMessage($"{clientName}: {s}"); //thread = new Thread(() => SeverSendMessage($"{clientName}: {s}")); //thread.Start(); } if (s == "game") { playGame = true; } } reader.Close(); writer.Close(); client.Close(); Console.WriteLine("Closing client connection!"); } catch (IOException) { Console.WriteLine("Problem with client communication. Exiting thread."); } catch (Exception) { } finally { if (client != null) { client.Close(); } } }
protected Assembly CreateAssembly(string name, string[] code) { /* * The For now we will create one assembly for onLoad code call * on memory to cache and avoid IO problems. * To allow user add references a new keyword was created * Ex: * reference System.Data.dll * reference CustomAssembly.dll * reference Custom2 * * All the *using* and *reference* have to be befora all the statement code */ var parameters = new CompilerParameters(); var final = new List <string> { "using System;", "using RiveScript;" }; parameters.GenerateInMemory = true; parameters.GenerateExecutable = false; parameters.ReferencedAssemblies.Add("System.dll");//Add basic assemblies parameters.ReferencedAssemblies.Add("System.Core.dll"); parameters.ReferencedAssemblies.Add("UnityEngine.dll"); //parameters.ReferencedAssemblies.Add ("System.CodeDom.Compiler.dll"); //Add refernce to RiveScript assembly parameters.ReferencedAssemblies.Add(riveAssembly); //Add reference to current execution assemblie if (false == ExtensionsMethods.IsNullOrWhiteSpace(currentAssembly)) { parameters.ReferencedAssemblies.Add(currentAssembly); } IndentedTextWriter w; //Find all references and usings for (int i = 0; i < code.Length; i++) { var line = code[i]; if (ExtensionsMethods.IsNullOrWhiteSpace(line)) { continue; } line = line.Trim(); if (line.StartsWith("reference")) { var ra = line.Replace("reference", "") .Replace(" ", "") .Replace(";", ""); ra = ra.EndsWith(".dll") ? ra : (ra + ".dll"); parameters.ReferencedAssemblies.Add(ra); code[i] = ""; } else if (line.StartsWith("using") && false == line.StartsWith("using (") && false == line.StartsWith("using(")) { final.Add(line); //Early add usings code[i] = ""; } } final.Add("namespace " + ns); final.Add("{"); final.Add(" public class " + name); final.Add(" {"); final.Add(" public static string method(RiveScript rs, string[] args)"); final.Add(" {"); final.AddRange(code); final.Add(" }"); final.Add(" }"); final.Add("}"); var provider = new CSharpCompiler.CodeCompiler(); var result = provider.CompileAssemblyFromSource(parameters, String.Join(Environment.NewLine, final.ToArray())); if (result.Errors.HasErrors) { var sr = ""; foreach (CompilerError error in result.Errors) { sr += string.Format("Error ({0}): {1}", error.ErrorNumber, error.ErrorText); } throw new InvalidOperationException("ERR: object " + name + " - " + sr); } return(result.CompiledAssembly); }
public void ProcessClientRequests(object argument) { var client = (TcpClient)argument; var playGame = false; var random = new Random(); var number = random.Next(1, 100); try { var reader = new StreamReader(client.GetStream()); var writer = new StreamWriter(client.GetStream()); SeverSendMessage(writer, "Connected."); string s = String.Empty; while (!(s = reader.ReadLine()).Equals("Exit") || (s == null)) { s = s.Trim(); if (CloseExistingConnectionOnCall) { break; } if (playGame && !s.Equals(null)) { try { string response = ExtensionsMethods.Game(number, Int32.Parse(s)); SeverSendMessage(writer, response); } catch (Exception e) { } } if (s.Contains("show info")) { s = s.Remove(0, 9).Trim(); var adapterFunctionality = new StrategyFunctionality(); s = adapterFunctionality.ComponentInformation(s); Console.WriteLine("From client -> " + s); SeverSendMessage(writer, s); } else { Console.WriteLine("From client -> " + s); SeverSendMessage(writer, s); } if (s == "game") { playGame = true; } } reader.Close(); writer.Close(); client.Close(); Console.WriteLine("Closing client connection!"); } catch (IOException) { Console.WriteLine("Problem with client communication. Exiting thread."); } catch (Exception exception) { Console.WriteLine(exception); } finally { if (client != null) { client.Close(); } } }