基于C#模拟实现回合制游戏

目录
  • 前言
  • 规则简介
  • 功能介绍
  • 实现代码
  • 百度网盘链接

前言

文章开始把我喜欢的这句话送个大家:这个世界上还有什么比自己写的代码运行在一亿人的电脑上更酷的事情吗,如果有那就是让这个数字再扩大十倍!!!

底部有下载链接:附带代码、答辩PPT、数据、音乐等素材。

规则简介

1>创建一个Hero类特征name(英雄名字),hp(血量),mp(魔法值), physicsAttack(物理攻击力),magicAttack(魔法攻击力)

2>创建一个BattleControl战斗管理类,该类有两个字段分别为List<Hero> ours(存储己方阵营中五个英雄)和List<Hero> enemy(存储对方五个英雄)类型,分别创建五个英雄和五个敌人分别添加到对应List泛型列表中。添加int类型字段round 记录战斗开始到结束总的回合数。注:英雄名字自定义,血量200 魔法值100 攻击力自定义。

3>模拟回合制游戏逻辑,初始化完毕后首先己方攻击,每次攻击随机从对方阵营筛选一个敌人进行攻击,

每次造成的伤害为物理攻击和魔法攻击的叠加值,如果没有魔法值那么伤害值只是物理攻击力即可。

每次魔法攻击之后需要减去相应的魔法值,比如魔法攻击力为20,那么魔法值也需要消耗20个点。

攻击的同时输出信息格式:小一攻击了小二,小二剩余血量为80。

己方所有英雄攻击完毕之后,敌人攻击,攻击流程同上。

4>当某一个敌人或者己方英雄死亡后将死亡角色从对应List泛型列表中移除,某一个阵营全部死亡,游戏结束,开始结算,显示获胜方。显示总的回合数。

可思考完善上述流程,比如添加加血buff,技能释放,闪避等等功能,丰富战斗内容

PS:如有报错,请根据本机音乐文件设置绝对路径!!!

功能介绍

初始化界面:复制测试用例即可

开始界面

查看敌我方英雄信息界面

更改敌我方英雄状况界面

强化敌我方英雄属性界面

激活敌我方英雄大招界面

打斗界面

实现代码

using System;
using System.Collections.Generic;
using System.Threading;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Media;//在命名空间中添加

namespace BigWork
{

    class Program
    {
        static void Main(string[] args)
        {
            System.Media.SoundPlayer sp = new SoundPlayer();
            sp.SoundLocation = @"E:\qianyan\大作业\Test\music\英雄联盟 - Welcome to Planet Urf.wav";
            sp.PlayLooping();

            List<Hero> ours = new List<Hero>(); //存放我方英雄集合
            List<Hero> enemy = new List<Hero>();//存放敌方英雄集合

            input(ours, enemy);   //输入我方、敌方英雄信息(引用传递)

            BattleControl.Instance.Ours = ours;
            BattleControl.Instance.Enemy = enemy;

            while (true)
            {
                function_print();
                string a = Console.ReadLine();
                if (string.IsNullOrEmpty(a))
                {
                    Console.WriteLine("输出指令有误,按任意键重新输入");
                    Console.ReadKey();
                    Console.Clear();
                    continue;
                }
                int n = int.Parse(a);
                switch (n)
                {
                    case 1:
                        showAllInfo(ours);
                        Console.WriteLine("点击任意按键继续…………");
                        Console.ReadKey();
                        Console.Clear();
                        break;
                    case 2:
                        showAllInfo(enemy);
                        Console.WriteLine("点击任意按键继续…………");
                        Console.ReadKey();
                        Console.Clear();
                        break;
                    case 3:
                        if (ours[0].Modify == true)
                            modifyInfo(ours);
                        else
                            Console.WriteLine("战斗已经进行,无法再进行修改");
                        Console.ReadKey();
                        Console.Clear();
                        break;
                    case 4:
                        if (ours[0].Modify == true)
                            modifyInfo(enemy);
                        else
                            Console.WriteLine("战斗已经进行,无法再进行修改");
                        Console.ReadKey();
                        Console.Clear();
                        break;
                    case 5:
                        strengthenHero(ours);
                        break;
                    case 6:
                        strengthenHero(enemy);
                        break;
                    case 7:
                        activateHeroUltimateSkills(ours);
                        break;
                    case 8:
                        activateHeroUltimateSkills(enemy);
                        break;
                    case 9:
                        System.Media.SoundPlayer sp1 = new SoundPlayer();
                        sp1.SoundLocation = @"E:\qianyan\大作业\Test\music\网络歌手 - 德玛德玛德玛西亚 00_00_00-00_00_04.wav";
                        sp1.Play();
                        Thread.Sleep(5000);
                        sp.SoundLocation = @"E:\qianyan\大作业\Test\music\英雄联盟 - Welcome to Planet Urf.wav";
                        sp.PlayLooping();
                        BattleControl.Instance.fight(3);//3回合后激活一次
                        break;

                }

            }

            Console.ReadKey();
        }

