用 C# 制作一个简易文字小游戏,体验一把当游戏策划的感觉!

17,923 阅读23分钟

「本文已参与好文召集令活动,点击查看:后端、大前端双赛道投稿,2万元奖池等你挑战!


闲来无事,使用C#用一个脚本写了一个文字小游戏,体验一把自己当游戏策划的感觉,还是挺不错的哈哈哈~

脚本代码很简单,基本上是入门水平就可以写啦,正好也借这一篇文章,练习一下C#的编程知识!

简易文字小游戏

在学习了一些C#的基础知识后就要做一些小东西来练练手,就比如本文所介绍的一个通过用VS中的C#写的一个简易文字小游戏 这个小游戏只由一个脚本完成,主要是用来拿C#中的一些基础知识完成,比如此脚本中用到的较多的if语句、结构体struct、枚举enum、静态方法staic等。 在这里插入图片描述

有兴趣的小伙伴可以自行设置剧情,体验一次游戏小策划的感觉,嘿嘿~ 比较适合新手开始用C#的一个小检验,还是挺有趣的,效果图如下: 在这里插入图片描述 在这里插入图片描述

下面简单地介绍一下脚本大体内容(其实都是很基础的东西,大佬不喜勿喷哦@_@)

脚本一开始定义了一个枚举,用来定义装备的类型,然后有一个结构体是用定义游戏中某件装备的具体属性,然后在Program类中定义了一些角色拥有的属性。 然后第一个方法CreateCharacter,是在Main函数里第一个执行的,是用来创建玩家角色的一个方法,在该方法中定义了一些随机属性,让每一次创建角色的时候都会有所不同(这也是大多数游戏的乐趣所在)。 创建完角色之后就到了我们的第一个游戏场景——新手村!哈哈,果然有了一种角色扮演RPG游戏的感觉了哈~~ 在这里插入图片描述

在新手村中会碰到一些我们设置的NPC交流,主要也是通过 if 语句来进行的一系列交互(练习if的使用)

然后后边会有好几个场景来进行游戏,包括郊区、长安、强盗山洞、洛阳等等,都是自己随意发挥的啦,主要是增加各种不一样的剧情,让游戏更有意思点,这里就要充分发挥我们的大脑来进行策划的工作了哈哈。 然后在场景中还会碰上商店,商店买东西也是简单的使用了if语句来写的,很简单。 在这里插入图片描述

敌人部分

在脚本中定义了一个Battle方法来掌管敌人的属性和战斗逻辑,每当想让玩家碰到敌人的时候就可以调用此方法并设置敌人的名字和攻击力等属性。在此脚本中,是通过Random方法来添加随机遇到敌人来玩的,不会用的要再去看看基础知识了哦 在这里插入图片描述

装备道具

然后就是写了一个获得装备并使用的方法EquipItem,每当从商店买来装备或者从NPC处获得装备时,调用此方法就可装备到我们的角色身上。 在这里插入图片描述

打印输出log

脚本中自己定义了一个打印输出的方法,很简单,只是用来方便输出语句和让语句停顿一段时间 在这里插入图片描述

大体框架就是这样了,主要目的是用来练习C#的基础知识,不至于很枯燥而已。

一个脚本搞定一个小游戏,学会了吗!!

完整代码如下

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

namespace ConsoleApp1
{

    //装备类型 
    enum EquipType
    {
        Weapon,
        Clothes,
        Shoes,
        Jiezhi
    }

    //装备
    struct Equip
    {
        //装备类型
        public EquipType type;
        //名称
        public string name;
        //描述
        public string des;
        //血量
        public int hp;
        //攻击力
        public int atk;
        //速度
        public int speed;
        //技能释放几率
        public int jineng;


        //构造函数
        public Equip(EquipType type, string name="未装备", string des="未装备", int hp=0, int atk=0, int speed=0, int jineng=0)
        {
            this.type = type;
            this.name = name;
            this.des = des;
            this.hp = hp;
            this.atk = atk;
            this.speed = speed;
            this.jineng = jineng;

        }
    }


    class Program
    {
        //变量声明
        //姓名
        static string name = "";
        //最大血量
        static int hp;
        //衣服血量
        static int clothes_Hp;
        //当前血量
        static int c_Hp;
        //成长血量
        static int g_hp;
        //攻击力
        static int atk;
        //武器攻击力
        static int weapon_atk;
        //成长攻击
        static int g_atk;
        //技能几率
        static int jineng;
        //戒指加技能几率
        static int Jiezhi_jineng;
        //速度
        static int speed;
        //鞋子速度
        static int shoes_speed;
        //成长速度
        static int g_speed;
        //等级 1000经验升一级
        static int level = 0;
        //经验
        static int exp = 0;
        //金钱
        static int money = 300;
        //武器
        static Equip Weapon=new Equip(EquipType.Weapon);
        //衣服
        static Equip Clothes = new Equip(EquipType.Clothes);
        //鞋子
        static Equip Shoes = new Equip(EquipType.Shoes);
        //戒指
        static Equip Jiezhi = new Equip(EquipType.Jiezhi);


