コード例 #1
0
    protected void Creature_Gridview_OnRowDeleting(object sender, System.Web.UI.WebControls.GridViewDeleteEventArgs e)
    {
        //GET DELETEING COLUMN
        int creature_id = Convert.ToInt32(this.Creature_GridView.DataKeys[e.RowIndex].Values["creature_id"].ToString());

        Attacks_Query.Delete_Attacks_Of_Creature(creature_id);

        Creature_GridView.DataBind();
        Attack_GridView.DataBind();
        Monster_Name_Source.DataBind();

        var dropDownList = Attack_Insert.FindControl("creature_DropDownList") as DropDownList;

        dropDownList.DataBind();
        dropDownList.Items.Insert(0, new ListItem("Select Creature"));
    }
コード例 #2
0
    private static void Create_Default_Creatures(int user_id, string creature_name, int hit_points, int initiative, int armor_class)
    {
        using (SqlConnection cn = new SqlConnection(WebConfigurationManager.ConnectionStrings["TableTop_DB"].ConnectionString))
        {
            try {
                SqlCommand cmd = new SqlCommand("INSERT INTO Creatures(user_id, creature_name, hit_points, initiative, armor_class) VALUES(@user_id, @creature_name, @hit_points, @initiative, @armor_class)", cn);
                cmd.Parameters.AddWithValue("@user_id", user_id);
                cmd.Parameters.AddWithValue("@creature_name", creature_name);
                cmd.Parameters.AddWithValue("@hit_points", hit_points);
                cmd.Parameters.AddWithValue("@initiative", initiative);
                cmd.Parameters.AddWithValue("@armor_class", armor_class);
                cmd.Connection.Open();
                cmd.ExecuteNonQuery();
            }
            catch (Exception e)
            {
                e.ToString();
            }
        }

        Attacks_Query.Create_Default_Attacks(user_id, creature_name);
    }