        #region 输入我方、敌方英雄信息功能
        public static void input(List<Hero> ours, List<Hero> enemy)
        {
            string a, d;
            int b, c;
            //输入我方英雄基本信息
            for (int i = 1; i <= 5; i++)
            {
                Console.WriteLine("请输入我方第{0}位英雄的名称:", i);
                a = Console.ReadLine();
                Console.WriteLine("请输入我方第{0}位英雄的物理攻击力:", i);
                b = int.Parse(Console.ReadLine());
                Console.WriteLine("请输入我方第{0}位英雄的魔法攻击力:", i);
                c = int.Parse(Console.ReadLine());
                Console.WriteLine("请输入我方第{0}位英雄的终极技能:", i);
                d = Console.ReadLine();
                Hero hero = new Hero(a, b, c, d);

                ours.Add(hero);
                Console.Clear();    //清屏函数
            }

            //输入敌方英雄基本信息
            for (int i = 1; i <= 5; i++)
            {

                Console.WriteLine("请输入敌方第{0}位英雄的名称:", i);
                a = Console.ReadLine();
                Console.WriteLine("请输入敌方第{0}位英雄的物理攻击力:", i);
                b = int.Parse(Console.ReadLine());
                Console.WriteLine("请输入敌方第{0}位英雄的魔法攻击力:", i);
                c = int.Parse(Console.ReadLine());
                Console.WriteLine("请输入敌方第{0}位英雄的终极技能:", i);
                d = Console.ReadLine();
                Hero hero = new Hero(a, b, c, d);

                enemy.Add(hero);
                Console.Clear();    //清屏函数
            }
            Console.WriteLine("正在为您初始化英雄角色,请稍等…………");
            Thread.Sleep(1000);
            Console.Clear();
        }
        #endregion

        #region 显示功能选项函数
        //static:不用创建对象就可以调用
        public static void function_print()
        {

            Console.WriteLine("****************************");
            Console.WriteLine("*                          *");
            Console.WriteLine("*   英雄大乱斗回合制游戏   *");
            Console.WriteLine("*                          *");
            Console.WriteLine("*    1、查看我方英雄情况   *");
            Console.WriteLine("*    2、查看敌方英雄情况   *");
            Console.WriteLine("*    3、更改我方英雄情况   *");
            Console.WriteLine("*    4、更改敌方英雄情况   *");
            Console.WriteLine("*    5、强化我方英雄       *");
            Console.WriteLine("*    6、强化敌方英雄       *");
            Console.WriteLine("*    7、激活我方英雄大招   *");
            Console.WriteLine("*    8、激活敌方英雄大招   *");
            Console.WriteLine("*    9、开始回合制打斗     *");
            Console.WriteLine("*                          *");
            Console.WriteLine("****************************");
        }
        #endregion

        #region 查看英雄信息函数
        public static void showAllInfo(List<Hero> hero)
        {
            Console.WriteLine("5位英雄信息如下:");
            foreach (var i in hero)
            {
                i.showInfo();
            }
        }
        #endregion