        //创建角色
        static void CreateCharacter()
        {
            //提示
            Log("冷风如刀,以大地为砧板,视众生为鱼肉。");
            Log("万里飞雪, 将苍穹作洪炉, 溶万物为白银。");
            Log("雪将住, 风未定, 一辆马车自北而来, 滚动的车轮碾碎了地上的冰雪, 却碾不碎天地间的寂寞。");
            Log("一位英雄的故事也由此展开........");
            Console.WriteLine("请输入您的大名:");
            //输入角色名称
            name = Console.ReadLine();
            //判断名称是否正确
            if (string.IsNullOrEmpty(name))
            {
                //给与默认名称
                name = "憨憨";
            }
            //血量 随机90到111之间的数
            hp = new Random().Next(100, 121);
            c_Hp = hp;
            //成长血量
            g_hp = new Random().Next(20, 25);
            //攻击力
            atk = new Random().Next(10, 15);
            //成长攻击
            g_atk = new Random().Next(1, 4);
            //释放技能几率
            jineng = new Random().Next(20, 40);
            //速度
            speed = new Random().Next(90, 111);
            //成长速度
            g_speed = new Random().Next(10, 16);
            //给出提示
            Console.WriteLine("恭喜你!角色创建成功!您的角色名称为:{0}, 血量为:{1}, 攻击力为:{2},释放技能几率为:{3},速度为:{4}。", name, hp, atk, jineng, speed);
            //休眠
            Thread.Sleep(2000);
            //203-242  <205  205-210  210>
            //基础数值总和
            int num = hp + speed + atk;
            if (num < 205)
            {
                Log("您的角色看起来瘦弱不堪,可能需要重新投胎");
            }
            else if (num < 210)
            {
                Log("您的角色普普通通,努力一点可能会有出息。");
            }
            else
            {
                Log("您的角色看起来不同常人,浑身充满了王霸之气!!!");
            }
            Thread.Sleep(1000);
            //成长数值总和 30-42 31-33 34-38 39-43
            num = g_hp + g_speed + g_atk;
            if (num <= 33)
            {
                Log("您的角色看起来好像没什么潜力!");
            }
            else if (num <= 38)
            {
                Log("您的角色看起来平平常常,没什么特别之处!");
            }
            else
            {
                Log("您的角色看起来潜力非凡,浑身透露着不平凡的气息");
            }
            //当前属性
            ShowInfo();
        }

        //新手村
        static void xinShouCun()
        {
            //引导
            Console.WriteLine("您的前方有一名乞丐,另外一侧站着一名富豪,您要与谁对话?");
            Console.WriteLine("1.乞丐 2.富豪 3.谁都不理");
            //输入
            string str = Console.ReadLine();
            //判断
            if (str == "1")
            {
                //乞丐
                if (new Random().Next(0, 100) > 70)
                {
                    //残废
                    c_Hp -= 30;
                    //速度
                    speed -= 5;
                    //提示
                    Console.WriteLine("乞丐拿出本绝世武功,可惜没领悟!血量减30!");
                }
                else
                {
                    //成长提升
                    g_hp += 5;
                    g_atk += 1;
                    g_speed += 5;
                    //提示
                    Console.WriteLine("乞丐拿出本绝世武功,你练完后,感觉神清气爽!各项属性有所提高!");
                }
            }
            else if (str == "2")
            {
                //富豪
                if (new Random().Next(0, 100) > 70)
                {
                    //赚钱了
                    money += 20;
                    //提示
                    Console.WriteLine("富豪看你面善,送了你20两银子出去历练。");
                }
                else
                {
                    //血本无归
                    money -= 9;
                    //提示
                    Console.WriteLine("富豪心情不好,叫手下打了你一顿,损失了9两银子T T");
                }
            }
            //离开新手村提示
            Console.WriteLine("在村民的鼓励声中,你离开了新手村,向长安进发!");
            //当前属性
            ShowInfo();
        }

        //查看信息
        static void ShowInfo()
        {
            Console.WriteLine("您现在的属性为hp:{0}/({1}+{2}),atk:{3}+{4},speed:{5}+{6},jineng:{7}+{8}, money:{9}", c_Hp, hp, clothes_Hp, atk, weapon_atk, speed, shoes_speed, jineng, Jiezhi_jineng, money);
            Log("武器:[" + Weapon.name + "],防具:[" + Clothes.name + "],鞋子:[" + Shoes.name + "],戒指:[" + Jiezhi.name+"]");
            Thread.Sleep(500);
        }

