예제 #1
0
        public Analyze(string dbFile, int battleType, double userPara, bool selfDefined)
        {
            para            = userPara;
            this.battleType = battleType;
            ah     = new AccessHandler(dbFile);
            curDir = Environment.CurrentDirectory;

            initalFailed = true;

            raceData       = ah.SelectToDataTable("select pokemon.hp,pokemon.attack,pokemon.defense,pokemon.specialAttack,pokemon.specialDefense,pokemon.speed,battleType" + battleType + ".ranking,battleType" + battleType + ".nature1,battleType" + battleType + ".nu1,battleType" + battleType + ".nature2,battleType" + battleType + ".nu2,battleType" + battleType + ".nature3,battleType" + battleType + ".nu3 from battleType" + battleType + " inner join [;database=" + curDir + "/Data/PokeData.mdb].pokemon on pokemon.poke_id = battleType" + battleType + ".poke_id");
            rankingDetails = ah.SelectToDataTable("select * from battleType" + battleType + "");
            total          = 0;

            if (selfDefined)
            {
                SelfDefinedModelParser sdmp;
                try
                {
                    sdmp = new SelfDefinedModelParser("Data/SelfDefinedModel.txt");
                }
                catch
                {
                    SelfDesignedMsg sdm = new SelfDesignedMsg("Sorry~ 小女子找不到您定义模型的文件...\r\n请确认文件Data/SelfDefinedModel.txt的存在~", false);
                    sdm.ShowDialog();
                    return;
                }
                ArrayList selfModel = sdmp.getModelLists();
                if (selfModel == null)
                {
                    return;
                }
                if (selfModel.Count < rankingDetails.Rows.Count)
                {
                    SelfDesignedMsg sdm = new SelfDesignedMsg("您定义的模型数据不足哦~ 请至少定义" + rankingDetails.Rows.Count + "条", false);
                    sdm.ShowDialog();
                    return;
                }
                model    = new double[rankingDetails.Rows.Count + 1];
                model[0] = 0;
                for (int i = 1; i <= rankingDetails.Rows.Count; i++)
                {
                    model[i] = (double)selfModel[i - 1];
                    total   += model[i];
                }
            }
            else
            {
                model    = new double[rankingDetails.Rows.Count + 1];
                model[0] = 0;
                for (int i = 1; i <= rankingDetails.Rows.Count; i++)
                {
                    model[i] = Math.Pow(i, para);
                    total   += model[i];
                }
            }
            initalFailed = false;
        }
예제 #2
0
        //使用率统计
        public KeyValuePair <string, double>[] useageRateTop(int limitation)
        {
            DataTable rankingNames = ah.SelectToDataTable("select pokemon.chi,battleType" + battleType + ".ranking from battleType" + battleType + " inner join [;database=" + curDir + "/Data/PokeData.mdb].pokemon on pokemon.poke_id = battleType" + battleType + ".poke_id order by battleType" + battleType + ".ranking");

            limitation = Math.Min(limitation, rankingNames.Rows.Count);
            KeyValuePair <string, double>[] ur = new KeyValuePair <string, double> [limitation];
            for (int i = 1; i <= limitation; i++)
            {
                ur[i - 1] = new KeyValuePair <string, double>(rankingNames.Rows[i - 1][0].ToString(), model[i] / total);
            }

            return(ur);
        }
예제 #3
0
        //mega配比统计
        public ArrayList megaUsageRate(AccessHandler ah)
        {
            ArrayList        res           = new ArrayList();
            double           totalMegaRate = 0;
            HashSet <string> megaSet       = new HashSet <string>(GlobalConstants.MEGASTONES);

            foreach (DataRow row in rankingDetails.Rows)
            {
                double weight = model[(int)row[1]] / total;
                if (megaSet.Contains(row[14].ToString()))
                {
                    double megaRate = weight * (double)(row[15]);
                    string pkId     = row[0].ToString() + ".1";
                    if (row[14].ToString().Equals("Charizardite Y") || row[14].ToString().Equals("Mewtwonite Y"))
                    {
                        pkId = row[0].ToString() + ".2";
                    }
                    DataTable dt = ah.SelectToDataTable("select chi from pokemon where poke_id = " + pkId);
                    if (dt.Rows.Count > 0)
                    {
                        res.Add(new KeyValuePair <string, double>(dt.Rows[0][0].ToString(), megaRate));
                        totalMegaRate += megaRate;
                    }
                }
                if (megaSet.Contains(row[16].ToString()))
                {
                    double megaRate = weight * (double)(row[17]);
                    string pkId     = row[0].ToString() + ".1";
                    if (row[16].ToString().Equals("Charizardite Y") || row[16].ToString().Equals("Mewtwonite Y"))
                    {
                        pkId = row[0].ToString() + ".2";
                    }
                    DataTable dt = ah.SelectToDataTable("select chi from pokemon where poke_id = " + pkId);
                    if (dt.Rows.Count > 0)
                    {
                        res.Add(new KeyValuePair <string, double>(dt.Rows[0][0].ToString(), megaRate));
                        totalMegaRate += megaRate;
                    }
                }
                if (megaSet.Contains(row[18].ToString()))
                {
                    double megaRate = weight * (double)(row[19]);
                    string pkId     = row[0].ToString() + ".1";
                    if (row[18].ToString().Equals("Charizardite Y") || row[18].ToString().Equals("Mewtwonite Y"))
                    {
                        pkId = row[0].ToString() + ".2";
                    }
                    DataTable dt = ah.SelectToDataTable("select chi from pokemon where poke_id = " + pkId);
                    if (dt.Rows.Count > 0)
                    {
                        res.Add(new KeyValuePair <string, double>(dt.Rows[0][0].ToString(), megaRate));
                        totalMegaRate += megaRate;
                    }
                }
                if ((double)row[0] == 384)
                {
                    for (int i = 20; i < 80; i += 3)
                    {
                        if ((string)row[i] == "Dragon Ascent")
                        {
                            double megaRate = weight * (double)(row[i + 2]);
                            res.Add(new KeyValuePair <string, double>("烈空坐", megaRate));
                            totalMegaRate += megaRate;
                            break;
                        }
                    }
                }
            }
            res.Add(new KeyValuePair <string, double>("total", totalMegaRate));
            return(res);
        }