public void ChangeQuestion(Question q)
        {
            string query = "UPDATE Question SET QuestionContext='" + q.content + "', AnswerA='" + q.a + "', AnswerB='" + q.b
                + "', AnswerC='" + q.c + "', AnswerD='" + q.d + "', CorrectAnswer='" + q.answer + "' WHERE QuestionID=" + q.number + ";";

            this.InsertIntoDB(query);
        }
Example #2
0
        // static method for the deserialization from byte array to a Question
        public static Question Deserialize(byte[] buffer)
        {
            Question que = new Question();

            Stream strm = new MemoryStream(buffer);

            IFormatter frr = new BinaryFormatter();

            que = (Question)frr.Deserialize(strm);

            return que;
        }
Example #3
0
        // static method for serialization from the Question to the byte array
        public static byte[] Serialize(Question quest)
        {
            IFormatter formatter = new BinaryFormatter();
            Stream stream = new MemoryStream();

            formatter.Serialize(stream, quest);

            byte[] buffer = ((MemoryStream)stream).ToArray();

            return buffer;
        }
Example #4
0
        private void button1_Click(object sender, EventArgs e)
        {
            //list of the users
            List<User> listOfUser = new List<User>();
            //a questions
            Question q = new Question();
            GameCounter.Enabled = false;
            string answer = "";
            //increase question count
            questionCount++;
            //check to see if a, b, c, d checked
            if (QuestionA.Checked == true)
            {
                answer = "a";
            }
            else if (QuestionB.Checked == true)
            {
                answer = "b";
            }
            else if (QuestionC.Checked == true)
            {
                answer = "c";
            }
            else if (QuestionD.Checked == true)
            {
                answer = "d";
            }
            else
            {
                answer = "";
            }

            q.answer = answer;
            q.time = seconds;
            seconds = 0;
            this.myConnectionToServer.Send("!answer");
            this.myConnectionToServer.Read();
            this.myConnectionToServer.Send(Question.Serialize(q));
            //if question count is 11 which is 10
            if (questionCount == 11)
            {
                //disable everything
                QuestionA.Checked = false;
                QuestionB.Checked = false;
                QuestionC.Checked = false;
                QuestionD.Checked = false;
                QuestionGroupBox.Enabled = false;
                //get leaderboard
                this.myConnectionToServer.Send("!leaderboard");
                //iterate through it to put it in a list
                while (true)
                {
                    User newUser = User.Deserialize(myConnectionToServer.ReadObject());
                    if (newUser.name == "")
                    {
                        break;
                    }
                    else
                    {
                        listOfUser.Add(newUser);
                        myConnectionToServer.Send("!ok");
                    }

                }
                DisplayLeaderboard.AppendText("---- LeaderBoard ----\n");
                //display leaderboard
                foreach (User element in listOfUser)
                {
                    DisplayLeaderboard.AppendText(element.name + "||" + element.totalPoints.ToString() + "\n");
                }
                NextButton.Enabled = false;
                //get all answer to the questions
                this.myConnectionToServer.Send("!allQuestions");
                //save it in the list
                List<Question> qList = new List<Question>();
                while (true)
                {
                    Question newQuestion = Question.Deserialize(myConnectionToServer.ReadObject());

                    if (newQuestion.content == "")
                    {
                        break;
                    }
                    else
                    {
                        qList.Add(newQuestion);
                        myConnectionToServer.Send("!ok");
                    }
                }
                int numberCount = 0;
                //display all of the question
                foreach (Question element in qList)
                {
                    numberCount++;
                    Questions.AppendText("Question :" + numberCount.ToString() + " " + element.content + " Answer: " + element.answer + "\n");
                    //.AppendText(element. + "||" + element.totalPoints.ToString() + "\n");
                }

            }
            else
            {
                System.Threading.Thread.Sleep(120);

                this.myConnectionToServer.Send("!question" + questionCount);

                byte[] buffer = this.myConnectionToServer.ReadObject();
                Question quest = Question.Deserialize(buffer);
                //display all of the question
                lbQuestion.Text = "[" + questionCount.ToString() + "] " + quest.content;
                QuestionA.Text = "A) " + quest.a;
                QuestionB.Text = "B) " + quest.b;
                QuestionC.Text = "C) " + quest.c;
                QuestionD.Text = "D) " + quest.d;

                GameCounter.Enabled = true;
                QuestionGroupBox.Enabled = true;
            }
        }
        public Question GetQuestion(int questionNumber)
        {
            Question q = new Question();

            string query = "SELECT * FROM Question WHERE QuestionID=" + questionNumber + ";";

            this.command.CommandText = query;
            if (this.connection.State != System.Data.ConnectionState.Open)
            {
                this.connection.Open();
            }
            this.reader = this.command.ExecuteReader();
            while (this.reader.Read())
            {
                q.number = Convert.ToInt32(this.reader["QuestionID"]);
                q.content = this.reader["QuestionContext"].ToString();
                q.a = this.reader["AnswerA"].ToString();
                q.b = this.reader["AnswerB"].ToString();
                q.c = this.reader["AnswerC"].ToString();
                q.d = this.reader["AnswerD"].ToString();
                q.answer = this.reader["CorrectAnswer"].ToString();
            }

            if (this.connection.State == System.Data.ConnectionState.Open)
            {
                this.connection.Close();
            }

            return q;
        }
        public List<Question> GetAllQuestions()
        {
            List<Question> list = new List<Question>();

            string query = "SELECT QuestionID, QuestionContext, AnswerA, AnswerB, AnswerC, AnswerD, CorrectAnswer FROM Question;";

            this.command.CommandText = query;
            this.connection.Open();
            this.reader = this.command.ExecuteReader();
            while (this.reader.Read())
            {
                Question q = new Question();
                q.number = Convert.ToInt32(this.reader["QuestionID"]);
                q.content = this.reader["QuestionContext"].ToString();
                q.a = this.reader["AnswerA"].ToString();
                q.b = this.reader["AnswerB"].ToString();
                q.c = this.reader["AnswerC"].ToString();
                q.d = this.reader["AnswerD"].ToString();
                q.answer = this.reader["CorrectAnswer"].ToString();

                list.Add(q);
            }

            if (this.connection.State == System.Data.ConnectionState.Open)
            {
                this.connection.Close();
            }

            return list;
        }
