小游戏:红色警戒争霸战!

这个是当年自己在学校里面写的小游戏,现在看看好弱智啊!
第一代的代码:

public struct Heros
        {
            public string name;
            public double hp;
            public double mp;
            public double attack;
            public double defence;
            public string state;
            public int delay;
            public int swore;//诅咒计数器
            public Skill selfskill;
        }

        public struct Skill
        {
            public string name;
            public double mp;
            public string info;
            public double punch;
            public int delay;
            public int swore;//诅咒能力
        }
        static void Main(string[] args)
        {
            Console.WriteLine("红色警戒争霸赛现在开始!");
            Random rnd = new Random();

            Skill[] skills = new Skill[7];
            skills[0].name = "【末日审判粉碎机】";
            skills[0].mp = 50;
            skills[0].info = "【使敌人遭到难以抗拒的粉碎性打击】";
            skills[0].punch = 1.8;
            skills[0].delay = 1;

            skills[1].name = "【中子炮死亡射线】";
            skills[1].mp = 75;
            skills[1].info = "【使敌人见光死】";
            skills[1].punch = 1.6;

            skills[2].name = "【核心巨变】";
            skills[2].mp = 500;
            skills[2].info = "【使自己战斗力大为提升】";

            skills[3].name = "【心灵震爆】";
            skills[3].mp = 100;
            skills[3].info = "【使敌人丧失战斗意志力】";
            skills[3].swore = 40;

            skills[4].name = "【氢元素混合爆炸】";
            skills[4].mp = 100;
            skills[4].info = "【自爆】";

            skills[5].name = "【汲取光束】";
            skills[5].mp = 40;
            skills[5].info = "【获得了敌人的部分生命值和攻击值】";

            skills[6].name = "【贿赂】";
            skills[6].mp = 100;
            skills[6].info = "【用金钱和美女收买敌人】";
            skills[6].swore = 20;
            skills[6].delay = 2;

            Heros[] heros=new Heros[7];
            heros[0].name = "【天启坦克】";
            heros[0].hp = 3000;
            heros[0].mp = 250;
            heros[0].attack = 800;
            heros[0].defence = 500;
            heros[0].state = "【苏维埃共产主义】";
            heros[0].selfskill = skills[0];
            heros[0].delay = 0;
            heros[0].swore = 0;

            heros[1].name = "【未来坦克】";
            heros[1].hp = 2500;
            heros[1].mp = 500;
            heros[1].attack = 600;
            heros[1].defence = 300;
            heros[1].state = "【民主自由世界】";
            heros[1].selfskill = skills[1];
            heros[1].delay = 0;
            heros[1].swore = 0;

            heros[2].name = "【帝国核心要塞】";
            heros[2].hp = 6000;
            heros[2].mp = 1500;
            heros[2].attack = 1000;
            heros[2].defence = 600;
            heros[2].state = "【升日帝国】";
            heros[2].selfskill = skills[2];
            heros[2].delay = 3;
            heros[2].swore = 0;

            heros[3].name = "【尤里X】";
            heros[3].hp = 150;
            heros[3].mp = 1200;
            heros[3].attack = 100;
            heros[3].defence = 100;
            heros[3].state = "【尤里恶普希龙王朝】";
            heros[3].selfskill = skills[3];
            heros[3].delay = 0;
            heros[3].swore = -50;

            heros[4].name = "【基洛夫飞艇】";
            heros[4].hp = 5000;
            heros[4].mp = 200;
            heros[4].attack = 800;
            heros[4].defence = 600;
            heros[4].state = "【苏维埃共产主义】";
            heros[4].selfskill = skills[4];
            heros[4].delay = 3;
            heros[4].swore = 10;

            heros[5].name = "【铁锤坦克】";
            heros[5].hp = 2000;
            heros[5].mp = 150;
            heros[5].attack = 400;
            heros[5].defence = 250;
            heros[5].state = "【苏维埃共产主义】";
            heros[5].selfskill = skills[5];
            heros[5].delay = 0;
            heros[5].swore = 0;

            heros[6].name = "【间谍】";
            heros[6].hp = 100;
            heros[6].mp = 600;
            heros[6].attack = 10;
            heros[6].defence = 50;
            heros[6].state = "【民主自由世界】";
            heros[6].selfskill = skills[6];
            heros[6].delay = 0;
            heros[6].swore = -20;

            for (int i=0; i<=heros.Length-1;i++ )
            {
                Console.WriteLine("如果您想选择英雄{0},请输入数字{1}",heros[i].name,i);
            }
            int selecthero = Convert.ToInt32( Console.ReadLine());

            Heros player = new Heros();
             player = heros[selecthero]; //玩家选择的英雄赋值给电脑,然后就是电脑选择英雄
             Heros PC = new Heros();
             int selecthero2;
             for (; ; )
             {
                 selecthero2 = rnd.Next(0,heros.Length);
                 PC = heros[selecthero2];
                 if (player.state != PC.state)
                 { break; }
             }
             Console.WriteLine("您选择了英雄{0},电脑选择英雄{1}",player.name,PC.name);
            //开始PK
             for (int i=1; ;i++ )
             {
                 Console.WriteLine("第{0}回合",i);
                 //玩家回合
                 if (player.delay != 0)
                 {
                     //停止一个回合
                     Console.WriteLine("您要停止一个回合!");
                     player.delay--;
                 }
                 else
                 {
                     Console.WriteLine("请问是否发动技能?Y(y)或者N(n)");
                     char skilltouch = Console.ReadKey().KeyChar;//主动发动技能的触发变量
                     int playerskilltouch = rnd.Next(50, 151);//决定发动这次技能成功的概率
                     if ((skilltouch == 'y' | skilltouch == 'Y') & player.name == "【天启坦克】" & playerskilltouch > 30)
                     { Heroskillattack0(ref player, ref PC); }
                     else if ((skilltouch == 'y' | skilltouch == 'Y') & player.name == "【未来坦克】" & playerskilltouch > 50)
                     { Heroskillattack1(ref player, ref PC); }
                     else if ((skilltouch == 'y' | skilltouch == 'Y') & player.name == "【帝国核心要塞】" & playerskilltouch > 80)
                     { Heroskillattack2(ref player, ref PC); }
                     else if ((skilltouch == 'y' | skilltouch == 'Y') & player.name == "【尤里X】" & playerskilltouch > 90)
                     { Heroskillattack3(ref player, ref PC); }
                     else if ((skilltouch == 'y' | skilltouch == 'Y') & player.name == "【基洛夫飞艇】" & playerskilltouch > 70)
                     { Heroskillattack4(ref player, ref PC); }
                     else if ((skilltouch == 'y' | skilltouch == 'Y') & player.name == "【铁锤坦克】" & playerskilltouch > 60)
                     { Heroskillattack5(ref player, ref PC); }
                     else if ((skilltouch == 'y' | skilltouch == 'Y') & player.name == "【间谍】" & playerskilltouch > 60)
                     { Heroskillattack6(ref player, ref PC); }
                     else
                     { Commonattack(ref player, ref PC); }
                 }
               
                //判定电脑
                 if(Gameover(ref PC)||PC.swore>=100)
                 {
                     Console.WriteLine("{0}击败了{1},打倒{2},{3}万岁!",
                         player.name,PC.name,PC.state,player.state);
                     PC.swore -= 10;
                     break;
                 }
                 //电脑回合
                 if (PC.delay != 0)
                 {
                     //停止一个回合
                     Console.WriteLine("电脑要停止一个回合!");
                     PC.delay--;
                 }
                 else
                 {
                     int pcskilltouch = rnd.Next(1, 101);
                     if (pcskilltouch > 30 & PC.name == "【天启坦克】")  //分别表示计算机发动技能的概率
                     { Heroskillattack0(ref PC, ref player); }
                     else if (pcskilltouch > 40 & PC.name == "【未来坦克】")
                     { Heroskillattack1(ref PC, ref player); }
                     else if (pcskilltouch > 80 & PC.name == "【帝国核心要塞】")//建议playskilltouch和pcskilltouch相同
                     { Heroskillattack2(ref PC, ref player); }
                     else if (pcskilltouch > 90 & PC.name == "【尤里X】")
                     { Heroskillattack3(ref PC, ref player); }
                     else if (pcskilltouch > 90 & PC.name == "【基洛夫飞艇】")
                     { Heroskillattack4(ref PC, ref player); }
                     else if (pcskilltouch > 90 & PC.name == "【铁锤坦克】")
                     { Heroskillattack5(ref PC, ref player); }
                     else if (pcskilltouch > 60 & PC.name == "【间谍】")
                     { Heroskillattack6(ref PC, ref player); }
                     else
                     { Commonattack(ref PC, ref player); }
                 }
                 //判定玩家
                 if(Gameover(ref player)||player.swore>=100)
                 {
                     Console.WriteLine("{0}击败了{1},打倒{2},{3}万岁!",
                        PC.name, player.name, player.state, PC.state);
                     player.swore -= 10;
                     break;
                 }
                 //游戏菜单,随机事件
                 Console.WriteLine("您是否要打开随机箱子?Y(y)或者N(n)");
                 char rndbox = Console.ReadKey().KeyChar;
                 if(rndbox=='Y'||rndbox=='y')
                 {
                     double rndboxopen1 = rnd.Next(50,151);
                     double rndboxopen2 = rnd.Next(50, 151);
                     double rndboxopen3 = rnd.Next(10, 16);
                     player.hp = player.hp * 0.01 * rndboxopen1;
                     player.mp = player.mp * 0.01 * rndboxopen1;
                     player.swore -= rndbox;
                     Console.WriteLine("你打开箱子后,生命值翻{0}倍,技能值翻{1}倍",rndboxopen1*0.01,rndboxopen2*0.01);
                 }
                 
             }
        }
        /// <summary>
        /// 普通攻击
        /// </summary>
        /// <param name="attacker"></param>
        /// <param name="defencer"></param>
        public static void Commonattack(ref Heros attacker, ref Heros defencer)
        {
            double damage = attacker.attack - defencer.defence;
            if(damage<10)
            {
                damage = 10;
            }
            defencer.hp = defencer.hp - damage;
            if(defencer.hp<0)
            {
                defencer.hp = 0;
            }
            Console.WriteLine("{0}对{1}发动了【普通攻击】,造成了{2}点伤害,{1}生命值还剩下{3}"
                ,attacker.name,defencer.name,damage,defencer.hp);
        }
        /// <summary>
        /// 游戏结束
        /// </summary>
        /// <param name="victim"></param>
        /// <returns></returns>
        public static bool Gameover(ref Heros victim)
        {
            if(victim.hp==0)
            {
                return true;
            }
            else
            { return false; }
            
        }
        //一个技能写一个函数,避免因为属性过多造成的变成混乱
        /// <summary>
        /// 天启坦克的末日审判技能,暴击效果,还有使得敌方停止一回合
        /// </summary>
        /// <param name="attacker"></param>
        /// <param name="defencer"></param>
        public static void Heroskillattack0(ref Heros attacker, ref Heros defencer)
        {
            if (attacker.mp < attacker.selfskill.mp)
            {
                Console.WriteLine("您的技能值不足,行动失败");
                return;
            }
            attacker.mp = attacker.mp - attacker.selfskill.mp;//减少技能值
            double damage = attacker.attack*attacker.selfskill.punch - defencer.defence;//暴击
            if (damage < 10)
            {
                damage = 10;
            }
            defencer.hp = defencer.hp - damage;
            if (defencer.hp < 0)
            {
                defencer.hp = 0;
            }
            defencer.delay = defencer.delay + attacker.selfskill.delay;
            Console.WriteLine("{0}对{1}发动了{2},{3},造成了{4}点伤害,{1}生命值还剩下{5}"
               ,attacker.name,defencer.name,attacker.selfskill.name,attacker.selfskill.info,damage,defencer.hp);
        }
        /// <summary>
        /// 中子炮死亡射线,暴击效果
        /// </summary>
        /// <param name="attacker"></param>
        /// <param name="defencer"></param>
        public static void Heroskillattack1(ref Heros attacker, ref Heros defencer)
        {
            if (attacker.mp < attacker.selfskill.mp)
            {
                Console.WriteLine("您的技能值不足,行动失败");
                return;
            }
            attacker.mp = attacker.mp - attacker.selfskill.mp;//减少技能值
            double damage = attacker.attack * attacker.selfskill.punch - defencer.defence;//暴击
            if (damage < 10)
            {
                damage = 10;
            }
            defencer.hp = defencer.hp - damage;
            if (defencer.hp < 0)
            {
                defencer.hp = 0;
            }
            Console.WriteLine("{0}对{1}发动了{2},{3},造成了{4}点伤害,{1}生命值还剩下{5}"
               , attacker.name, defencer.name, attacker.selfskill.name, attacker.selfskill.info, damage, defencer.hp);
        }
        /// <summary>
        /// 核心巨变,攻击力永远提升到1.1倍数
        /// </summary>
        /// <param name="attacker"></param>
        /// <param name="defencer"></param>
        public static void Heroskillattack2(ref Heros attacker, ref Heros defencer)
        {
            if (attacker.mp < attacker.selfskill.mp)
            {
                Console.WriteLine("您的技能值不足,行动失败");
                return;
            }
            attacker.mp = attacker.mp - attacker.selfskill.mp;//减少技能值
            double damage=0;
            if (defencer.hp < 0)
            {
                defencer.hp = 0;
            }
            attacker.attack *= 1.1;// 核心巨变,攻击力永远提升到1.1倍数
            Console.WriteLine("{0}对{1}发动了{2},{3},造成了{4}点伤害,{1}生命值还剩下{5}"
               , attacker.name, defencer.name, attacker.selfskill.name, attacker.selfskill.info, damage, defencer.hp);
        }
        /// <summary>
        /// 【心灵震爆】,一旦有三次技能发动成功,则完全获得胜利
        /// </summary>
        /// <param name="attacker"></param>
        /// <param name="defencer"></param>
        public static void Heroskillattack3(ref Heros attacker, ref Heros defencer)
        {
            if (attacker.mp < attacker.selfskill.mp)
            {
                Console.WriteLine("您的技能值不足,行动失败");
                return;
            }
            attacker.mp = attacker.mp - attacker.selfskill.mp;//减少技能值
            double damage= defencer.hp*0.3+ defencer.attack-defencer.defence;
            attacker.hp += damage;
            if (defencer.hp < 0)
            {
                defencer.hp = 0;
            }
            defencer.swore = defencer.swore + attacker.selfskill.swore;
            damage = 0;
            Console.WriteLine("{0}对{1}发动了{2},{3},造成了{4}点伤害,{1}生命值还剩下{5}"
               , attacker.name, defencer.name, attacker.selfskill.name, attacker.selfskill.info, damage, defencer.hp);
        }
        /// <summary>
        /// 自爆(伤害值为自身血量的1.5倍数)
        /// </summary>
        /// <param name="attacker"></param>
        /// <param name="defencer"></param>
        public static void Heroskillattack4(ref Heros attacker, ref Heros defencer)
        {
            if (attacker.mp < attacker.selfskill.mp)
            {
                Console.WriteLine("您的技能值不足,行动失败");
                return;
            }
            attacker.mp = attacker.mp - attacker.selfskill.mp;//减少技能值
            double damage = 1.5 * (attacker.hp - 100);
            attacker.hp = 100;
            defencer.hp -= damage;
            if (defencer.hp < 0)
            {
                defencer.hp = 0;
            }
            Console.WriteLine("{0}对{1}发动了{2},{3},造成了{4}点伤害,{1}生命值还剩下{5}"
               , attacker.name, defencer.name, attacker.selfskill.name, attacker.selfskill.info, damage, defencer.hp);
        }
        /// <summary>
        /// 汲取光束,吸血技能
        /// </summary>
        /// <param name="attacker"></param>
        /// <param name="defencer"></param>
        public static void Heroskillattack5(ref Heros attacker, ref Heros defencer)
        {
            if (attacker.mp < attacker.selfskill.mp)
            {
                Console.WriteLine("您的技能值不足,行动失败");
                return;
            }
            attacker.mp = attacker.mp - attacker.selfskill.mp;//减少技能值
            double damage = attacker.attack-defencer.defence;
            if(damage<=10)
            {
                return;
            }
            attacker.hp += damage;
            defencer.hp -= damage*0.9;
            damage *= 0.1;//汲取光束还会吸取攻击力和防守力
            attacker.attack += damage;
            attacker.defence += damage;
            if (defencer.hp < 0)
            {
                defencer.hp = 0;
            }
            Console.WriteLine("{0}对{1}发动了{2},{3},造成了{4}点伤害,{1}生命值还剩下{5}"
               , attacker.name, defencer.name, attacker.selfskill.name, attacker.selfskill.info, damage, defencer.hp);
        }
        /// <summary>
        /// 收买敌人
        /// </summary>
        /// <param name="attacker"></param>
        /// <param name="defencer"></param>
        public static void Heroskillattack6(ref Heros attacker, ref Heros defencer)
        {
            if (attacker.mp < attacker.selfskill.mp)
            {
                Console.WriteLine("您的技能值不足,行动失败");
                return;
            }
            double damage = 0;
            attacker.mp = attacker.mp - attacker.selfskill.mp;//减少技能值
            defencer.delay = defencer.delay + attacker.selfskill.swore;
            defencer.swore += attacker.selfskill.delay;
            if (defencer.delay >= 3 || defencer.swore >= 50)
            { attacker.defence *= 100; }
            if (defencer.hp < 0)
            {
                defencer.hp = 0;
            }
            Console.WriteLine("{0}对{1}发动了{2},{3},造成了{4}点伤害,{1}生命值还剩下{5}"
               , attacker.name, defencer.name, attacker.selfskill.name, attacker.selfskill.info, damage, defencer.hp);
        }


