public string StartArena(string black, string white, int rate, float min, float max) { Keys.Instance.Begin("X"); DNAPlayer blackPlayer = Utility.CreateDNAPlayer(black); DNAPlayer whitePlayer = Utility.CreateDNAPlayer(white); int performance = 0; _rule.Clear(); _rule.SetChessPlayers(blackPlayer, whitePlayer); Messager.Instance.SendMessageLater(MessageKey.Restart, new ChessPlayer[] { blackPlayer, whitePlayer }); ChessMove blackMove = StartOneChess(); if (blackMove.Side == 棋子.黑子) { performance++; } else if (blackMove.Side == 棋子.白子) { performance -= 2; } else { performance--; } _rule.Clear(); _rule.SetChessPlayers(whitePlayer, blackPlayer); Messager.Instance.SendMessageLater(MessageKey.Restart, new ChessPlayer[] { whitePlayer, blackPlayer }); ChessMove whiteMove = StartOneChess(); if (whiteMove.Side == 棋子.黑子) { performance--; } else if (whiteMove.Side == 棋子.白子) { performance += 2; } else { performance++; } Keys.Instance.End("X"); DNA blackDNA = blackPlayer.GetDNA(); DNA whiteDNA = whitePlayer.GetDNA(); string[] keys = Keys.Instance.GetAllKeys("X"); if (keys == null) { return(""); } if (performance > 0) { for (int i = 0; i < keys.Length; i++) { string key = keys[i]; if (whiteDNA.Has(key) && blackDNA.Has(key)) { whiteDNA.SetValue(key, blackDNA.GetValue(key)); } } whiteDNA.Factor = blackDNA.Factor; blackDNA.Save(); whiteDNA.Save(); return(black); } else if (performance < 0) { for (int i = 0; i < keys.Length; i++) { string key = keys[i]; if (whiteDNA.Has(key) && blackDNA.Has(key)) { blackDNA.SetValue(key, whiteDNA.GetValue(key)); } } blackDNA.Factor = whiteDNA.Factor; blackDNA.Save(); whiteDNA.Save(); return(white); } else { //Utility.Mute(blackDNA, keys, rate, min, max); //Utility.Mute(whiteDNA, keys, rate, min, max); //blackDNA.Save(); //whiteDNA.Save(); return(black); } }