Example #7
0
        private void UserInteraction(object usr)
        {
            User user = (User)usr;

            string message = "";

            while (true)
            {
                try
                {
                    message = this.connector.Read(user.socket);
                }
                catch (Exception e)
                {
                    Logging.LogEvent("UserInteraction", e.Message);
                    break;
                }

                Logging.LogEvent("UserInteraction", "User #" + user.id + " said -> " + message);

                if (message == "")
                {
                    int count = 1;
                    while (true)
                    {
                        string nMessage = connector.Read(user.socket);
                        if (nMessage == "")
                        {
                            count++;
                        }
                        else
                        {
                            break;
                        }
                        if (count > 20)
                        {
                            message = TCPIPconnector.kClientLeft;
                            break;
                        }
                    }
                }

                if (message == "!admin")
                {
                    TriviaLib.User admin = new TriviaLib.User();

                    try
                    {
                        this.connector.Send("!ok", user.socket);
                        admin = TriviaLib.User.Deserialize(this.connector.ReadObject(user.socket));
                    }
                    catch (Exception e)
                    {
                        Logging.LogEvent("UserInteraction", e.Message);
                        break;
                    }

                    try
                    {
                        if (this.DBConnector.ValidateAdmin(admin))
                        {
                            try
                            {
                                this.connector.Send("!ok", user.socket);
                            }
                            catch (Exception e)
                            {
                                Logging.LogEvent("UserInteraction", e.Message);
                                break;
                            }
                            user.name = admin.name;
                            this.AdminInteraction(user);
                            break;
                        }
                        else
                        {
                            try
                            {
                                this.connector.Send("!error", user.socket);
                            }
                            catch (Exception e)
                            {
                                Logging.LogEvent("UserInteraction", e.Message);
                                break;
                            }
                        }
                    }
                    catch (Exception e)
                    {
                        Logging.LogEvent("UserInteraction", e.Message);
                        break;
                    }
                }

                if (message == "!answer")
                {
                    byte[] buffer = null;
                    try
                    {
                        this.connector.Send("!ok", user.socket);

                        buffer = this.connector.ReadObject(user.socket);
                    }
                    catch (Exception e)
                    {
                        Logging.LogEvent("UserInteraction", e.Message);
                        break;
                    }

                    if (buffer != null)
                    {
                        Question quest = Question.Deserialize(buffer);

                        quest.number = user.currentQuestion;

                        Question tmp = null;
                        try
                        {
                            tmp = this.DBConnector.GetQuestion(quest.number);
                        }
                        catch (Exception e)
                        {
                            Logging.LogEvent("UserInteraction", e.Message);
                            break;
                        }

                        if (tmp.answer != quest.answer)
                        {
                            quest.time = 0;
                        }
                        else
                        {
                            quest.time = 20 - quest.time;
                            user.totalScore += quest.time;
                        }

                        try
                        {
                            this.mutex.WaitOne();
                            this.mutex.Reset();
                            this.DBConnector.AddUserAnswer(TriviaServer.answerID, user.id, quest.number, quest.answer, quest.time);
                            TriviaServer.answerID++;
                            this.mutex.Set();
                        }
                        catch (Exception e)
                        {
                            Logging.LogEvent("UserInteraction", e.Message);
                            break;
                        }
                    }
                }

                if (message == "!leaderboard")
                {
                    List<TriviaLib.User> list = null;
                    try
                    {
                        list = this.DBConnector.GetLeaderBoard();
                    }
                    catch (Exception e)
                    {
                        Logging.LogEvent("UserInteraction", e.Message);
                        break;
                    }

                    try
                    {
                        for (int counter = 0; counter < list.Count; counter++)
                        {
                            this.connector.Send(TriviaLib.User.Serialize(list[counter]), user.socket);
                            this.connector.Read(user.socket);
                        }
                        this.connector.Send(TriviaLib.User.Serialize(new TriviaLib.User()), user.socket);
                    }
                    catch (Exception e)
                    {
                        Logging.LogEvent("UserInteraction", e.Message);
                        break;
                    }
                }

                if (message == "!score")
                {
                    try
                    {
                        this.connector.Send(user.totalScore.ToString(), user.socket);
                    }
                    catch (Exception e)
                    {
                        Logging.LogEvent("UserInteraction", e.Message);
                        break;
                    }
                }

                if (message == "!newUser")
                {
                    byte[] buffer = null;
                    try
                    {
                        this.connector.Send("!ok", user.socket);
                        buffer = this.connector.ReadObject(user.socket);
                    }
                    catch (Exception e)
                    {
                        Logging.LogEvent("UserInteraction", e.Message);
                        break;
                    }
                    if (buffer != null)
                    {
                        TriviaLib.User nUser = TriviaLib.User.Deserialize(buffer);

                        try
                        {
                            user.id = this.DBConnector.AddNewUser(nUser);
                        }
                        catch (Exception e)
                        {
                            Logging.LogEvent("UserInteraction", e.Message);
                            break;
                        }

                        user.name = nUser.name;
                    }
                }

                if (message == "!allQuestions")
                {
                    List<Question> list = null;

                    try
                    {
                        list = this.DBConnector.GetAllQuestions();
                    }
                    catch (Exception e)
                    {
                        Logging.LogEvent("UserInteraction", e.Message);
                        break;
                    }

                    try
                    {
                        for (int counter = 0; counter < list.Count; counter++)
                        {
                            this.connector.Send(TriviaLib.Question.Serialize(list[counter]), user.socket);
                            this.connector.Read(user.socket);
                        }
                        this.connector.Send(TriviaLib.Question.Serialize(new TriviaLib.Question()), user.socket);
                    }
                    catch (Exception e)
                    {
                        Logging.LogEvent("UserInteraction", e.Message);
                        break;
                    }
                }

                if (message.Length > 9)
                {
                    if ((message.Substring(0, 9) == "!question") && (message.Length > 9))
                    {
                        int qId = Convert.ToInt32(message.Substring(9));

                        if (qId < 11)
                        {

                            Question q = null;
                            try
                            {
                                q = this.DBConnector.GetQuestion(qId);
                            }
                            catch (Exception e)
                            {
                                Logging.LogEvent("UserInteraction", e.Message);
                                break;
                            }
                            q.answer = "";
                            user.currentQuestion = qId;

                            byte[] buffer = Question.Serialize(q);

                            try
                            {
                                this.connector.Send(buffer, user.socket);
                            }
                            catch (Exception e)
                            {
                                Logging.LogEvent("UserInteraction", e.Message);
                                break;
                            }
                        }
                        else
                        {
                            Question q = new Question();

                            byte[] buffer = Question.Serialize(q);

                            try
                            {
                                this.connector.Send(buffer, user.socket);
                            }
                            catch (Exception e)
                            {
                                Logging.LogEvent("UserInteraction", e.Message);
                                break;
                            }
                        }
                    }
                }

                if (message == TCPIPconnector.kClientLeft)
                {
                    Logging.LogEvent("UserInteraction", "Client #" + user.id + " left");
                    break;
                }
            }

            this.userList.Remove(user);

            user.socket.Close();
        }