        //装备道具
        static void EquipItem(Equip equip)
        {
            //区分装备类型
            switch (equip.type)
            {
                case EquipType.Weapon:
                    Log(name + "装备了武器:" + equip.name + ",攻击力+" + equip.atk);
                    weapon_atk = equip.atk;//保存装备攻击力
                    Weapon = equip;//保存装备
                    break;
                case EquipType.Clothes:
                    Log(name + "装备了衣服:" + equip.name + ",血量+" + equip.hp);
                    Clothes.hp = equip.hp;
                    Clothes = equip;
                    break;
                case EquipType.Shoes:
                    Log(name + "装备了鞋子:" + equip.name + ",速度+" + equip.speed);
                    shoes_speed = equip.speed;
                    Shoes = equip;
                    break;
                case EquipType.Jiezhi:
                    Log(name + "装备了戒指:" + equip.name + ",技能释放几率+" + equip.jineng);
                    Jiezhi_jineng = equip.jineng;
                    Jiezhi = equip;
                    break;

            }
        }
        //野外
        static void jiaoQu()
        {
            //提示
            Console.WriteLine("村口站着一名背着行囊的商人,是否对话?1.对话 2.抢劫 3.无视");
            //输入
            string str = Console.ReadLine();
            if (str == "1")
            {
                //对话
                Console.WriteLine("商人笑眯眯的看着你,说道:‘只要给我20两,就能让你脱胎换骨!’是否给予?1.给 2.不给");
                //输入
                string str2 = Console.ReadLine();
                if (str2 == "1" && money >= 20)
                {
                    //扣钱
                    money -= 20;
                    //加属性
                    g_hp += 10;
                    g_atk += 2;
                    g_speed += 8;
                    Console.WriteLine("经过商人的锻炼,你感觉全身充满着力量!");
                    ShowInfo();
                }
                else
                {
                    Console.WriteLine("商人鄙视的看了你一眼,离开了这里。");
                }
            }
            else if (str == "2")
            {
                //抢劫
                int num = hp + speed + atk;
                //如果大于210,天资聪慧,抢劫都能成功
                if (num > 210)
                {
                    money += 30;
                    Console.WriteLine("你拿出毕生所学的武功“挠痒痒”,商人被挠的落荒而逃,留下30两银子。");
                    ShowInfo();
                }
                else
                {
                    //抢劫失败
                    Console.WriteLine("你拿出毕生所学的武功“挠痒痒”,却被商人反手击倒,反而被商人挠的不行,并拿走了你所有的金钱并打了你一顿,血量损失20");
                    money = 0;
                    c_Hp -= 20;
                    ShowInfo();
                }
            }

            //走路
            for (int i = 0; i < 30; i++)
            {
                Console.WriteLine("按回车按键移动");
                Console.ReadKey();
                //几率遇敌
                if (new Random().Next(0, 6) > 3)
                {
                    if (new Random().Next(0, 100) > 80)
                    {
                        //遇敌-强盗
                        Battle("强盗", 60, 20, 90, 10, 5, 10, 1500);
                    }
                    else
                    {
                        //遇敌-无赖
                        Battle("无赖", 40, 20, 95, 5, 5, 3, 500);
                    }

                }
            }
            //进入长安
            ChangAn();
        }
        //进入长安
        static void ChangAn()
        {
            Log("费劲千辛万苦,你终于来到了传说中的大城市,长安。");
            Log("你看到前面有一个非常热闹的集市,是否去集市看看?1.去 2.不去");
            string str = Console.ReadLine();
            if (str == "1")
            {
                //集市相关
                Log("你来到了集市上,看到前方轰乱不堪,似乎有人在打架。你是否上去围观?1.围观 2.不围观,往集市外走去");
                string str1 = Console.ReadLine();
                if (str1 == "1")
                {
                    //围观
                    Log("你走进前一看,原来是一名凶神恶煞的年轻人正在欺负一位老伯。你是否上去帮忙?1.帮忙 2.不帮忙");
                    string str2 = Console.ReadLine();
                    if (str2 == "1")
                    {
                        //帮忙
                        int num = hp + speed + atk;
                        //如果大于220,天资聪慧,帮忙能成功
                        if (num > 220)
                        {
                            money += 10;
                            Log("你走上前对着年轻人踢了他个人仰马翻,年轻人悻悻的跑远了");
                            Log("老人非常感激,说这个人经常欺负老人,多亏了你帮忙把他赶跑了,给了你一些银两感谢。");
                            ShowInfo();
                        }
                        else
                        {
                            //帮忙失败
                            Console.WriteLine("你想上去帮忙,结果发现这名年轻人武义超凡,你反而被他打翻在地羞辱了一番并拿走了你所有银子,血量损失10。");
                            money = 0;
                            c_Hp -= 10;
                            ShowInfo();
                        }
                    }
                }
            }
            Log("你看了一眼,心想多一事不如少一事,转头向集市外走去。");

            //集市外

            Log("在集市外,有一名僧人与一名道长,是否与之对话?1.僧人 2.道长 ");
            str = Console.ReadLine();
            if (str == "1")
            {
                //僧人
                Log("这个僧人看起来衣着简陋,膀大腰圆,看起来不像好人,你上去打了声招呼。");
                Log("僧人盯着你问道:“施主,可有银两,贫僧已经十天没吃饭了”");
                Log("是否给僧人30两?1.给 2.抢劫 3.不给");
                string str2 = Console.ReadLine();
                if (str2 == "1" && money >= 30)
                {

                    if (new Random().Next(0, 10) > 3)
                    {
                        //给
                        money -= 30;
                        Log("僧人拿了钱开心的离开了。你望着僧人的背影,感觉失去了什么。");
                    }
                    else
                    {
                        //给
                        money += 30;
                        Log("僧人笑道:“逗你玩呢,我这边还有一些银两,看你面善,赏给你了”");
                        Log("因为做好事,从僧人处获得了额外30两银子");
                    }
                }
                else if (str2 == "2")
                {
                    //抢劫
                    if (new Random().Next(0, 10) > 3)
                    {
                        //等级大于3可以抢劫成功
                        if (level >= 3)
                        {
                            Log("僧人看着你感觉有些厉害,乖乖的送上了10两银子,并传授了一些闯荡江湖的经验给你");
                            //exp++ 
                            exp += 1000;
                            money += 10;
                        }
                        else
                        {
                            Log("僧人看你有点弱,便下手打了你一顿,你丢失了10两银子,还损失了一半血量");
                            money -= 10;
                            c_Hp /= 2;
                        }
                    }
                    else
                    {
                        Log("在你抢劫僧人的时候,被巡街的捕头发现并捉到了监狱中...");
                        Log("坐牢中,还剩1个月");
                        Thread.Sleep(5 * 1000);
                        Log("你出了牢房,在牢房的墙壁上学会了一些前狱友留下的绝世武功,属性提升!");
                        g_speed += 5;
                        ShowInfo();
                    }
                }
            }
            else
            {
                //道长
                Log("这个道长看起来仙风道骨,不像是一个普通人,你颤颤巍巍的上去打了声招呼:“道长你贵姓?”");
                Log("道长一脸正气的对你说道:“免贵姓张,乃玉皇大帝的后人”。你现在如果给我30两银子,我保你大富大贵一生平安!");
                Log("是否给道长30两?1.给 2.抢劫 3.不给");
                string str3 = Console.ReadLine();
                if (str3 == "1" && money >= 50)
                {

                    if (new Random().Next(0, 10) > 5)
                    {
                        //给
                        money -= 50;
                        Log("道长拿了钱瞬间消失了。你望着道长消失的地方,感觉失去了什么。");
                    }
                    else
                    {
                        //给
                        money += 30;
                        Log("你把钱给了道长之后,只见天色大变,一道七彩光芒飘进了你的身体。");
                        Log("你感觉自己的身体在脱胎换骨,所有属性得到提升。");
                        hp += 50;
                        atk += 5;
                        speed += 20;
                    }
                }
                else
                {
                    //抢劫
                    Log("道长看你有点惨,送了你一件武器,定海神针");
                    //获得装备
                    EquipItem(new Equip(EquipType.Weapon, "定海神针", "据说是一位猴王用过的", 0, 5, 0, 0));


                }

            }
            //提示
            Log("你在长安逗留了一阵后,听说有一群土匪,武功高强,烧杀抢夺,无恶不作,你准备帮长安的百姓除掉这些强盗。");
            //强盗山洞
            ChangAnFB();
        }

