Beispiel #1
0
        public string 戰鬥計算(string message)
        {
            Random rnd = new Random(Guid.NewGuid().GetHashCode());

            string[] TArray = message.Split('-');
            string   戰鬥描述   = "對戰開始\n";
            int      計數器    = 1;

            List <戰鬥角色> 戰鬥角色LIST = new List <戰鬥角色>();

            BOTCH.Controllers.GooglesHeet GH = new GooglesHeet();

            if (GH.ReadRoleEntries(TArray[2]).Count == 0)
            {
                戰鬥描述 = TArray[2] + " 指定的玩家不存在";
            }
            else if (GH.ReadRoleEntries(TArray[3]).Count == 0)
            {
                戰鬥描述 = TArray[3] + "指定的玩家不存在";
            }
            else
            {
                List <string> 玩家1   = GH.ReadRoleEntries(TArray[2]);
                List <string> 玩家2   = GH.ReadRoleEntries(TArray[3]);
                戰鬥角色          戰鬥角色1 = new 戰鬥角色(玩家1);
                戰鬥角色          戰鬥角色2 = new 戰鬥角色(玩家2);

                while (戰鬥角色1.HP > 0 && 戰鬥角色2.HP > 0 && 計數器 <= 30)
                {
                    戰鬥描述 += "=====第 " + 計數器 + " 回合===== \n";

                    //先手判斷
                    if (戰鬥角色1.敏捷 > 戰鬥角色2.敏捷)
                    {
                        戰鬥描述 = 戰鬥過程(戰鬥角色1, 戰鬥角色2, 戰鬥描述);

                        if (戰鬥角色2.HP > 0)
                        {
                            戰鬥描述 = 戰鬥過程(戰鬥角色2, 戰鬥角色1, 戰鬥描述);
                        }
                        else
                        {
                            break;
                        }
                    }
                    else if (戰鬥角色1.敏捷 == 戰鬥角色2.敏捷)
                    {
                        int 玩家1_是否先攻 = rnd.Next(0, 1);
                        if (玩家1_是否先攻 == 1)
                        {
                            戰鬥描述 = 戰鬥過程(戰鬥角色1, 戰鬥角色2, 戰鬥描述);

                            if (戰鬥角色2.HP > 0)
                            {
                                戰鬥描述 = 戰鬥過程(戰鬥角色2, 戰鬥角色1, 戰鬥描述);
                            }
                            else
                            {
                                break;
                            }
                        }
                        else
                        {
                            戰鬥描述 = 戰鬥過程(戰鬥角色2, 戰鬥角色1, 戰鬥描述);

                            if (戰鬥角色1.HP > 0)
                            {
                                戰鬥描述 = 戰鬥過程(戰鬥角色1, 戰鬥角色2, 戰鬥描述);
                            }
                            else
                            {
                                break;
                            }
                        }
                    }
                    else
                    {
                        戰鬥描述 = 戰鬥過程(戰鬥角色2, 戰鬥角色1, 戰鬥描述);

                        if (戰鬥角色1.HP > 0)
                        {
                            戰鬥描述 = 戰鬥過程(戰鬥角色1, 戰鬥角色2, 戰鬥描述);
                        }
                        else
                        {
                            break;
                        }
                    }

                    計數器++;
                }

                戰鬥描述 += "對戰結束\n";

                if (戰鬥角色1.HP < 0)
                {
                    戰鬥描述 += 戰鬥角色2.姓名 + " 勝利  血量剩餘:" + 戰鬥角色2.HP + "\n";
                }
                else if (戰鬥角色2.HP < 0)
                {
                    戰鬥描述 += 戰鬥角色1.姓名 + " 勝利  血量剩餘:" + 戰鬥角色1.HP + "\n";
                }
                else if (計數器 >= 20)
                {
                    戰鬥描述 = "兩位大俠已經酣戰20回合,不如就此休息,算平手吧。";
                }
            }


            return(戰鬥描述);
        }
Beispiel #2
0
        //戰鬥過程抽出來算
        public string 戰鬥過程(戰鬥角色 戰鬥角色1, 戰鬥角色 戰鬥角色2, string 戰鬥描述)
        {
            Random rnd;

            rnd = new Random(Guid.NewGuid().GetHashCode());
            int 玩家1_是否使用技能 = rnd.Next(0, 2);

            double 傷害 = 0;

            //是否使用技能
            if (玩家1_是否使用技能 == 1)
            {
                rnd = new Random(Guid.NewGuid().GetHashCode());
                int 技能抽取 = rnd.Next(1, 3);

                switch (技能抽取)
                {
                case 1:
                    if (戰鬥角色1.技能1.類型 == "攻擊")
                    {
                        傷害    = 戰鬥角色1.力量 * 戰鬥角色1.技能1.傷害;
                        戰鬥描述 += 戰鬥角色1.姓名 + "使用:" + 戰鬥角色1.技能1.稱 + "\n";
                    }
                    else
                    {
                        戰鬥描述 += 戰鬥角色1.姓名 + "使用:" + 戰鬥角色1.技能1.稱 + "--暫無實作 \n";
                    }
                    break;

                case 2:
                    if (戰鬥角色1.技能2.類型 == "攻擊")
                    {
                        傷害    = 戰鬥角色1.力量 * 戰鬥角色1.技能2.傷害;
                        戰鬥描述 += 戰鬥角色1.姓名 + "使用:" + 戰鬥角色1.技能2.稱 + "\n";
                    }
                    else
                    {
                        戰鬥描述 += 戰鬥角色1.姓名 + "使用:" + 戰鬥角色1.技能2.稱 + " --暫無實作 \n";
                    }
                    break;
                }
            }
            else
            {
                傷害    = 戰鬥角色1.力量;
                戰鬥描述 += 戰鬥角色1.姓名 + "使用:普通攻擊 \n";
            }

            //迴避判定
            rnd = new Random(Guid.NewGuid().GetHashCode());
            double 攻擊命中 = Convert.ToDouble(rnd.Next(1, 10)) / 10;

            if (攻擊命中 > 戰鬥角色2.迴避)
            {
                戰鬥角色2.受到傷害(Convert.ToInt32(傷害));
                戰鬥描述 += 戰鬥角色1.姓名 + "攻擊命中 造成 " + Convert.ToInt32(傷害) + "傷害 \n";
                戰鬥描述 += 戰鬥角色2.姓名 + "血量剩餘: " + 戰鬥角色2.HP + "\n";
            }
            else
            {
                戰鬥描述 += 戰鬥角色1.姓名 + " 攻擊被迴避 \n";
            }

            return(戰鬥描述);
        }