private void timer1_Tick_1(object sender, EventArgs e) { foreach (var player in players.PlayerList) { if (!player.IsAlive) { continue; } player.Move(BattleField); } foreach (var player1 in players.PlayerList) { if (!player1.IsAlive) { player1.UpdateColor(BattleField); continue; } foreach (var mountain in mountains) { player1.CollapsedMountain(mountain); while (player1.Polygon.IsCover(mountain.Polygon)) { player1.Move(BattleField); } } foreach (var river in rivers) { player1.CollapsedRiver(river); } foreach (var clinic in clinics) { player1.CollapseClinic(clinic); } foreach (var pit in pits) { player1.CollapsedPit(pit, pits); } } if (proprieter != null && proprieter.IsAlive) { proprieter.FingerGame(players.PlayerList); foreach (var player2 in players.PlayerList) { if (proprieter != player2 && player2.Polygon.IsCover(proprieter.Polygon)) { proprieter.Settle(TimeInSecond); player2.Settle(TimeInSecond); player2.UpdateColor(BattleField); } } } if (egg != null && egg.IsAlive) { foreach (var player2 in players.PlayerList) { if (player2 != egg && player2.IsAlive && !egg.IsInEarth) { egg.GetIntoEarth(player2); if (egg.HitPoint > 0) { egg.Settle(TimeInSecond); } } } } if (ozone != null && ozone.IsAlive) { foreach (var player2 in players.PlayerList) { if (player2 != ozone && player2.IsAlive) { ozone.Radius(player2); player2.Settle(TimeInSecond); } } } foreach (var player1 in players.PlayerList) { foreach (var player2 in players.PlayerList) { if (player1 == proprieter) { player1.Settle(TimeInSecond); continue; } else { if (player1 != player2 && player2 != proprieter && player2.IsAlive && player1.IsAlive) { player1.Battle(player2, killOptions, TeamNumber); player1.Settle(TimeInSecond); player2.Settle(TimeInSecond); } } } } playerRemained.Text = Player.PlayerRemainedNumber.ToString(); switch (TeamNumber.Value) { case 0: if (Player.PlayerRemainedNumber <= 1 && isStarted) { Result.Rows.Clear(); players.PlayerList.Sort(); players.PlayerList[0].SurvivalTime = TimeInSecond; players.PlayerList[0].SurvivalRank = 1; foreach (var player in players.PlayerList) { Result.Rows.Add(player.ShowInfo()); } FinishUp(); } break; case 1: bool isFinish = isStarted && ((proprieter == null) || (proprieter != null && !proprieter.IsAlive)) && ((egg == null) || (egg != null && !egg.IsAlive)) && ((elf == null) || (elf != null && !elf.IsAlive)) && ((hat == null) || (hat != null && !hat.IsAlive)) && ((ozone == null) || (ozone != null && !ozone.IsAlive)); if (isFinish) { Result.Rows.Clear(); players.PlayerList.Sort(); foreach (var player in players.PlayerList) { if (player.IsAlive) { player.SurvivalTime = TimeInSecond; player.SurvivalRank = 1; } Result.Rows.Add(player.ShowInfo()); } FinishUp(); } break; default: int teamWin; var teamTemp = from p in players.PlayerList where p.IsAlive && p.IsPlayer select p.Team; Dictionary <int, int> dic = new Dictionary <int, int>(); if (teamTemp.Count() > 0) { foreach (var val in teamTemp) { //若字典中不存在该元素,则将该元素加入字典中 if (!dic.ContainsKey(val)) { dic.Add(val, 1); } else //若字典中存在该元素,则统计该元素在数组中出现的次数 { dic[val] += 1; } } if (dic.Count == 1) { //foreach (var key in dic.Keys) //{ // teamWin = dic[key]; // break; //} Result.Rows.Clear(); players.PlayerList.Sort(); foreach (var player in players.PlayerList) { if (player.IsAlive) { player.SurvivalTime = TimeInSecond; player.SurvivalRank = 1; } Result.Rows.Add(player.ShowInfo()); } FinishUp(); } } else { Result.Rows.Clear(); foreach (var player in players.PlayerList) { if (player.IsAlive) { player.SurvivalTime = TimeInSecond; player.SurvivalRank = 1; } Result.Rows.Add(player.ShowInfo()); } FinishUp(); } break; } }