        #region 修改信息
        public static void modifyInfo(List<Hero> heros)
        {

            string a;
            showAllInfo(heros);
            Console.Write("\n输入修改的编号(从1开始):");
            a = Console.ReadLine();
            if (string.IsNullOrEmpty(a))
            {
                Console.WriteLine("输入有误,重新选择");
                Console.ReadLine();
                Console.Clear();
                return;
            }
            int t = int.Parse(a);

            if (t > heros.Count)
            {
                Console.WriteLine("输入数值超过英雄编号长度,重新选择需求");
            }
            else
            {
                Hero hero = heros[t - 1];
                Console.WriteLine("输入修改的值(按:姓名、血量、蓝量、物理攻击、魔法攻击写,不修改填-1或直接回车,填写好后按回车键修改各个值):");
                Hero.setColor(ConsoleColor.Red, ConsoleColor.Black);
                Console.WriteLine("注:英雄终极技能一旦创建无法更改");
                Hero.colorReset();

                a = Console.ReadLine();
                if (a != "-1" && !string.IsNullOrEmpty(a))
                    hero.Name = a;
                a = Console.ReadLine();
                if (a != "-1" && !string.IsNullOrEmpty(a))
                    hero.Hp = int.Parse(a);
                a = Console.ReadLine();
                if (a != "-1" && !string.IsNullOrEmpty(a))
                    hero.Mp = int.Parse(a);
                a = Console.ReadLine();
                if (a != "-1" && !string.IsNullOrEmpty(a))
                    hero.PhysicsAttack = int.Parse(a);
                a = Console.ReadLine();
                if (a != "-1" && !string.IsNullOrEmpty(a))
                    hero.MagicAttack = int.Parse(a);

                Console.WriteLine("修改后的数据");
                showAllInfo(heros);
            }
        }
        #endregion

        #region 强化英雄
        public static void strengthenHero(List<Hero> heros)
        {
            string a;
            showAllInfo(heros);
            Console.Write("\n输入强化的编号(从1开始):");
            a = Console.ReadLine();
            if (string.IsNullOrEmpty(a))
            {
                Console.WriteLine("输入有误,重新选择");
                Console.ReadLine();
                Console.Clear();
                return;
            }
            int t = int.Parse(a);

            if (t > heros.Count)
            {
                Console.WriteLine("输入数值超过英雄编号长度,重新选择需求");
                Console.ReadLine();
                Console.Clear();
            }
            else
            {
                Hero hero = heros[t - 1];
                Console.Write("添加血量值:");
                a = Console.ReadLine();
                if (!string.IsNullOrEmpty(a) && int.Parse(a) >= 0)
                    hero.Hp += int.Parse(a);

                Console.Write("添加蓝量值:");
                a = Console.ReadLine();
                if (!string.IsNullOrEmpty(a) && int.Parse(a) >= 0)
                    hero.Mp += int.Parse(a);

                Console.Write("设置红BUFF(输入1为设置):");
                a = Console.ReadLine();
                if (!string.IsNullOrEmpty(a) && int.Parse(a) == 1)
                    hero.RedBuff = true;

                Console.Write("设置蓝BUFF(输入1为设置):");
                a = Console.ReadLine();
                if (!string.IsNullOrEmpty(a) && int.Parse(a) == 1)
                    hero.BlueBuff = true;

                Console.Write("设置眩晕BUFF(输入1为设置):");
                a = Console.ReadLine();
                if (!string.IsNullOrEmpty(a) && int.Parse(a) == 1)
                    hero.DizzyBuff = true;
            }
        }
        #endregion

        #region 激活终极技能
        public static void activateHeroUltimateSkills(List<Hero> heros)
        {
            Console.WriteLine("终极技能激活情况");
            foreach (var hero in heros)
            {
                Console.Write("{0}的终极技能:", hero.Name);
                if (hero.ActivateUltimateSkills == false)
                {
                    Hero.setColor(ConsoleColor.Red, ConsoleColor.Black);
                    Console.WriteLine("未激活");
                    Hero.colorReset();
                }
                else
                {
                    Hero.setColor(ConsoleColor.Green, ConsoleColor.Black);
                    Console.WriteLine("已激活");
                    Hero.colorReset();
                }
            }
            Console.Write("\n输入激活大招的编号(从1开始):");
            string a = Console.ReadLine();
            if (string.IsNullOrEmpty(a))
            {
                Console.WriteLine("输入有误,重新选择");
                Console.ReadLine();
                Console.Clear();
                return;
            }
            int t = int.Parse(a);

            if (t > heros.Count)
            {
                Console.WriteLine("输入数值超过英雄编号长度,重新选择需求");
                Console.ReadKey();
            }
            else
                heros[t - 1].ActivateUltimateSkills = true;

            Console.Clear();
        }
        #endregion
    }

    class Hero
    {
        private string name;
        private int hp = 200;           // 血量
        private int mp = 100;           // 魔法值
        private int physicsAttack;      // 物理攻击力
        private int magicAttack;        // 魔法攻击力
        private string ultimateSkills;  // 终极技能
        private bool sign = false;      //本回合攻击过就标记

