示例#1
0
        static void Main(string[] args)
        {
            Portal    port1  = new Portal("NII");
            MetaAgent agent1 = new MetaAgent("Dive1");
            MetaAgent agent2 = new MetaAgent("Dive2");
            MetaAgent agent3 = new MetaAgent("Dive3");

            port1.addAgent(agent1);
            port1.addAgent(agent2);
            port1.addAgent(agent3);
            agent1.MessageReceived += new MetaAgent.MessageReceiveHandler(al_MessageReceived);
            agent2.MessageReceived += new MetaAgent.MessageReceiveHandler(a2_MessageReceived);
            agent3.MessageReceived += new MetaAgent.MessageReceiveHandler(a3_MessageReceived);
            while (true)
            {
                Console.WriteLine("Display on agent1 \n");
                agent1.SendMessage("Dive2", Console.ReadLine());
                Console.WriteLine("Display on agent2 \n");
                agent2.SendMessage("Dive1", Console.ReadLine());
                Console.WriteLine("Display on agent3 \n");
                string mess = Console.ReadLine();
                Console.WriteLine("Display on agent1 \n");
                agent3.SendMessage("Dive1", mess);
                Console.WriteLine("Display on agent2 \n");
                agent3.SendMessage("Dive2", mess);
            }
        }
示例#2
0
 public static NetLogoObject Forward(Number o, NetLogoObject n)
 {
     if (sys.GetCurrentFrame().isAsk)
     {
         MetaAgent m = (MetaAgent)sys.Get("Agent");
         Integer   x = new Integer();
         x.val = (int)(o.val * Math.Sin(Utils.MathUtilities.DegToRad(((Number)m.properties.GetProperty("rotation")).val)));
         Integer y = new Integer();
         y.val = (int)(o.val * Math.Cos(Utils.MathUtilities.DegToRad(((Number)m.properties.GetProperty("rotation")).val)));
         x.val = m.x + x.val;
         y.val = m.y + y.val;
         if ((x.val > 0) && (x.val < 49))
         {
             m.properties.SetProperty("X", new Integer()
             {
                 value = x.value
             });
             m.x = (int)x.val;
         }
         if ((y.val > 0) && (y.val < 49))
         {
             m.properties.SetProperty("Y", new Integer()
             {
                 value = y.value
             });
             m.y = (int)y.val;
         }
     }
     return(new NetLogoObject()
     {
         ptrID = "NULLPTR"
     });
 }
示例#3
0
 public void ExecForPatch(int x, int y, TreeNode n)
 {
     if (sys.patches.GetLength(0) < x && sys.patches.GetLength(1) < y)
     {
         MetaAgent m = sys.patches[x, y];
     }
 }
示例#4
0
 /// <summary>
 /// Get a varible from an identity
 /// </summary>
 /// <param name="s"></param>
 /// <returns></returns>
 public NetLogoObject Get(string s)
 {
     if (GetCurrentFrame().param.ContainsKey(s))
     {
         return(GetCurrentFrame().param[s]);
     }
     else if (GetCurrentFrame().locals.ContainsKey(s))
     {
         return(GetCurrentFrame().locals[s]);
     }
     else if (globals.ContainsKey(s))
     {
         return(globals[s]);
     }
     if (GetCurrentFrame().isAsk)
     {
         MetaAgent m = (MetaAgent)GetCurrentFrame().param["Agent"];
         if (m.properties.GetProperty(s) != null)
         {
             return((NetLogoObject)m.properties.GetProperty(s));
         }
         else if (patches[m.x, m.y] != null)
         {
             return((NetLogoObject)patches[m.x, m.y].properties.GetProperty(s));
         }
     }
     return(null);
 }
示例#5
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="s"></param>
        /// <param name="val"></param>
        public void set(string s, NetLogoObject val)
        {
            if (GetCurrentFrame().isAsk)
            {
                MetaAgent m = (MetaAgent)GetCurrentFrame().param["Agent"];

                if (GetCurrentFrame().locals.ContainsKey(s))
                {
                    GetCurrentFrame().locals[s] = val;
                }

                else if (patches[m.x, m.y] != null && patches[m.x, m.y].properties.properties.ContainsKey(s))
                {
                    if (patches[m.x, m.y].properties.properties.ContainsKey(s))
                    {
                        patches[m.x, m.y].properties.SetProperty(s, val);
                    }
                }

                else if (m.properties.properties.ContainsKey(s))
                {
                    m.properties.SetProperty(s, val);
                }
            }
            else
            {
                GetCurrentFrame().locals[s] = val;
            }
        }
示例#6
0
        /// <summary>
        /// Returns data for ask requests
        /// </summary>
        /// <param name="breed"></param>
        /// <returns></returns>
        public List <MetaAgent> GetBreed(string breed)
        {
            List <MetaAgent> data = new List <MetaAgent>();

            if (breed == "patches")
            {
                foreach (Patch p in patches)
                {
                    data.Add(p);
                }
            }
            else if (breed == "turtles")
            {
                data.AddRange(agents.Values);
            }
            else if (breed == "neighbours")
            {
                if (GetCurrentFrame().isAsk)
                {
                    MetaAgent a = (MetaAgent)GetCurrentFrame().param["Agent"];
                    return(GetNeighbours(((Integer)a.properties.GetProperty("X")).val, ((Integer)a.properties.GetProperty("Y")).val));
                }
                else
                {
                    throw new RTException("neighbours request passed with no agent");
                }
            }
            return(data);
        }
        public static void SendRequest_AnnounceWinner(MetaAgent refereeA, MetaAgent playerA, Player currentPlayer)
        {
            string message = $"{Environment.NewLine}{Environment.NewLine} {currentPlayer.Name} Won! Congratulations! :)";

            refereeA.SendMessage(playerA.Name, message);
            playerA.MessageReceived += new MetaAgent.MessageReceivedHandler(ReceivedMessageAgent);
            Thread.Sleep(1000);
        }
        public static void SendRequest_Location(MetaAgent refereeA, MetaAgent playerA)
        {
            string message = "Choose the location: ";

            refereeA.SendMessage(playerA.Name, message);
            playerA.MessageReceived += new MetaAgent.MessageReceivedHandler(ReceivedMessageAgent);
            Thread.Sleep(1000);
        }
        protected Agents()
        {
            PortalReferee  = new Portal("referee");
            PortalPlayer   = new Portal("player");
            PortalComputer = new Portal("computer");
            AgentReferee   = new MetaAgent(" [Referee] ");
            AgentPlayer    = new MetaAgent("Player");
            AgentComputer  = new MetaAgent("Computer");

            AddingConnecting();
        }
示例#10
0
        public static NetLogoObject Rotate(Number o, NetLogoObject n)
        {
            if (sys.GetCurrentFrame().isAsk)
            {
                MetaAgent m = (MetaAgent)sys.Get("Agent");

                m.properties.SetProperty("rotation", new Number {
                    val = o.val % 360
                });
            }
            return(new NetLogoObject()
            {
                ptrID = "NULLPTR"
            });
        }
示例#11
0
        public static NetLogoObject Setxy(Number x, Number y)
        {
            if (sys.GetCurrentFrame().isAsk)
            {
                MetaAgent m = (MetaAgent)sys.Get("Agent");

                m.properties.SetProperty("X", new Integer()
                {
                    value = x.value
                });
                m.properties.SetProperty("Y", new Integer()
                {
                    value = y.value
                });
                m.x = (int)x.val;
                m.y = (int)y.val;
            }

            return(new NetLogoObject()
            {
                ptrID = "NULLPTR"
            });
        }