Exemple #1
0
        public override bool Equals(object o)
        {
            if (o != null && o is Moving)
            {
                Moving a = (Moving)o;

                return(a.m_color == m_color && a.m_to == m_to && a.m_from == m_from);
            }
            return(false);
        }
Exemple #2
0
        public static Action Readln(String[] token)
        {
            if (token[0].Equals("PLACE"))
            {
                // my opponent placed a stone
                if (token.Length != 3)
                {
                    throw new Exception();
                }
                var color = sbyte.Parse(token[1]);
                int pos   = int.Parse(token[2]);
                // create place action and play it
                return(new Placing(color, pos));
            }
            else if (token[0].Equals("MOVE"))
            {
                // my opponent moved a stone
                if (token.Length != 4)
                {
                    throw new Exception();
                }
                sbyte color = sbyte.Parse(token[1]);
                int   from  = int.Parse(token[2]);
                int   to    = int.Parse(token[3]);
                // create move action and play it
                return(new Moving(color, from, to));
            }
            else if (token[0].Equals("TAKE"))
            {
                // my opponent
                if (token.Length <= 1)
                {
                    throw new Exception();
                }
                if (token[1].Equals("PLACE"))
                {
                    // my opponent placed a stone
                    if (token.Length != 5)
                    {
                        throw new Exception();
                    }
                    sbyte color = sbyte.Parse(token[2]);
                    int   pos   = int.Parse(token[3]);
                    // create place action
                    ActionPM a = new Placing(color, pos);

                    int takepos = int.Parse(token[4]);
                    // create take and play it
                    return(new Taking(a, takepos));
                }
                else if (token[1].Equals("MOVE"))
                {
                    // my opponent moved a stone
                    if (token.Length != 6)
                    {
                        throw new Exception();
                    }
                    sbyte color = sbyte.Parse(token[2]);
                    int   from  = int.Parse(token[3]);
                    int   to    = int.Parse(token[4]);
                    // create move action
                    ActionPM a = new Moving(color, from, to);

                    int takepos = int.Parse(token[5]);
                    // create take and play it
                    return(new Taking(a, takepos));
                }
            }
            return(null);
        }