コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: PlayerManager.cs プロジェクト: Kioup/Snake-Party
    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());
    }
コード例 #3
0
        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();
                }
            }
        }
コード例 #4
0
        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);
        }
コード例 #5
0
        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();
                }
            }
        }