Example #1
0
        public bool onAnswer(string token, Answer answer)
        {
            string[] answers = answer.Ans;
            int[][] stones = this.problem.Stones;

            Board.Board board = null;
            if (textBox2.Text == token)
                board = board1;
            if (textBox3.Text == token)
                board = board2;
            if (textBox4.Text == token)
                board = board3;
            if (textBox5.Text == token)
                board = board4;
            if (board == null)
                return false;

            board.reset();
            bool flg = ((answers.Length -1 )== stones.Length);
            for (int i = 0; (i < stones.Length && flg); i++)
            {
                if (String.IsNullOrEmpty(answers[i]))
                    continue;

                string[] info = answers[i].Split(' ');
                if (info[2] == "H" || info[2] == "T")
                {
                    Console.WriteLine("OKUYO");
                    flg = board.place(stones[i], info[2] == "H", int.Parse(info[3]), int.Parse(info[0]), int.Parse(info[1]));
                }
                else
                {
                    flg = false;
                }
            }

            board.Time = DateTime.Now - this.stime;
            board.Pass = flg;
            return flg;
        }
Example #2
0
        public void callback(IAsyncResult result)
        {
            HttpListener listener = (HttpListener)result.AsyncState;

            if (!listener.IsListening)
            {
                return;
            }

            HttpListenerContext  context = listener.EndGetContext(result);
            HttpListenerRequest  req     = context.Request;
            HttpListenerResponse res     = context.Response;

            StreamWriter sw = new StreamWriter(res.OutputStream);

            res.StatusCode = 200;

            if (!playing)
            {
                sw.Write("HAHAHA");
                res.StatusCode = 404;
            }
            else if (req.HttpMethod == "POST" && req.Url.LocalPath == "/answer")
            {
                StreamReader reader = new StreamReader(req.InputStream);
                string       str    = reader.ReadToEnd();
                reader.Close();

                System.Collections.Specialized.NameValueCollection qs = HttpUtility.ParseQueryString(str);
                Answer ans = new Answer(qs["ans"]);
                if (ans != null && !String.IsNullOrEmpty(qs["token"]) && Array.IndexOf(this.tokens, qs["token"]) != -1 && this.ansCallback.onAnswer(qs["token"], ans))
                {
                    sw.Write("Accept");
                }
                else
                {
                    sw.Write("Invalid");
                    res.StatusCode = 403;
                }
            }
            else if (req.HttpMethod == "GET" && req.Url.LocalPath == "/quest" + this.id + ".txt")
            {
                if (!String.IsNullOrEmpty(req.QueryString["token"]) && Array.IndexOf(this.tokens, req.QueryString["token"]) != -1)
                {
                    sw.Write(problem);
                }
                else
                {
                    sw.Write("Invalid");
                    res.StatusCode = 403;
                }
            }
            else if (req.HttpMethod == "GET" && req.Url.LocalPath == "/form")
            {
                sw.Write("<!DOCTYPE html><html lang=\"ja\"><head><meta charset=\"UTF-8\" /><title>SubmitForm</title></head><body><form method=\"post\" action=\"/answer\">Token : <input type=\"text\" name=\"token\" /><br /><hr />AnswerText :<br /><textarea name=\"ans\" cols=\"75\" rows=\"20\"></textarea><br /><input type=\"submit\" /></form></body></html>");
            }
            else
            {
                sw.Write("HA?");
                res.StatusCode = 404;
            }
            sw.Flush();
            res.Close();

            this.listener.BeginGetContext(this.callback, this.listener);
        }
Example #3
0
        public void callback(IAsyncResult result)
        {
            HttpListener listener = (HttpListener)result.AsyncState;
            if (!listener.IsListening)
                return;

            HttpListenerContext context = listener.EndGetContext(result);
            HttpListenerRequest req = context.Request;
            HttpListenerResponse res = context.Response;

            StreamWriter sw = new StreamWriter(res.OutputStream);
            res.StatusCode = 200;

            if (!playing)
            {
                sw.Write("HAHAHA");
                res.StatusCode = 404;
            }
            else if (req.HttpMethod == "POST" && req.Url.LocalPath == "/answer")
            {
                StreamReader reader = new StreamReader(req.InputStream);
                string str = reader.ReadToEnd();
                reader.Close();

                System.Collections.Specialized.NameValueCollection qs = HttpUtility.ParseQueryString(str);
                Answer ans = new Answer(qs["ans"]);
                if (ans != null && !String.IsNullOrEmpty(qs["token"]) && Array.IndexOf(this.tokens, qs["token"]) != -1 && this.ansCallback.onAnswer(qs["token"], ans))
                {
                    sw.Write("Accept");
                }
                else
                {
                    sw.Write("Invalid");
                    res.StatusCode = 403;
                }
            }
            else if (req.HttpMethod == "GET" && req.Url.LocalPath == "/quest" + this.id + ".txt")
            {
                if (!String.IsNullOrEmpty(req.QueryString["token"]) && Array.IndexOf(this.tokens, req.QueryString["token"]) != -1)
                {
                    sw.Write(problem);
                }
                else
                {
                    sw.Write("Invalid");
                    res.StatusCode = 403;
                }
            }
            else if (req.HttpMethod == "GET" && req.Url.LocalPath == "/form")
            {
                sw.Write("<!DOCTYPE html><html lang=\"ja\"><head><meta charset=\"UTF-8\" /><title>SubmitForm</title></head><body><form method=\"post\" action=\"/answer\">Token : <input type=\"text\" name=\"token\" /><br /><hr />AnswerText :<br /><textarea name=\"ans\" cols=\"75\" rows=\"20\"></textarea><br /><input type=\"submit\" /></form></body></html>");
            }
            else
            {
                sw.Write("HA?");
                res.StatusCode = 404;
            }
            sw.Flush();
            res.Close();

            this.listener.BeginGetContext(this.callback, this.listener);
        }