        //强盗山洞
        static void ChangAnFB()
        {
            Log("你爬山涉水终于来到了强盗山洞,开始寻找强盗");
            //走路
            for (int i = 0; i < 30; i++)
            {
                Console.WriteLine("按回车按键移动");
                Console.ReadKey();
                //几率遇敌
                if (new Random().Next(0, 5) > 3)
                {
                    if (new Random().Next(0, 100) > 80)
                    {
                        //遇敌-强盗头子
                        Battle("强盗头子", 100, 30, 105, 10, 10, 30, 3000);
                    }
                    else
                    {
                        //遇敌-强盗
                        Battle("强盗", 60, 20, 90, 10, 5, 10, 1500);
                    }
                }
            }
            Log("你终于找到了强盗首领,并发起攻击!为乡民报仇!");
            //遇敌-强盗首领 200 35
            Battle("强盗首领", 150, 15, 10, 50, 2, 50, 4000);
            Log("伴随着你杀死了强盗首领,强盗们纷纷都逃跑了。");
            LuoYang();
        }

        //前往洛阳
        static void LuoYang()
        {
            Log("自从你击败了强盗首领之后,你感觉你自己已经跟大侠没什么区别了,听说洛阳那边出现了一批反贼");
            Log("于是你向着更远的洛阳城进发着,想着平复反贼然后当个官爽爽。");
            Log("刚走了没两步,你看到有一个马车赶来,好像也是朝着洛阳城的方向前进。你是否上去询问?1.询问 2.不询问");
            string str = Console.ReadLine();
            if (str == "1")
            {
                Log("你上去询问了一番,果然也是去洛阳城的,于是给了二两银子搭上了顺风车前往洛阳。");
                money -= 2;
                ShowInfo();
            }
            else
            {
                Log("你没有上去询问,一个人孤独的踏上了前往洛阳的路途");
            }
            LuoYangFB();
        }
        //到达洛阳
        static void LuoYangFB()
        {
            Log("经历了一番遥远路途的煎熬,你终于来到了洛阳城,心里想着发达的日子就要来临了。");
            Log("刚到城门口便看到里面火光四起,动荡不安。");
            for (int i = 0; i < 30; i++)
            {
                Console.WriteLine("按回车按键移动");
                Console.ReadKey();
                //几率遇敌
                if (new Random().Next(0, 5) > 3)
                {
                    if (new Random().Next(0, 100) > 80)
                    {
                        //遇敌-反贼头子
                        Battle("反贼头目", 250, 30, 105, 10, 30, 30, 6000);
                    }
                    else
                    {
                        //遇敌-反贼
                        Battle("反贼", 200, 20, 90, 10, 25, 10, 4000);
                    }
                }
            }
            Log("你终于找到了反贼首领,并发起攻击!为朝廷平复!");
            //遇敌-强盗首领 200 35
            Battle("反贼首领", 400, 10, 100, 50, 50, 10, 10000);
            Log("伴随着你杀死了反贼首领,反贼们纷纷都投降了。");
            ShowInfo();

            Log("随着你凭一己之力把反贼们都给歼灭了,朝廷欢喜万分。");
            Log("连忙叫人来请你过去。是否过去?1.过去 2.不过去,并殴打来的使者");
            string str = Console.ReadLine();
            if (str == "1")
            {
                //受邀进宫
                Log("你接收了使者的邀请,跟随着他来到了宫里见到了皇上,皇上问你想要什么封赏。1.黄金百两 2.加官进爵 ");
                string str1 = Console.ReadLine();
                if (str1 == "1")
                {
                    money += 100;
                    Log("你得到了1000银两,从此在皇宫过上了衣食无忧的富贵生活。");
                }
                else if (str1 == "2")
                {

                    Log("你被封为骠骑大将军,皇上送给你一件黄马褂穿,从此在皇宫过上了衣食无忧的富贵生活。");
                    EquipItem(new Equip(EquipType.Clothes, "黄马褂", "皇上御赐的宝贝衣服", 500, 0, 0, 0));
                }
            }
            else
            {
                Log("你拒绝了使者的邀请,想冲上去殴打使者,结果发现使者武力高强,你与之发生了战斗");
                //与使者发生战斗
                Battle("使者", 500, 15, 100, 10, 30, 10, 10000);
                if (c_Hp > 0)
                {
                    Log("你把使者打死了,自己前往了皇宫。");

                    //独自进宫
                    Log("你自己来到了宫里见到了皇上,皇上被你这份霸气所折服,忙问你想要什么封赏。1.黄金千两 2.加官进爵 ");
                    string str1 = Console.ReadLine();
                    if (str1 == "1")
                    {
                        money += 1000;
                        Log("你得到了1000银两,从此在皇宫过上了衣食无忧的富贵生活。");
                    }
                    else if (str1 == "2")
                    {

                        Log("你被封为骠骑大将军,皇上送给你一件尚方宝剑,从此在皇宫过上了衣食无忧的富贵生活。");
                        EquipItem(new Equip(EquipType.Weapon, "尚方宝剑", "皇上御赐的宝贝武器", 0, 100, 0, 0));
                    }
                }

            }
            ShowInfo();
            Log("于是你开始在皇宫为皇上做事,也算是惬意了一段时间。");
            Log("在皇宫的这段日子,你感受了什么是奢侈的生活,但是这种生活好像束缚着你,你感觉到了厌烦。");
            Log("于是你决定离开皇宫,继续去外面的大千世界探险。");
            LuoYangJQ();
        }

