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")); }
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); }
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); }