Bootstrap

C#实现回合制游戏模拟

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

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

规则简介

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

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

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

  1. 每次造成的伤害为物理攻击和魔法攻击的叠加值,如果没有魔法值那么伤害值只是物理攻击力即可。
  2. 每次魔法攻击之后需要减去相应的魔法值,比如魔法攻击力为20,那么魔法值也需要消耗20个点。
  3. 攻击的同时输出信息格式:小一攻击了小二,小二剩余血量为80。
  4. 己方所有英雄攻击完毕之后,敌人攻击,攻击流程同上。

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