        //离开洛阳
        static void LuoYangJQ()
        {
            Log("在快要离开皇宫的时候,你看到旁边有几个商铺。");

            while (true)
            {
                Log("你想要去哪个逛逛?");
                ShowInfo();
                Log("1.武器店 2.防具店 3.鞋店 4.戒指店 5.不逛了,只想离开。");
                string str = Console.ReadLine();
                if (str == "1")
                {
                    Log("你来到了武器店。");
                    Log("1.购买物品 2.出售物品 3.不买,就进来瞅瞅");
                    string str1 = Console.ReadLine();
                    if (str1 == "1")
                    {
                        Log("商人笑嘻嘻的问道:“客人您想要买什么东西呢?我们这里东西不算多,可是贵啊,专门坑老实人。");
                        Log("-----------------------------------");
                        Log("1.青铜刀    攻击力+20    200两银子");
                        Log("2.白银刀    攻击力+30    300两银子");
                        Log("3.黄金刀    攻击力+40    400两银子");
                        Log("4.钻石刀    攻击力+50    500两银子");
                        Log("-----------------------------------");
                        Log("5.太贵了,兜里没有钱一个也买不起   ");
                        string str2 = Console.ReadLine();
                        if (str2 == "1")
                        {
                            if (money >= 200)
                            {
                                Log("你购买了青铜刀,并装备上了");
                                money -= 200;
                                EquipItem(new Equip(EquipType.Weapon, "青铜刀", "由青铜打造而成的兵器", 0, 20, 0, 0));
                            }
                            else
                            {
                                Log("钱不够,尴尬的离开了。");
                            }
                        }
                        else if (str2 == "2")
                        {
                            if (money >= 300)
                            {
                                Log("你购买了白银刀,并装备上了");
                                money -= 300;
                                EquipItem(new Equip(EquipType.Weapon, "白银刀", "由白银打造而成的兵器", 0, 30, 0, 0));
                            }
                            else
                            {
                                Log("钱不够,尴尬的离开了。");
                            }
                        }
                        else if (str2 == "3")
                        {
                            if (money >= 400)
                            {
                                Log("你购买了黄金刀,并装备上了");
                                money -= 400;
                                EquipItem(new Equip(EquipType.Weapon, "黄金刀", "由黄金打造而成的兵器", 0, 40, 0, 0));
                            }
                            else
                            {
                                Log("钱不够,尴尬的离开了。");
                            }
                        }

                        else if (str2 == "4")
                        {
                            if (money >= 500)
                            {
                                Log("你购买了钻石刀,并装备上了");
                                EquipItem(new Equip(EquipType.Weapon, "钻石刀", "由钻石打造而成的兵器", 0, 50, 0, 0));
                            }
                            else
                            {
                                Log("钱不够,尴尬的离开了。");
                            }
                        }
                        else
                        {
                            Log("进来看看有什么好东西,但是什么也没买。");
                        }
                    }
                    else if (str1 == "2")
                    {
                        Log("商人笑嘻嘻的问道:“客人您想要卖什么东西呢?我们这里虽然店小,可是就喜欢坑老实人。");
                        Log("你好像没什么可以卖");

                    }
                    Log("商人看了你一眼,原来是想白嫖,快点走开,不然叫人凑你!");
                }
                else if (str == "2")
                {
                    Log("你来到了防具店。");
                    Log("1.购买物品 2.出售物品 3.不买,就进来瞅瞅");
                    string str1 = Console.ReadLine();
                    if (str1 == "1")
                    {
                        Log("商人笑嘻嘻的问道:“客人您想要买什么东西呢?我们这里东西不算多,可是贵啊,专门坑老实人。");
                        Log("------------------------------------");
                        Log("1.青铜圣衣    生命值+100   200两银子");
                        Log("2.白银圣衣    生命值+200   300两银子");
                        Log("3.黄金圣衣    生命值+250   400两银子");
                        Log("4.钻石圣衣    生命值+300   500两银子");
                        Log("------------------------------------");
                        Log("5.太贵了,兜里没有钱一个也买不起   ");
                        string str2 = Console.ReadLine();
                        if (str2 == "1")
                        {
                            if (money >= 200)
                            {
                                Log("你购买了青铜圣衣,并装备上了");
                                EquipItem(new Equip(EquipType.Clothes, "青铜圣衣", "由青铜打造而成的圣衣", 100, 0, 0, 0));
                            }
                            else
                            {
                                Log("钱不够,尴尬的离开了。");
                            }
                        }
                        else if (str2 == "2")
                        {
                            if (money >= 300)
                            {

                                Log("你购买了白银圣衣,并装备上了");
                                EquipItem(new Equip(EquipType.Clothes, "白银圣衣", "由白银打造而成的圣衣", 200, 0, 0, 0));
                            }
                            else
                            {
                                Log("钱不够,尴尬的离开了。");
                            }
                        }
                        else if (str2 == "3")
                        {
                            if (money >= 400)
                            {
                                Log("你购买了黄金圣衣,并装备上了");
                                EquipItem(new Equip(EquipType.Clothes, "黄金圣衣", "由黄金打造而成的圣衣", 250, 0, 0, 0));
                            }
                            else
                            {
                                Log("钱不够,尴尬的离开了。");
                            }
                        }
                        else if (str2 == "4")
                        {
                            if (money >= 500)
                            {
                                Log("你购买了钻石圣衣,并装备上了");
                                EquipItem(new Equip(EquipType.Clothes, "钻石圣衣", "由钻石打造而成的圣衣", 300, 0, 0, 0));
                            }
                            else
                            {
                                Log("钱不够,尴尬的离开了。");
                            }
                        }
                        else
                        {
                            Log("进来看看有什么好东西,但是什么也没买。");
                        }
                    }
                    else if (str1 == "2")
                    {
                        Log("商人笑嘻嘻的问道:“客人您想要卖什么东西呢?我们这里虽然店小,可是就喜欢坑老实人。");
                        Log("你好像没什么可以卖");
                    }
                    Log("商人看了你一眼,原来是想白嫖,快点走开,不然叫人凑你!");
                }
                else if (str == "3")
                {
                    Log("你来到了鞋店。");
                    Log("1.购买物品 2.出售物品 3.不买,就进来瞅瞅");
                    string str1 = Console.ReadLine();
                    if (str1 == "1")
                    {
                        Log("商人笑嘻嘻的问道:“客人您想要买什么东西呢?我们这里东西不算多,可是贵啊,专门坑老实人。");
                        Log("---------------------------------");
                        Log("1.青铜鞋    速度+100   200两银子");
                        Log("2.白银鞋    速度+150   300两银子");
                        Log("3.黄金鞋    速度+200   400两银子");
                        Log("4.钻石鞋    速度+250   500两银子");
                        Log("---------------------------------");
                        Log("5.太贵了,兜里没有钱一个也买不起 ");
                        string str2 = Console.ReadLine();
                        if (str2 == "1")
                        {
                            if (money >= 200)
                            {

                                Log("你购买了青铜鞋,并装备上了");
                                EquipItem(new Equip(EquipType.Weapon, "青铜鞋", "由青铜打造而成的鞋", 0, 0, 100, 0));
                            }
                            else
                            {
                                Log("钱不够,尴尬的离开了。");
                            }
                        }
                        else if (str2 == "2")
                        {
                            if (money >= 300)
                            {

                                Log("你购买了白银鞋,并装备上了");
                                EquipItem(new Equip(EquipType.Shoes, "白银鞋", "由白银打造而成的鞋", 0, 0, 150, 0));
                            }
                            else
                            {
                                Log("钱不够,尴尬的离开了。");
                            }
                        }
                        else if (str2 == "3")
                        {
                            if (money >= 400)
                            {
                                Log("你购买了黄金鞋,并装备上了");
                                EquipItem(new Equip(EquipType.Shoes, "黄金鞋", "由黄金打造而成的鞋", 0, 0, 200, 0));
                            }
                            else
                            {
                                Log("钱不够,尴尬的离开了。");
                            }
                        }
                        else if (str2 == "4")
                        {
                            if (money >= 500)
                            {
                                Log("你购买了钻石鞋,并装备上了");
                                EquipItem(new Equip(EquipType.Shoes, "钻石鞋", "由钻石打造而成的鞋", 0, 0, 250, 0));
                            }
                            else
                            {
                                Log("钱不够,尴尬的离开了。");
                            }
                        }
                        else
                        {
                            Log("进来看看有什么好东西,但是什么也没买。");
                        }
                    }
                }
                else if (str == "4")
                {
                    Log("你来到了戒指店。");
                    Log("1.购买物品 2.出售物品 3.不买,就进来瞅瞅");
                    string str1 = Console.ReadLine();
                    if (str1 == "1")
                    {
                        Log("商人笑嘻嘻的问道:“客人您想要买什么东西呢?我们这里东西不算多,可是贵啊,专门坑老实人。");
                        Log("------------------------------------------");
                        Log("1.青铜戒指    技能释放几率+10   200两银子");
                        Log("2.白银戒指    技能释放几率+20   300两银子");
                        Log("3.黄金戒指    技能释放几率+30   400两银子");
                        Log("4.钻石戒指    技能释放几率+40   500两银子");
                        Log("-----------------------------------------");
                        Log("5.太贵了,兜里没有钱一个也买不起         ");
                        string str2 = Console.ReadLine();
                        if (str2 == "1")
                        {
                            if (money >= 200)
                            {
                                Log("你购买了青铜戒指,并装备上了");
                                EquipItem(new Equip(EquipType.Jiezhi, "青铜戒指", "由青铜打造而成的戒指", 0, 0, 0, 10));
                            }
                            else
                            {
                                Log("钱不够,尴尬的离开了。");
                            }
                        }
                        else if (str2 == "2")
                        {
                            if (money >= 300)
                            {
                                Log("你购买了白银戒指,并装备上了");
                                EquipItem(new Equip(EquipType.Jiezhi, "白银戒指", "由白银打造而成的戒指", 0, 0, 0, 20));
                            }
                            else
                            {
                                Log("钱不够,尴尬的离开了。");
                            }
                        }
                        else if (str2 == "3")
                        {
                            if (money >= 400)
                            {
                                Log("你购买了黄金戒指,并装备上了");
                                EquipItem(new Equip(EquipType.Jiezhi, "黄金戒指", "由黄金打造而成的戒指", 0, 0, 0, 30));
                            }
                            else
                            {
                                Log("钱不够,尴尬的离开了。");
                            }
                        }
                        else if (str2 == "4")
                        {
                            if (money >= 500)
                            {
                                Log("你购买了钻石戒指,并装备上了");
                                EquipItem(new Equip(EquipType.Jiezhi, "钻石戒指", "由钻石打造而成的戒指", 0, 0, 0, 40));
                            }
                            else
                            {
                                Log("钱不够,尴尬的离开了。");
                            }
                        }
                        else
                        {
                            Log("进来看看有什么好东西,但是什么也没买。");
                        }
                    }
                }

                if (str == "5")
                {
                    break; ;
                }
            }



            DongXue();


        }