        private bool modify = true;            // 设置是否能再次修改信息
        private bool activateUltimateSkills = false;    // 终极技能的激活情况

        private bool blueBuff = false;         // 设置蓝Buff效果
        private bool redBuff = false;          // 设置红BUFF效果
        private bool dizzyBuff = false;            // 设置晕眩BUFF效果
        private bool dizzy = false;            // 设置晕眩效果

        public string Name { get => name; set => name = value; }
        public int Hp { get => hp; set => hp = value; }
        public int Mp { get => mp; set => mp = value; }
        public int PhysicsAttack { get => physicsAttack; set => physicsAttack = value; }
        public int MagicAttack { get => magicAttack; set => magicAttack = value; }
        public string UltimateSkills { get => ultimateSkills; set => ultimateSkills = value; }
        public bool Modify { get => modify; set => modify = value; }
        public bool ActivateUltimateSkills { get => activateUltimateSkills; set => activateUltimateSkills = value; }
        public bool BlueBuff { get => blueBuff; set => blueBuff = value; }
        public bool RedBuff { get => redBuff; set => redBuff = value; }
        public bool DizzyBuff { get => dizzyBuff; set => dizzyBuff = value; }
        public bool Dizzy { get => dizzy; set => dizzy = value; }
        public bool Sign { get => sign; set => sign = value; }

        public Hero() { }
        public Hero(string name, int physicsAttack, int magicAttack, string ultimateSkills)
        {
            this.Name = name;
            this.PhysicsAttack = physicsAttack;
            this.MagicAttack = magicAttack;
            this.ultimateSkills = ultimateSkills;
        }

        // 展示信息
        public void showInfo()
        {
            Console.Write("英雄名称:");
            setColor(ConsoleColor.Green, ConsoleColor.Black);
            Console.Write(" " + Name + " ");
            colorReset();

            Console.Write("  血量:");
            setColor(ConsoleColor.Red, ConsoleColor.Black);
            Console.Write(" " + Hp + " ");
            colorReset();

            Console.Write("  魔法值:");
            setColor(ConsoleColor.Blue, ConsoleColor.Black);
            Console.Write(" " + Mp + " ");
            colorReset();

            Console.Write("  物理攻击力:");
            setColor(ConsoleColor.Green, ConsoleColor.Black);
            Console.Write(" " + PhysicsAttack + " ");
            colorReset();

            Console.Write("  魔法攻击力:");
            setColor(ConsoleColor.Green, ConsoleColor.Black);
            Console.Write(" " + MagicAttack + " ");
            colorReset();

            Console.Write("  终极技能:");
            setColor(ConsoleColor.Cyan, ConsoleColor.Black);
            Console.Write(" " + UltimateSkills + " ");
            colorReset();

            Console.WriteLine();
        }

        public static void setColor(ConsoleColor a, ConsoleColor b)
        {
            Console.BackgroundColor = a;
            Console.ForegroundColor = b;
        }

        public static void colorReset()
        {
            Console.BackgroundColor = ConsoleColor.Black;
            Console.ForegroundColor = ConsoleColor.White;
        }

    }

    class BattleControl
    {
        //回合
        private int round = 1;

        //己方人物
        private List<Hero> ours;
        //敌方人物
        private List<Hero> enemy;

        private static BattleControl instance = null;

        private BattleControl() { }

        public static BattleControl Instance
        {
            get
            {
                if (instance == null)
                {
                    instance = new BattleControl();
                }
                return instance;
            }
        }

        public int Round { get => round; set => round = value; }

        internal List<Hero> Ours { get => ours; set => ours = value; }
        internal List<Hero> Enemy { get => enemy; set => enemy = value; }