コード例 #3
0
    protected void Fight_Click(object sender, EventArgs e)
    {
        // SQL Var
        Creatures      creature1             = null;
        Creatures      creature2             = null;
        List <Attacks> Attack_list_1         = new List <Attacks>();
        List <Attacks> Attack_list_2         = new List <Attacks>();
        string         error_msg_creatures_1 = "";
        string         error_msg_creatures_2 = "";
        string         error_msg_attacks_1   = "";
        string         error_msg_attacks_2   = "";

        //Fight Simulation Var
        Random random = new Random(DateTime.Now.Millisecond);
        int    number_of_fights_total;

        if (tbNumFights.Text.Equals(""))
        {
            number_of_fights_total = 10000;
            lAutoNumFights.Visible = true;
        }
        else
        {
            number_of_fights_total = Int32.Parse(tbNumFights.Text);
        }
        int  number_of_fights_count = number_of_fights_total;
        bool creature_1_goes_first  = true;

        float[]      stats = { 0.0F, 0.0F };
        List <float> creature_1_hit_rate_list    = new List <float>();
        List <float> creature_2_hit_rate_list    = new List <float>();
        List <float> creature_1_damage_rate_list = new List <float>();
        List <float> creature_2_damage_rate_list = new List <float>();
        float        creature_1_hit_rate         = 0.0F;
        float        creature_2_hit_rate         = 0.0F;
        float        creature_1_damage_rate      = 0.0F;
        float        creature_2_damage_rate      = 0.0F;
        float        creature_1_win_rate         = 0.0F;
        float        creature_2_win_rate         = 0.0F;

        //Get Creatures
        creature1 = Creatures_Query.Get_Creature(out error_msg_creatures_1, DropDownList1.SelectedItem.Text, ((int)Session["User_id"]));
        creature2 = Creatures_Query.Get_Creature(out error_msg_creatures_2, DropDownList2.SelectedItem.Text, ((int)Session["User_id"]));

        //Get their Attacks
        Attack_list_1 = Attacks_Query.Get_Attacks_Of_Creature(out error_msg_attacks_1, creature1.Creature_id, creature1.User_id);
        Attack_list_2 = Attacks_Query.Get_Attacks_Of_Creature(out error_msg_attacks_2, creature2.Creature_id, creature2.User_id);

        //Simulate Fights
        while (number_of_fights_count > 0)
        {
            // Setup temp creatures hp for fight
            int temp_creature1_hp = creature1.Hit_points;
            int temp_creature2_hp = creature2.Hit_points;
            int round_count       = 0;
            int creature_1_turns  = 0;
            int creature_2_turns  = 0;

            //Roll initaive
            creature_1_goes_first = Roll_Initative(creature1, creature2, random);

            // Start Fight
            while (temp_creature1_hp > 0 && temp_creature2_hp > 0)
            {
                // if creature 1 goes first
                if (creature_1_goes_first)
                {
                    stats = Attack(creature1, Attack_list_1, creature2, ref temp_creature2_hp, random);
                    creature_1_turns++;
                    creature_1_hit_rate    += stats[0];
                    creature_1_damage_rate += stats[1];

                    if (temp_creature2_hp > 0)
                    {
                        stats = Attack(creature2, Attack_list_2, creature1, ref temp_creature1_hp, random);
                        creature_2_turns++;
                        creature_2_hit_rate    += stats[0];
                        creature_2_damage_rate += stats[1];
                    }
                }

                // if creature 2 goes first
                else if (!creature_1_goes_first)
                {
                    stats = Attack(creature2, Attack_list_2, creature1, ref temp_creature1_hp, random);
                    creature_2_turns++;
                    creature_2_hit_rate    += stats[0];
                    creature_2_damage_rate += stats[1];

                    if (temp_creature1_hp > 0)
                    {
                        stats = Attack(creature1, Attack_list_1, creature2, ref temp_creature2_hp, random);
                        creature_1_turns++;
                        creature_1_hit_rate    += stats[0];
                        creature_1_damage_rate += stats[1];
                    }
                }

                // increment round
                round_count++;
            }

            //Finalize Stats for Fight
            if (creature_1_turns > 0)
            {
                creature_1_hit_rate_list.Add(creature_1_hit_rate / creature_1_turns);
                creature_1_hit_rate = 0.0F;
                creature_1_damage_rate_list.Add(creature_1_damage_rate / creature_1_turns);
                creature_1_damage_rate = 0.0F;
            }

            if (creature_2_turns > 0)
            {
                creature_2_hit_rate_list.Add(creature_2_hit_rate / creature_2_turns);
                creature_2_hit_rate = 0.0F;
                creature_2_damage_rate_list.Add(creature_2_damage_rate / creature_2_turns);
                creature_2_damage_rate = 0.0F;
            }


            //Declarge Fight Winner
            if (temp_creature1_hp <= 0)
            {
                creature_2_win_rate++;
            }
            else if (temp_creature2_hp <= 0)
            {
                creature_1_win_rate++;
            }

            // End Fight
            number_of_fights_count--;
        }

        //Finalize win rate
        decimal final_creature_1_win_rate = (Math.Round((decimal)(creature_1_win_rate / number_of_fights_total), 2) * 100);
        decimal final_creature_2_win_rate = (Math.Round((decimal)(creature_2_win_rate / number_of_fights_total), 2) * 100);

        Win_Rate_1.Text = final_creature_1_win_rate.ToString() + "%";
        Win_Rate_2.Text = final_creature_2_win_rate.ToString() + "%";

        creature_1_hit_rate    = 0.0F;
        creature_2_hit_rate    = 0.0F;
        creature_1_damage_rate = 0.0F;
        creature_2_damage_rate = 0.0F;

        foreach (float k in creature_1_hit_rate_list)
        {
            creature_1_hit_rate += k;
        }
        foreach (float j in creature_2_hit_rate_list)
        {
            creature_2_hit_rate += j;
        }
        foreach (float h in creature_1_damage_rate_list)
        {
            creature_1_damage_rate += h;
        }
        foreach (float i in creature_2_damage_rate_list)
        {
            creature_2_damage_rate += i;
        }

        Decimal final_creature_1_hit_rate = (Math.Round((decimal)(creature_1_hit_rate / creature_1_hit_rate_list.Count()), 2) * 100);

        Accuracy_1.Text = final_creature_1_hit_rate.ToString() + "%";

        Decimal final_creature_2_hit_rate = (Math.Round((decimal)(creature_2_hit_rate / creature_2_hit_rate_list.Count()), 2) * 100);

        Accuracy_2.Text = final_creature_2_hit_rate.ToString() + "%";

        Decimal final_creature_1_damage_rate = (Math.Round((decimal)(creature_1_damage_rate / creature_1_damage_rate_list.Count()), 2));

        Damage_1.Text = final_creature_1_damage_rate.ToString();

        Decimal final_creature_2_damage_rate = (Math.Round((decimal)(creature_2_damage_rate / creature_2_damage_rate_list.Count()), 2));

        Damage_2.Text = final_creature_2_damage_rate.ToString();

        History_Query.Record_Combat_Results((int)Session["User_id"], creature1.Creature_id, creature2.Creature_id, final_creature_1_hit_rate, final_creature_2_hit_rate, final_creature_1_damage_rate, final_creature_2_damage_rate, final_creature_1_win_rate, final_creature_2_win_rate);
    }