Ejemplo n.º 1
0
 private int SortMethod_Correctness(ScoreRank_Correctness ScoreRank_Correctness1, ScoreRank_Correctness ScoreRank_Correctness2)
 {
     return(ScoreRank_Correctness1.Score.CompareTo(ScoreRank_Correctness2.Score));
 }
Ejemplo n.º 2
0
        private void timer_Rating_Tick(object sender, EventArgs e)
        {
            Flag_Correctness  = comt.Form1.Flag_Correctness;
            Flag_Performance  = comt.Form1.Flag_Performance;
            Score_Correctness = comt.Form1.Score_Correctness;
            Score_Performance = comt.Form1.Score_Performance;
            count_Correctness_AlreadyRating = 0;//每次進來要歸零才可以讓下面的for做該次的已評分個數統計
            for (int i = 1; i <= Count_Referee; i++)
            {
                if (Flag_Correctness[i] == "1")//去統計已經有幾位評審評分了
                {
                    count_Correctness_AlreadyRating++;
                }
            }

            if (count_Correctness_AlreadyRating == Count_Referee) //若已經評分個數=裁判個數,則代表評分完畢
            {                                                     //那就翻牌
                //將所有數值填入class的陣列內,準備做排序
                for (int i = 0; i <= Count_Referee; i++)
                {
                    if (i == 0)
                    {
                        ScoreRank_Correctness_Variable[0] = new ScoreRank_Correctness("0", -1);//因為0的位置一定要放東西才能Sort,所以放一個-1給他,因為分數一定不會是負數,所以之後sort出來的陣列的位置[0]一定是最小值,也就是-1,所以我們要的真正最小值在位置[1]
                    }
                    else
                    {
                        ScoreRank_Correctness_Variable[i] = new ScoreRank_Correctness(i.ToString(), System.Convert.ToDouble(Score_Correctness[i]));
                    }
                }

                Array.Sort(ScoreRank_Correctness_Variable, SortMethod_Correctness);
                Lowest_Score_Correctness         = ScoreRank_Correctness_Variable[1].Referee; //排序完以後[0]的位置一定是-1,[1]的位置一定是最小值
                Highest_Score_Correctness        = ScoreRank_Correctness_Variable[Count_Referee].Referee;
                Double_Score_Average_Correctness = 0;                                         //初始化
                //算正當性分數平均/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                if (Count_Referee == 1)                                                       //如果只有一個人,最低分就是平均分數,ie,sort完以後的位置[1]
                {
                    Double_Score_Average_Correctness = ScoreRank_Correctness_Variable[1].Score;
                    String_Score_Average_Correctness = ScoreRank_Correctness_Variable[1].Score.ToString("0.00"); //String_Score_Average_Correctness = Lowest_Score_Correctness;
                }
                else if (Count_Referee == 2)                                                                     //如果有兩個人,就( 位置[1] +位置[2] )在除以 2
                {
                    Double_Score_Average_Correctness = ((double)((ScoreRank_Correctness_Variable[1].Score + ScoreRank_Correctness_Variable[2].Score) / 2));
                    String_Score_Average_Correctness = ((double)((ScoreRank_Correctness_Variable[1].Score + ScoreRank_Correctness_Variable[2].Score) / 2)).ToString("0.00");
                }
                else if (Count_Referee == 3)//如果有三個人,就從位置[2] 加到 位置[最高位-1] 因為要 去掉"最高" 和 "最低"(ie,位置0)
                {
                    Double_Score_Average_Correctness = ((double)((ScoreRank_Correctness_Variable[1].Score + ScoreRank_Correctness_Variable[2].Score + ScoreRank_Correctness_Variable[3].Score) / 3));
                    String_Score_Average_Correctness = ((double)((ScoreRank_Correctness_Variable[1].Score + ScoreRank_Correctness_Variable[2].Score + ScoreRank_Correctness_Variable[3].Score) / 3)).ToString("0.00");
                }
                else if (Count_Referee > 3)
                {
                    for (int i = 2; i <= (Count_Referee - 1); i++)
                    {
                        Double_Score_Average_Correctness = Double_Score_Average_Correctness + ScoreRank_Correctness_Variable[i].Score;
                    }
                    Double_Score_Average_Correctness = Double_Score_Average_Correctness / (Count_Referee - 2);
                    String_Score_Average_Correctness = Double_Score_Average_Correctness.ToString("0.00");
                }
                lb_Correctness_Score.ForeColor = Show_After;
                lb_Correctness_Score.Text      = String_Score_Average_Correctness;
                //算正當性分數平均/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////


                if (1 <= Count_Referee && count_Correctness_AlreadyRating == Count_Referee)//看有幾位評審,就翻幾個牌,因為翻1號評審,所以拿1去跟評審個數比,若不大於就翻牌
                {
                    lb_Correctness_Referee01.ForeColor = Show_After;
                    lb_Correctness_Referee01.Text      = Score_Correctness[1];
                    if (("1" == Lowest_Score_Correctness || "1" == Highest_Score_Correctness) && Count_Referee > 3)//如果最高分或最低分是"1"號評審給的,就將他反白,不予計分 且 要評審數3個以上才使用 最高最低評分機制
                    {
                        lb_Correctness_Referee01.ForeColor = Color.Red;
                    }
                }
                if (2 <= Count_Referee && count_Correctness_AlreadyRating == Count_Referee)
                {
                    lb_Correctness_Referee02.ForeColor = Show_After;
                    lb_Correctness_Referee02.Text      = Score_Correctness[2];
                    if (("2" == Lowest_Score_Correctness || "2" == Highest_Score_Correctness) && Count_Referee > 3)
                    {
                        lb_Correctness_Referee02.ForeColor = Color.Red;
                    }
                }
                if (3 <= Count_Referee && count_Correctness_AlreadyRating == Count_Referee)
                {
                    lb_Correctness_Referee03.ForeColor = Show_After;
                    lb_Correctness_Referee03.Text      = Score_Correctness[3];
                    if (("3" == Lowest_Score_Correctness || "3" == Highest_Score_Correctness) && Count_Referee > 3)
                    {
                        lb_Correctness_Referee03.ForeColor = Color.Red;
                    }
                }
                if (4 <= Count_Referee && count_Correctness_AlreadyRating == Count_Referee)
                {
                    lb_Correctness_Referee04.ForeColor = Show_After;
                    lb_Correctness_Referee04.Text      = Score_Correctness[4];
                    if (("4" == Lowest_Score_Correctness || "4" == Highest_Score_Correctness) && Count_Referee > 3)
                    {
                        lb_Correctness_Referee04.ForeColor = Color.Red;
                    }
                }
                if (5 <= Count_Referee && count_Correctness_AlreadyRating == Count_Referee)
                {
                    lb_Correctness_Referee05.ForeColor = Show_After;
                    lb_Correctness_Referee05.Text      = Score_Correctness[5];
                    if (("5" == Lowest_Score_Correctness || "5" == Highest_Score_Correctness) && Count_Referee > 3)
                    {
                        lb_Correctness_Referee05.ForeColor = Color.Red;
                    }
                }
                if (6 <= Count_Referee && count_Correctness_AlreadyRating == Count_Referee)
                {
                    lb_Correctness_Referee06.ForeColor = Show_After;
                    lb_Correctness_Referee06.Text      = Score_Correctness[6];
                    if (("6" == Lowest_Score_Correctness || "6" == Highest_Score_Correctness) && Count_Referee > 3)
                    {
                        lb_Correctness_Referee06.ForeColor = Color.Red;
                    }
                }
                if (7 <= Count_Referee && count_Correctness_AlreadyRating == Count_Referee)
                {
                    lb_Correctness_Referee07.ForeColor = Show_After;
                    lb_Correctness_Referee07.Text      = Score_Correctness[7];
                    if (("7" == Lowest_Score_Correctness || "7" == Highest_Score_Correctness) && Count_Referee >= 3)
                    {
                        lb_Correctness_Referee07.ForeColor = Color.Red;
                    }
                }
            }
            else
            {
                if (Flag_Correctness[1] == "1" && 1 <= Count_Referee)
                {
                    lb_Correctness_Referee01.ForeColor = Show_After;
                    lb_Correctness_Referee01.Text      = "OK";
                }
                if (Flag_Correctness[2] == "1" && 2 <= Count_Referee)
                {
                    lb_Correctness_Referee02.ForeColor = Show_After;
                    lb_Correctness_Referee02.Text      = "OK";
                }
                if (Flag_Correctness[3] == "1" && 3 <= Count_Referee)
                {
                    lb_Correctness_Referee03.ForeColor = Show_After;
                    lb_Correctness_Referee03.Text      = "OK";
                }
                if (Flag_Correctness[4] == "1" && 4 <= Count_Referee)
                {
                    lb_Correctness_Referee04.ForeColor = Show_After;
                    lb_Correctness_Referee04.Text      = "OK";
                }
                if (Flag_Correctness[5] == "1" && 5 <= Count_Referee)
                {
                    lb_Correctness_Referee05.ForeColor = Show_After;
                    lb_Correctness_Referee05.Text      = "OK";
                }
                if (Flag_Correctness[6] == "1" && 6 <= Count_Referee)
                {
                    lb_Correctness_Referee06.ForeColor = Show_After;
                    lb_Correctness_Referee06.Text      = "OK";
                }
                if (Flag_Correctness[7] == "1" && 7 <= Count_Referee)
                {
                    lb_Correctness_Referee07.ForeColor = Show_After;
                    lb_Correctness_Referee07.Text      = "OK";
                }
            }

            count_Performance_AlreadyRating = 0;//每次進來要歸零才可以讓下面的for做該次的已評分個數統計
            for (int i = 1; i <= Count_Referee; i++)
            {
                if (Flag_Performance[i] == "1")//去統計已經有幾位評審評分了,若已經評分個數=裁判個數,則代表評分完畢
                {
                    count_Performance_AlreadyRating++;
                }
            }

            if (count_Performance_AlreadyRating == Count_Referee) //不須正確性全完才翻牌,表現性以評分可先翻//原本if (count_Performance_AlreadyRating == Count_Referee && count_Correctness_AlreadyRating == Count_Referee)//若已經評分個數=裁判個數,則代表評分完畢//正確顯示完再顯示表現
            {                                                     //那就翻牌
                //將所有數值填入class的陣列內,準備做排序
                for (int i = 0; i <= Count_Referee; i++)
                {
                    if (i == 0)
                    {
                        ScoreRank_Performance_Variable[0] = new ScoreRank_Performance("0", -1);//因為0的位置一定要放東西才能Sort,所以放一個-1給他,因為分數一定不會是負數,所以之後sort出來的陣列的位置[0]一定是最小值,也就是-1,所以我們要的真正最小值在位置[1]
                    }
                    else
                    {
                        ScoreRank_Performance_Variable[i] = new ScoreRank_Performance(i.ToString(), System.Convert.ToDouble(Score_Performance[i]));
                    }
                }

                Array.Sort(ScoreRank_Performance_Variable, SortMethod_Performance);
                Lowest_Score_Performance  = ScoreRank_Performance_Variable[1].Referee;//排序完以後[0]的位置一定是-1,[1]的位置一定是最小值
                Highest_Score_Performance = ScoreRank_Performance_Variable[Count_Referee].Referee;

                Double_Score_Average_Performance = 0; //初始化
                //算表現性分數平均/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                if (Count_Referee == 1)               //如果只有一個人,最低分就是平均分數,ie,sort完以後的位置[1]
                {
                    Double_Score_Average_Performance = ScoreRank_Performance_Variable[1].Score;
                    String_Score_Average_Performance = Double_Score_Average_Performance.ToString("0.00"); //String_Score_Average_Performance = Lowest_Score_Performance;
                }
                else if (Count_Referee == 2)                                                              //如果有兩個人,就( 位置[1] +位置[2] )在除以 2
                {
                    Double_Score_Average_Performance = ((double)((ScoreRank_Performance_Variable[1].Score + ScoreRank_Performance_Variable[2].Score) / 2));
                    String_Score_Average_Performance = Double_Score_Average_Performance.ToString("0.00");//.ToString("0.00")代表四捨五入到小數點後面第2位
                }
                else if (Count_Referee == 3)
                {
                    Double_Score_Average_Performance = ((double)((ScoreRank_Performance_Variable[1].Score + ScoreRank_Performance_Variable[2].Score + ScoreRank_Performance_Variable[3].Score) / 3));
                    String_Score_Average_Performance = Double_Score_Average_Performance.ToString("0.00");
                }
                else if (Count_Referee > 3)//如果有三個人以上,就從位置[2] 加到 位置[最高位-1] 因為要 去掉"最高" 和 "最低"(ie,位置0)
                {
                    for (int i = 2; i <= (Count_Referee - 1); i++)
                    {
                        Double_Score_Average_Performance = Double_Score_Average_Performance + ScoreRank_Performance_Variable[i].Score;
                    }
                    Double_Score_Average_Performance = Double_Score_Average_Performance / (Count_Referee - 2);
                    String_Score_Average_Performance = Double_Score_Average_Performance.ToString("0.00");
                }
                lb_Performance_Score.ForeColor = Show_After;
                lb_Performance_Score.Text      = String_Score_Average_Performance;
                //算表現性分數平均/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

                Double_TotalScore_Correctness_Plus_Performance = Double_Score_Average_Correctness + Double_Score_Average_Performance;
                String_TotalScore_Correctness_Plus_Performance = Double_TotalScore_Correctness_Plus_Performance.ToString("0.00");

                //全部分數Data只在這裡進行寫入///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                if (Now_Pose == 1)
                {
                    comt.Form1.ImportData[6, comt.Form1.Now_Player] = String_Score_Average_Correctness;               //正當性平均分數
                    comt.Form1.ImportData[7, comt.Form1.Now_Player] = String_Score_Average_Performance;               //表現性平均分數
                    comt.Form1.ImportData[8, comt.Form1.Now_Player] = String_TotalScore_Correctness_Plus_Performance; //正當性+表現性總分
                    lb_Pose_TotalScore.ForeColor  = Show_After;
                    lb_Pose_TotalScore.Text       = String_TotalScore_Correctness_Plus_Performance;
                    timer_ForCloseWinForm.Enabled = true;
                    //IsRating = true;

                    /*
                     * Thread.Sleep(5000);
                     * this.Close();
                     */
                }
                if (Now_Pose == 2)
                {
                    comt.Form1.ImportData[9, comt.Form1.Now_Player]  = String_Score_Average_Correctness;               //正當性平均分數
                    comt.Form1.ImportData[10, comt.Form1.Now_Player] = String_Score_Average_Performance;               //表現性平均分數
                    comt.Form1.ImportData[11, comt.Form1.Now_Player] = String_TotalScore_Correctness_Plus_Performance; //正當性+表現性總分
                    lb_Pose_TotalScore.ForeColor  = Show_After;
                    lb_Pose_TotalScore.Text       = String_TotalScore_Correctness_Plus_Performance;
                    timer_ForCloseWinForm.Enabled = true;
                    //IsRating = true;

                    /*
                     * Thread.Sleep(5000);
                     * this.Close();
                     */
                }
                //全部分數Data只在這裡進行寫入///////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
                if (1 <= Count_Referee && count_Performance_AlreadyRating == Count_Referee)//看有幾位評審,就翻幾個牌,因為翻1號評審,所以拿1去跟評審個數比,若不大於就翻牌
                {
                    lb_Performance_Referee01.ForeColor = Show_After;
                    lb_Performance_Referee01.Text      = Score_Performance[1];
                    if (("1" == Lowest_Score_Performance || "1" == Highest_Score_Performance) && Count_Referee > 3)//如果最高分或最低分是"1"號評審給的,就將他反白,不予計分 且 要評審數3個以上才使用 最高最低評分機制
                    {
                        lb_Performance_Referee01.ForeColor = Color.Red;
                    }
                }
                if (2 <= Count_Referee && count_Performance_AlreadyRating == Count_Referee)
                {
                    lb_Performance_Referee02.ForeColor = Show_After;
                    lb_Performance_Referee02.Text      = Score_Performance[2];
                    if (("2" == Lowest_Score_Performance || "2" == Highest_Score_Performance) && Count_Referee > 3)//如果最高分或最低分是"1"號評審給的,就將他反白,不予計分 且 要評審數3個以上才使用 最高最低評分機制
                    {
                        lb_Performance_Referee02.ForeColor = Color.Red;
                    }
                }
                if (3 <= Count_Referee && count_Performance_AlreadyRating == Count_Referee)
                {
                    lb_Performance_Referee03.ForeColor = Show_After;
                    lb_Performance_Referee03.Text      = Score_Performance[3];
                    if (("3" == Lowest_Score_Performance || "3" == Highest_Score_Performance) && Count_Referee > 3)//如果最高分或最低分是"1"號評審給的,就將他反白,不予計分 且 要評審數3個以上才使用 最高最低評分機制
                    {
                        lb_Performance_Referee03.ForeColor = Color.Red;
                    }
                }
                if (4 <= Count_Referee && count_Performance_AlreadyRating == Count_Referee)
                {
                    lb_Performance_Referee04.ForeColor = Show_After;
                    lb_Performance_Referee04.Text      = Score_Performance[4];
                    if (("4" == Lowest_Score_Performance || "4" == Highest_Score_Performance) && Count_Referee > 3)//如果最高分或最低分是"1"號評審給的,就將他反白,不予計分 且 要評審數3個以上才使用 最高最低評分機制
                    {
                        lb_Performance_Referee04.ForeColor = Color.Red;
                    }
                }
                if (5 <= Count_Referee && count_Performance_AlreadyRating == Count_Referee)
                {
                    lb_Performance_Referee05.ForeColor = Show_After;
                    lb_Performance_Referee05.Text      = Score_Performance[5];
                    if (("5" == Lowest_Score_Performance || "5" == Highest_Score_Performance) && Count_Referee > 3)//如果最高分或最低分是"1"號評審給的,就將他反白,不予計分 且 要評審數3個以上才使用 最高最低評分機制
                    {
                        lb_Performance_Referee05.ForeColor = Color.Red;
                    }
                }
                if (6 <= Count_Referee && count_Performance_AlreadyRating == Count_Referee)
                {
                    lb_Performance_Referee06.ForeColor = Show_After;
                    lb_Performance_Referee06.Text      = Score_Performance[6];
                    if (("6" == Lowest_Score_Performance || "6" == Highest_Score_Performance) && Count_Referee > 3)//如果最高分或最低分是"1"號評審給的,就將他反白,不予計分 且 要評審數3個以上才使用 最高最低評分機制
                    {
                        lb_Performance_Referee06.ForeColor = Color.Red;
                    }
                }
                if (7 <= Count_Referee && count_Performance_AlreadyRating == Count_Referee)
                {
                    lb_Performance_Referee07.ForeColor = Show_After;
                    lb_Performance_Referee07.Text      = Score_Performance[7];
                    if (("7" == Lowest_Score_Performance || "7" == Highest_Score_Performance) && Count_Referee > 3)//如果最高分或最低分是"1"號評審給的,就將他反白,不予計分 且 要評審數3個以上才使用 最高最低評分機制
                    {
                        lb_Performance_Referee07.ForeColor = Color.Red;
                    }
                }
            }
            else
            {
                //if (count_Correctness_AlreadyRating == Count_Referee)//正確顯示完再顯示表現
                //{
                if (Flag_Performance[1] == "1" && 1 <= Count_Referee)
                {
                    lb_Performance_Referee01.ForeColor = Show_After;
                    lb_Performance_Referee01.Text      = "OK";
                }
                if (Flag_Performance[2] == "1" && 2 <= Count_Referee)
                {
                    lb_Performance_Referee02.ForeColor = Show_After;
                    lb_Performance_Referee02.Text      = "OK";
                }
                if (Flag_Performance[3] == "1" && 3 <= Count_Referee)
                {
                    lb_Performance_Referee03.ForeColor = Show_After;
                    lb_Performance_Referee03.Text      = "OK";
                }
                if (Flag_Performance[4] == "1" && 4 <= Count_Referee)
                {
                    lb_Performance_Referee04.ForeColor = Show_After;
                    lb_Performance_Referee04.Text      = "OK";
                }
                if (Flag_Performance[5] == "1" && 5 <= Count_Referee)
                {
                    lb_Performance_Referee05.ForeColor = Show_After;
                    lb_Performance_Referee05.Text      = "OK";
                }
                if (Flag_Performance[6] == "1" && 6 <= Count_Referee)
                {
                    lb_Performance_Referee06.ForeColor = Show_After;
                    lb_Performance_Referee06.Text      = "OK";
                }
                if (Flag_Performance[7] == "1" && 7 <= Count_Referee)
                {
                    lb_Performance_Referee07.ForeColor = Show_After;
                    lb_Performance_Referee07.Text      = "OK";
                }
                //}
            }
        }