第二代的代码:

 using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace redalert
{   //这是关于红色警戒的游戏
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine("欢迎进入红色警戒争霸战");
            double damage;
            Console.WriteLine("--------------------------");
            state basicstate = new state();
          sovietgeneration1 state11 = new sovietgeneration1();
          state11.statearmy();
          Console.WriteLine("--------------------------");
          soveitgeneration2 state12 = new soveitgeneration2();
          state12.statearmy();
          Console.WriteLine("--------------------------");
          soveitgeneration3 state13 = new soveitgeneration3();
          state13.statearmy();
          Console.WriteLine("--------------------------");
          USAgeneration1 state21 = new USAgeneration1();
          state21.statearmy();
          Console.WriteLine("--------------------------");
          USAgeneration2 state22 = new USAgeneration2();
          state22.statearmy();
          Console.WriteLine("--------------------------");
          USAgeneration3 state23 = new USAgeneration3();
          state23.statearmy();
          Console.WriteLine("--------------------------");
          randomincident incidents = new randomincident();
            Console.WriteLine("请选择您的阵营:1苏维埃社会主义共和国联盟2美利坚合众国");
         
            player youplayer = new player();
            pc opposite = new pc();
            int selectstate = Convert.ToInt32(Console.ReadLine()) ;
            //表示玩家已经升级到的代数
            int generationplayer=0;
            int generationpc=0;
            //开始初始值设定
            if(selectstate==1)
            {
                Console.Clear();
                Console.WriteLine("您选择了【苏维埃社会主义共和国联盟】");
                youplayer.Attack = state11.Attack;
                youplayer.Defence = state11.Defence;
                youplayer.Hp = state11.Hp;
                youplayer.Mp = state11.Mp;
                opposite.Attack = state21.Attack;
                opposite.Defence = state21.Defence;
                opposite.Hp = state21.Hp;
                opposite.Mp = state21.Mp;
                generationplayer++;
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值