        //实现回合制打斗方法
        public void fight(int activation)
        {
            int i, j;

            Random random = new Random();
            int sum = 0;

            while (true)
            {

                Console.WriteLine("第{0}回合开始!!!!!!!!", round);

                sum = 0;
                while (sum != (ours.Count + enemy.Count))
                {
                    sum = 0;

                    #region 选出所要战斗的英雄
                    i = (int)random.Next(0, ours.Count);//我方英雄
                    Thread.Sleep(1000);
                    j = (int)random.Next(0, enemy.Count);//敌方英雄
                    #endregion

                    #region 大招
                    //回合数达到三 就可以释放或者不释放
                    if (round == activation)
                    {
                        Console.WriteLine("是否放大招1是放 2不放:");
                        string a = Console.ReadLine();
                        int n = int.Parse(a);

                        for (int t = 0; t < ours.Count; t++)
                        {
                            if (ours[t].Hp != 0)
                            {
                                ours[t].ActivateUltimateSkills = true;
                            }
                            switch (n)
                            {
                                case 1:
                                    for (int k = 0; k < ours.Count; k++)
                                    {
                                        if (enemy[j].Hp > 0)
                                        {
                                            enemy[j].Hp = enemy[j].Hp > 10 ? enemy[j].Hp - 10 : 0;
                                        }
                                    }
                                    break;
                                case 2:
                                    break;
                            }
                        }

                        n = int.Parse(a);
                        for (int t = 0; t < enemy.Count; t++)
                        {
                            if (enemy[t].Hp != 0)
                            {
                                ours[t].ActivateUltimateSkills = true;
                            }
                            switch (n)
                            {
                                case 1:
                                    for (int k = 0; k < ours.Count; k++)
                                    {
                                        if (ours[i].Hp > 0)
                                        {
                                            ours[i].Hp = ours[i].Hp > 10 ? ours[i].Hp - 10 : 0;
                                        }
                                    }
                                    break;
                                case 2:
                                    break;
                            }
                        }

                    }
                    #endregion

                    if (ours.Count == 0)
                    {
                        break;
                    }
                    if (enemy.Count == 0)
                    {
                        break;
                    }

                    if (!ours[i].Sign && !enemy[j].Sign)//本回合都未进攻过
                    {

                        //进攻操作
                        //首先把选出的英雄进行标记
                        ours[i].Sign = true;
                        enemy[j].Sign = true;

                        //去判断双方所带的增益有哪些
                        //如果进攻方有一方有眩晕buff就让对方眩晕
                        if (ours[i].DizzyBuff)
                        {
                            enemy[j].Dizzy = true;
                        }
                        if (enemy[j].DizzyBuff)
                        {
                            ours[i].Dizzy = true;
                        }

                        //进攻的时候判断 如果已经被眩晕就不进攻
                        if (ours[i].Dizzy && !enemy[j].Dizzy)
                        {
                            enemy_attack(i, j);
                        }

                        else if (!ours[i].Dizzy && enemy[j].Dizzy)
                        {
                            ours_attack(i, j);
                        }

                        else if (!ours[i].Dizzy && !enemy[j].Dizzy)
                        {
                            ours_attack(i, j);
                            enemy_attack(i, j);
                        }
                        else if (ours[i].Dizzy && enemy[j].Dizzy)
                        {
                            Console.WriteLine("双方都被眩晕所以这回合两个英雄都未掉血!!!");
                        }

                    }
                    else if (ours[i].Sign && !enemy[j].Sign)
                    {
                        enemy[j].Sign = true;//把没有进行进攻的标记

                        enemy_attack(i, j);

                    }
                    else if (!ours[i].Sign && enemy[j].Sign)
                    {

                        ours[i].Sign = true;//把没有进行进攻的标记
                        ours_attack(i, j);

                    }

                    else if (ours[i].Sign && enemy[j].Sign)
                    {
                        Console.WriteLine("选出的两个英雄本回合都出战过~~~系统从新选择");
                    }

                    for (int k = 0; k < ours.Count; k++)
                    {
                        if (ours[k].Sign == true)
                        {
                            sum++;
                        }
                    }

                    for (int k = 0; k < enemy.Count; k++)
                    {
                        if (enemy[k].Sign == true)
                        {
                            sum++;
                        }
                    }

                    Console.WriteLine("{0}与{1}对战,{2}剩余血量{3},{4}剩余血量{5}", ours[i].Name, enemy[j].Name, ours[i].Name, ours[i].Hp, enemy[j].Name, enemy[j].Hp);

                    #region 如果已经战死就移除
                    if (ours[i].Hp == 0)
                    {
                        Console.WriteLine("{0}死亡将会从新选择英雄", ours[i].Name);
                        ours.Remove(ours[i]);

                    }

                    if (enemy[j].Hp == 0)
                    {
                        Console.WriteLine("{0}死亡将会从新选择英雄", enemy[j].Name);

                        enemy.Remove(enemy[j]);

                    }
                    #endregion

                }

                Console.WriteLine("第{0}回合结束!!!!!!!!", round);

                //一回合结束后更新所有英雄的状态
                update_status();

                if (ours.Count == 0)
                {
                    break;
                }
                if (enemy.Count == 0)
                {
                    break;
                }

                //更新回合数
                round++;

            }

            if (ours.Count == 0)
            {
                Console.WriteLine("我方输");
            }
            else if (enemy.Count == 0)
            {
                Console.WriteLine("敌方输");

            }
            else if (enemy.Count == 0 && ours.Count == 0)
            {
                Console.WriteLine("平局");

            }

        }

