private int SortMethod_Correctness(ScoreRank_Correctness ScoreRank_Correctness1, ScoreRank_Correctness ScoreRank_Correctness2) { return(ScoreRank_Correctness1.Score.CompareTo(ScoreRank_Correctness2.Score)); }
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"; } //} } }