Example #8
0
        private void AdminInteraction(User admin)
        {
            string message = "";

            while (true)
            {
                try
                {
                    message = this.connector.Read(admin.socket);
                }
                catch (Exception e)
                {
                    Logging.LogEvent("AdminInteraction", e.Message);
                    break;
                }

                Logging.LogEvent("AdminInteraction", "User #" + admin.id + " said -> " + message);

                if (message == "")
                {
                    int count = 1;
                    while (true)
                    {
                        string nMessage = connector.Read(admin.socket);
                        if (nMessage == "")
                        {
                            count++;
                        }
                        else
                        {
                            break;
                        }
                        if (count > 20)
                        {
                            message = TCPIPconnector.kClientLeft;
                            break;
                        }
                    }
                }

                if (message == "!leaderboard")
                {
                    List<TriviaLib.User> list = null;

                    try
                    {
                        list = this.DBConnector.GetLeaderBoard();
                    }
                    catch (Exception e)
                    {
                        Logging.LogEvent("AdminInteraction", e.Message);
                        break;
                    }

                    try
                    {
                        for (int counter = 0; counter < list.Count; counter++)
                        {
                            this.connector.Send(TriviaLib.User.Serialize(list[counter]), admin.socket);
                            this.connector.Read(admin.socket);
                        }
                        this.connector.Send(TriviaLib.User.Serialize(new TriviaLib.User()), admin.socket);
                    }
                    catch (Exception e)
                    {
                        Logging.LogEvent("AdminInteraction", e.Message);
                        break;
                    }
                }

                if (message == "!data")
                {
                    List<AdminQuestion> list;

                    if (TriviaServer.answerID > 1)
                    {
                        try
                        {
                            list = this.DBConnector.GetAdminStats();

                            if (list.Count < 10)
                            {
                                for (int i = list[(list.Count - 1)].number; i < 10; i++)
                                {
                                    AdminQuestion q = new AdminQuestion();
                                    q.number = i + 1;
                                    q.content = this.DBConnector.GetQuestion(i + 1).content;
                                    q.avgTime = 0;
                                    q.answered = 0;

                                    list.Add(q);
                                }
                            }
                        }
                        catch(Exception e)
                        {
                            Logging.LogEvent("AdminInteraction", e.Message);
                            break;
                        }
                    }
                    else
                    {
                        list = new List<AdminQuestion>();
                    }

                    try
                    {
                        for (int counter = 0; counter < list.Count; counter++)
                        {
                            list[counter].answered = list[counter].answered * 100;
                            this.connector.Send(AdminQuestion.Serialize(list[counter]), admin.socket);
                            this.connector.Read(admin.socket);
                        }
                        this.connector.Send(AdminQuestion.Serialize(new AdminQuestion()), admin.socket);
                    }
                    catch (Exception e)
                    {
                        Logging.LogEvent("AdminInteraction", e.Message);
                        break;
                    }
                }

                if (message.Length > 5)
                {
                    if ((message.Substring(0, 5) == "!edit") && (message.Length > 5))
                    {
                        int qId = Convert.ToInt32(message.Substring(5));

                        if (qId < 11)
                        {
                            Question q = new Question();
                            try
                            {
                                q = this.DBConnector.GetQuestion(qId);
                            }
                            catch (Exception e)
                            {
                                Logging.LogEvent("AdminInteraction", e.Message);
                                break;
                            }

                            byte[] buffer = Question.Serialize(q);
                            Question newQuestion = new Question();

                            try
                            {
                                this.connector.Send(buffer, admin.socket);

                                newQuestion = Question.Deserialize(this.connector.ReadObject(admin.socket));
                            }
                            catch (Exception e)
                            {
                                Logging.LogEvent("AdminInteraction", e.Message);
                                break;
                            }

                            if ((q.content != newQuestion.content)
                                    || (q.answer != newQuestion.answer)
                                    || (q.a != newQuestion.a)
                                    || (q.b != newQuestion.b)
                                    || (q.c != newQuestion.c)
                                    || (q.d != newQuestion.d))
                            {
                                newQuestion.number = q.number;
                                try
                                {
                                    this.DBConnector.ChangeQuestion(newQuestion);
                                }
                                catch (Exception e)
                                {
                                    Logging.LogEvent("AdminInteraction", e.Message);
                                    break;
                                }
                            }
                        }
                        else
                        {
                            Question q = new Question();

                            byte[] buffer = Question.Serialize(q);

                            try
                            {
                                this.connector.Send(buffer, admin.socket);
                            }
                            catch (Exception e)
                            {
                                Logging.LogEvent("AdminInteraction", e.Message);
                                break;
                            }
                        }
                    }
                }

                if (message == "!live")
                {
                    try
                    {
                        for (int counter = 0; counter < this.userList.Count; counter++)
                        {
                            TriviaLib.User u = new TriviaLib.User();
                            u.name = this.userList[counter].name;
                            u.currentQuestion = this.userList[counter].currentQuestion;
                            u.totalPoints = this.userList[counter].totalScore;

                            this.connector.Send(TriviaLib.User.Serialize(u), admin.socket);
                            this.connector.Read(admin.socket);
                        }
                        this.connector.Send(TriviaLib.User.Serialize(new TriviaLib.User()), admin.socket);
                    }
                    catch (Exception e)
                    {
                        Logging.LogEvent("AdminInteraction", e.Message);
                        break;
                    }
                }

                if (message == TCPIPconnector.kClientLeft)
                {
                    Logging.LogEvent("AdminInteraction", "Client #" + admin.id + " left");
                    break;
                }
            }
        }