        //前往山洞
        static void DongXue()
        {
            Log("你离开了洛阳皇宫,来到了洛阳郊区,准备猎杀一些动物当做零食在路上吃。");
            //走路
            while (true)
            {
                Log("");
                Log("你走着走着来到了一个山洞门口,从里面听到了一丝低吼声,让人听了不自觉的颤抖!");
                Log("提示:前方有超强BOSS,血量:???,攻击力:???,速度:???,暴击率:???,闪避:???");
                Log("是否前去挑战? \n 1.挑战 \n 2.溜了溜了,在打打怪升级再来 。");
                string str = Console.ReadLine();
                if (str == "1")
                {
                    Log("你表示自己一点也不怂,见谁打谁,说着就进去了。");
                    Log("只见眼前趴着一名浑身晶莹剔透的白色毛发,头顶还有一缕散发金光的毛发似乎像是个“王”字,散发出强大的威严");
                    Log("你刚走进去,它便睁开了双眼发现了你");
                    Log("你才发现这位庞然大物的眼睛居然散发着九种不一样颜色的耀眼光芒,威严瞬间增大了一倍");
                    Log("说着就扑向了你,进入战斗!");

                    //遇敌-九彩神眸圣虎
                    Battle("九彩神眸圣虎", 6666, 20, 250, 50, 20, 40, 30000);
                    Log("伴随着一阵轰鸣声,你终于把九彩神眸圣虎击倒了。");
                }
                else
                    //走路
                    for (int i = 0; i < 30; i++)
                    {
                        Console.WriteLine("按回车按键移动");
                        Console.ReadKey();
                        //几率遇敌
                        if (new Random().Next(0, 6) > 3)
                        {
                            if (new Random().Next(0, 100) > 80)
                            {
                                //遇敌-邪眸白虎
                                Battle("邪眸白虎", 700, 20, 150, 20, 30, 30, 15000);
                            }
                            else
                            {
                                //遇敌-玄冥白虎
                                Battle("玄冥白虎", 400, 20, 150, 15, 15, 13, 5000);
                            }
                        }
                    }
                if (str == "1")
                {
                    break;
                }
            }
            Log("");


        }