        //更新状态
        public void update_status()
        {
            int i;

            for (i = 0; i < ours.Count; i++)
            {
                ours[i].Dizzy = false;
                ours[i].Sign = false;

                //开局给的buff最多支撑三回合
                if (round == 3)
                {
                    ours[i].BlueBuff = false;
                    ours[i].RedBuff = false;
                }
            }

            for (i = 0; i < enemy.Count; i++)
            {
                enemy[i].Dizzy = false;
                enemy[i].Sign = false;

                //开局给的buff最多支撑三回合
                if (round == 3)
                {
                    enemy[i].BlueBuff = false;
                    enemy[i].RedBuff = false;
                }
            }
        }

        //ours进攻
        public void ours_attack(int i, int j)
        {
            //红buff
            if (ours[i].RedBuff)
            {
                Console.WriteLine("红buff对{0}造成10点伤害", enemy[j].Name);

                //红buff造成的伤害,和回血
                //防止血量出现负数
                enemy[j].Hp = enemy[j].Hp > 10 ? enemy[j].Hp - 10 : 0;
                if (ours[i].Hp == 200)
                {
                    Console.WriteLine("{0}血量已满无法回血", ours[i].Name);
                }
                else
                {
                    //防止血量超过200
                    ours[i].Hp = 200 > (ours[i].Hp + 4) ? ours[i].Hp + 4 : 200;
                    Console.WriteLine("{0}回了4点血", ours[i].Name);
                }
            }

            //蓝buff
            if (ours[i].BlueBuff)
            {
                Console.WriteLine("{0}回复了10点魔法值", ours[i].Name);

                //最高值限定
                ours[i].Mp = ours[i].Mp + 10 > 100 ? 100 : ours[i].Mp + 10;
            }

            //魔法攻击力加物理攻击力造成伤害-最高值限定
            if (ours[i].Mp >= ours[i].MagicAttack)
            {
                enemy[j].Hp = (ours[i].PhysicsAttack + ours[i].MagicAttack) > enemy[j].Hp ? 0 : enemy[j].Hp - (ours[i].PhysicsAttack + ours[i].MagicAttack);
                ours[i].Mp -= ours[i].MagicAttack; //更新魔法值
            }
            else//魔法值不足以发动魔法攻击
            {
                enemy[j].Hp = ours[i].PhysicsAttack > enemy[j].Hp ? 0 : enemy[j].Hp - ours[i].PhysicsAttack;
            }
        }

        //enemy进攻
        public void enemy_attack(int i, int j)
        {
            //红buff
            if (enemy[j].RedBuff)
            {
                Console.WriteLine("红buff对{0}造成10点伤害", ours[i].Name);

                //红buff造成的伤害
                //防止血量出现负数
                ours[i].Hp = ours[i].Hp > 10 ? ours[i].Hp - 10 : 0;
                if (enemy[j].Hp == 200)
                {
                    Console.WriteLine("{0}血量已满无法回血", enemy[j].Name);
                }
                else
                {
                    //防止血量超过200
                    enemy[j].Hp = 200 < (enemy[j].Hp + 4) ? enemy[j].Hp + 4 : 200;
                    Console.WriteLine("{0}回了4点血", enemy[j].Name);
                }
            }

            //蓝buff
            if (enemy[j].BlueBuff)
            {
                Console.WriteLine("{0}回复了10点魔法值", enemy[j].Name);

                //最高值限定
                enemy[j].Mp = enemy[j].Mp + 10 > 100 ? 100 : enemy[j].Mp + 10;
            }

            //魔法攻击力加物理攻击力造成伤害-最高值限定
            if (enemy[j].Mp >= enemy[j].MagicAttack)
            {
                ours[i].Hp = (enemy[j].PhysicsAttack + enemy[j].MagicAttack) > ours[i].Hp ? 0 : ours[i].Hp - (enemy[j].PhysicsAttack + enemy[j].MagicAttack);
                enemy[j].Mp -= enemy[j].MagicAttack; //更新魔法值
            }
            else//魔法值不足以发动魔法攻击
            {
                ours[i].Hp = enemy[j].PhysicsAttack > ours[i].Hp ? 0 : ours[i].Hp - enemy[j].PhysicsAttack;
            }
        }

    }
}