        //---------------------------------------------------------------------------------------
        //战斗 名字 血量 攻击 速度 暴击率(0-100) 闪避率(0-100) 金钱 经验
        static void Battle(string e_name, int e_hp, int e_atk, int e_speed, int e_satk, int e_miss, int e_money, int e_exp)
        {
            Console.WriteLine("碰到" + e_name + "!是否消耗5两银子回满血量?1.回满 2.不回");
            string str = Console.ReadLine();
            //判断是否回血
            if (str == "1" && money >= 5)
            {
                //回满血量
                c_Hp = hp + clothes_Hp;
                //消费
                money -= 5;
                Log("血量已回满!当前血量为:" + c_Hp + ",当前金钱为:" + money);
            }
            //判断先手
            bool isPlayerAtk = speed + shoes_speed > e_speed;

            //进入战斗
            while (true)
            {
                //如果是玩家攻击
                if (isPlayerAtk)
                {
                    //下一次就是敌人攻击
                    isPlayerAtk = false;
                    //选择要不要释放技能
                    /*主动技能释放,喜欢的可以加上,目前这个还有些小bug,每回合都会释放,所以注释了~~~
                     * 
                     *          Log("你是否使用技能? \n 1.使用技能“万毒掌” \n 2.使用技能“苦尽甘来” \n 3.不使用技能");
                               string str1 = Console.ReadLine();

                               if (str1 == "1")
                               {
                                   for (int i=1;i<=2;i++)
                                   {
                                       if (e_hp<=0)
                                       {
                                           e_hp = 0;
                                           break;
                                       }
                                   int  num = new Random().Next(e_hp ,e_hp*2);
                                   e_hp -= num * 1/10;
                                   Log("您使出了主动技能“万毒掌”,攻击了" + e_name + (num * 1/10) + "点血量," + e_name + "血量剩余" + e_hp);
                                    }

           //---------------

                               }else if (str1 == "2")
                               {
                                   for (int i = 1; i <= 2; i++)
                                   {
                                       if (c_Hp>=hp)
                                       {
                                           c_Hp = hp;
                                           break;
                                       }
                                       int num = new Random().Next(hp, hp * 2);
                                       c_Hp += num * 1 / 10;
                                       Log("您使出了主动技能“苦尽甘来”,回复了" +(num * 1 / 10) + "点血量,您的血量剩余" + c_Hp);
                                   }
                               }else
                    */
                    //判断闪避
                    if (new Random().Next(0, 100) < e_miss)
                    {
                        Log("你挥出一刀,却被" + e_name + "轻巧的躲过!");
                        continue;
                    }
                    //判断会不会释放被动技能 
                    //敌人掉血
                    int num1 = new Random().Next(atk + weapon_atk - 2, atk + weapon_atk + 3);
                    e_hp -= num1;
                    if (new Random().Next(0, 100) < jineng)
                    {
                        e_hp -= num1 * 3;
                        Log("您使出了被动技能“葵花宝典”,攻击了" + e_name + (num1 * 3) + "点血量," + e_name + "血量剩余" + e_hp);
                    }
                    else
                    {
                        e_hp -= e_atk;
                        Log("玩家对" + e_name + "造成" + num1 + "点血量," + e_name + "血量剩余" + e_hp);
                    }


                    //判断敌人死亡
                    if (e_hp <= 0)
                    {
                        int eMoney = new Random().Next(e_money - 1, e_money + 1);
                        int eExp = new Random().Next(e_exp - 50, e_exp + 50);
                        money += eMoney;
                        exp += eExp;
                        Log(e_name + "被击败!您获得了" + eMoney + "金钱与" + eExp + "经验!");
                        //判断玩家是否升级
                        if (exp > level * 1000)
                        {
                            //经验
                            exp -= level * 1000;
                            //等级
                            level++;
                            //增加属性
                            hp += g_hp;
                            c_Hp = hp + clothes_Hp;
                            atk += g_atk;
                            speed += g_speed;
                            //  Console.ForegroundColor(ConsoleColor.Red);
                            Log("恭喜升级,当前等级为:" + level);
                            ShowInfo();
                        }
                        break;
                    }
                }
                else
                {
                    //当前是敌人攻击,下一次就是玩家攻击了
                    isPlayerAtk = true;
                    //判断需不需要暴击
                    if (new Random().Next(0, 100) < e_satk)
                    {
                        c_Hp -= e_atk * 2;
                        Log(e_name + "使出了吃奶的劲,攻击了玩家" + (e_atk * 2) + "血量,玩家血量剩余:" + c_Hp + "/" + hp);
                    }
                    else
                    {
                        c_Hp -= e_atk;
                        Log(e_name + "攻击了玩家" + e_atk + "点血量,玩家血量剩余:" + c_Hp + "/" + hp);
                    }
                    //如果玩家死亡
                    if (c_Hp <= 0)
                    {
                        Log("你好像要死了,是否花费100两银子复活?1.不复活,十八年后又是一条好汉!2.复活 ");
                        string str2 = Console.ReadLine();
                        if (str2 == "1")
                        {
                            //不复活
                            Log("你被" + e_name + "残忍的杀害了");
                            Log("胜败乃兵家常事,18年后又是一条好汉,下辈子努力吧。");
                            //退出
                            Environment.Exit(0);
                        }
                        if (str2 == "2")
                        {
                            //复活
                            if (money >= 100)
                            {
                                money -= 100;
                                c_Hp += 100;
                                Log("你选择了复活,当前血量为:" + c_Hp + "当前金币剩余:" + money);
                            }
                            else
                            {
                                //退出
                                Log("你被" + e_name + "残忍的杀害了");
                                Log("胜败乃兵家常事,18年后又是一条好汉,下辈子努力吧。");
                                Environment.Exit(0);
                            }
                        }

                    }
                }
            }
        }


        //输出
        static void Log(string text)
        {
            Console.WriteLine(text);
            //休眠
            Thread.Sleep(500);
        }

        static void Main(string[] args)
        {
            //创建角色
            CreateCharacter();
            //新手村
            xinShouCun();
            //野外
            jiaoQu();
        }
    }
}