百度网盘链接

下载地址 提取码:ycq9 

以上就是基于C#模拟实现回合制游戏的详细内容,更多关于C#模拟回合制游戏的资料请关注我们其它相关文章!

(0)

相关推荐

  • C#实现简单的飞行棋小游戏

    本文实例为大家分享了C#实现简单飞行棋小游戏的具体代码,供大家参考,具体内容如下 1.玩家姓名的输入 2.对屏幕进行清屏 3.初始化地图 4.玩家A和玩家B玩游戏 using System; namespace homework { class data { //静态字段来模拟全局变量 static int[] Maps = new int[100]; //声明一个静态数组用来存储玩家A跟玩家B的坐标 static int[] PlayerPos = new int[2]; static str

  • C#飞机打字游戏的代码示例(winform版)

    游戏界面 程序代码 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Media; namesp

  • C#编写游戏客户端的实现代码

    一.连接客户端原理流程图 二.功能要求 1)连接成功后,可以将服务器发来的消息不停地显示在 listbox 中: 2) 客户端要发给服务器的数据,通过 textbox输入 或者点击button: 3) 能够播放背景音乐; 4) 每隔30秒,变换一次游戏背景图片. 三.代码实现 新建一个Windows窗体应用 下面是界面的布置,记得还有一个Timer,并且timer要使能,interval也要设置,这里3000为3秒 定义的变量 private NetworkStream stream; priv

  • C# 拼图游戏的实战(附demo)

    目录 一.项目分析 1.用户需求分析 2.系统设计思路 3.系统模块划分 二.项目设计 1.各个子模块的设计方法 板块一:注册用户并进行登录. 板块二:导入图片. 板块三:设置关卡所能选的难度. 版块四:拼图是否完成的判断. 板块五:切割图片. 板块六:打乱拼图. 板块七:重排图片,反映现在拼图的状况. 板块八:切成图后的小图片移动. 2.设计核心技术 三.项目测试 四.结论 一.项目分析 项目分析简要说明项目主要用户需求.设计思路及模块划分. 1.用户需求分析 在当今社会,人们的生活压力越来越

  • C#实现简单的飞行棋游戏

    本文实例为大家分享了C#实现简单飞行棋游戏的具体代码,供大家参考,具体内容如下 下面展示 完整代码: namespace 飞行棋 { class Program { public static int[] Maps = new int[100]; public static int[] PlayerPos = new int[2]; public static string[] PlayerName = new string[2]; public static bool[] Flags = ne

  • C#实现拼图游戏

    本文实例为大家分享了C#实现拼图游戏的具体代码,供大家参考,具体内容如下 (一)需求:(这个需求书写较为简单) 图片:有图 切割:拼图不是一个图,我们需要把一个整图它切割成N*N的小图 打乱:把这N*N的小图打乱顺序,才能叫拼图qwq 判断:判断拼图是否成功 交互:选择鼠标点击拖动的方式 展示原图:拼不出来可以看看 更换图片:腻了可以从本地选择一张你喜欢的来拼图 选择难度:除了2×2还可以选择切割成3×3或者4×4,看你喜欢qwq (二)设计: 使用VS的c#来实现 界面设计:picturebo

  • 基于C#模拟实现回合制游戏

    目录 前言 规则简介 功能介绍 实现代码 百度网盘链接 前言 文章开始把我喜欢的这句话送个大家:这个世界上还有什么比自己写的代码运行在一亿人的电脑上更酷的事情吗,如果有那就是让这个数字再扩大十倍!!! 底部有下载链接:附带代码.答辩PPT.数据.音乐等素材. 规则简介 1>创建一个Hero类特征name(英雄名字),hp(血量),mp(魔法值), physicsAttack(物理攻击力),magicAttack(魔法攻击力) 2>创建一个BattleControl战斗管理类,该类有两个字段分别

  • Java基于Swing实现的打猎射击游戏代码

    本文实例讲述了Java基于Swing实现的打猎射击游戏代码.分享给大家供大家参考. 具体实现代码如下: 复制代码 代码如下: package Game; import java.awt.Graphics; import java.awt.Image; import javax.swing.JPanel; public class BackgroundPanel extends JPanel {         private static final long serialVersionUID

  • 基于C语言实现的扫雷游戏代码

    本文详细讲述了基于C语言实现的扫雷游戏代码,代码中备有比较详细的注释,便于读者阅读和理解.希望对学习游戏开发的朋友能有一点借鉴价值. 完整的实例代码如下: /* 模拟扫雷游戏 */ #include <graphics.h> #include <math.h> #include <stdio.h> #include <dos.h> #include <stdlib.h> #include <conio.h> #include <

  • 基于vite2+vue3制作个招财猫游戏

    目录 介绍 演示 正文 游戏分析 招财动画 素材加载 条带生成 无限滚动 中奖判定 纸屑飞舞 结语 介绍 端午将至,大家都开始吃粽子了么,你是喜欢吃北方的甜的红枣粽?还是南方的大肉粽呢? 本期我们将使用vite2与vue3开发出一个招财猫小游戏,通过考验眼力和预判能力,在图案不停滚动的同时选出可以转出不同的素材最终得到粽子奖励,康康你能用多少次才会转出自己喜爱口味的粽子吧~ 演示 预览地址:jsmask.gitee.io/dwgame_laohuji/ 正文 游戏分析 在开发之前,我们要想好游戏

  • Python基于分水岭算法解决走迷宫游戏示例

    本文实例讲述了Python基于分水岭算法解决走迷宫游戏.分享给大家供大家参考,具体如下: #Solving maze with morphological transformation """ usage:Solving maze with morphological transformation needed module:cv2/numpy/sys ref: 1.http://www.mazegenerator.net/ 2.http://blog.leanote.com

  • C#基于socket模拟http请求的方法

    本文实例讲述了C#基于socket模拟http请求的方法.分享给大家供大家参考.具体实现方法如下: using System; using System.Collections.Generic; using System.Linq; using System.Net; using System.Net.Sockets; using System.Text; using System.Threading.Tasks; class HttpHelper { #region 模拟客户端socket连接

  • C++实现基于控制台界面的吃豆子游戏

    本文实例讲述了C++实现基于控制台界面的吃豆子游戏.分享给大家供大家参考.具体分析如下: 程序运行界面如下所示: ESC键可退出游戏. main.cpp源文件如下: #include "lib.h" #pragma once extern int level; int main() { FOOD food; WALL wall; BODY CurPos; HALL hall; int iExit = 0; while(1) { if(iExit) break; Init(&fo

  • 基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)

    随着html5的兴起,那些公司对大型游戏的开发正在慢慢疏远,一.开发周期长:二.运营花费高:他们正找一些能够克服这些缺点的替代品.正好,html5的出现可以改变这些现状,在淘宝.京东等一些大型电商网站.QQ.微信等聊天软件都出现了html5的小游戏,这说明html5越来越受到大家的青睐.接下来我用javascript实现一个小型游戏---打地鼠. 一.游戏简介 打地鼠这个游戏相信大家都不陌生,也是童年时候一款经典的游戏.本次游戏的编写是以html文件形式完成的,并且使用HBulider软件进行编

  • Python基于列表模拟堆栈和队列功能示例

    本文实例讲述了Python基于列表模拟堆栈和队列功能.分享给大家供大家参考,具体如下: 之前的文章http://www.jb51.net/article/59897.htm介绍了堆栈与队列的Python实现方法,这里使用列表来模拟一下堆栈与队列的简单操作. 一.队列特点:先进先出.后进后出 用列表insert.pop模拟进队出队: >>> l = [] >>> l.insert(0,'p1') >>> l.insert(0,'p2') >>

  • PHP基于curl模拟post提交json数据示例

    本文实例讲述了PHP基于curl模拟post提交json数据.分享给大家供大家参考,具体如下: 这里php模拟post提交json数据操作的关键是在头部设置Content-Type <?php header("Content-type:application/json;charset=utf-8"); $url="http://192.168.10.234:8080/uc/login/loginid"; $param=array( //注册字段 "n

随机推荐