1. 程式人生 > >C#控制檯RPG遊戲,面向物件練習

C#控制檯RPG遊戲,面向物件練習

簡介

閒來無事寫的一個C#控制檯應用程式,本RPG遊戲有多種角色屬性供你選擇,擁有技能,商店,豐富的戰鬥系統和升級功能。學習C#的朋友可以看一看,對面向物件很有幫助。使用了封裝 繼承和多型思想。

專案例項截圖

部分專案原始碼

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

namespace RPG_Fairyland_MiracleTour
{
    /// <summary>
    /// 職業列舉變數 用於判斷選擇的職業
    /// </summary>
    enum Enum_GameRoles
    {
        Enum_Warrior,
        Enum_Wizard
    }
    class Program
    {
        //生成一個玩家角色
        public static PlayerRoles _PlayerRoles = new PlayerRoles();
        //生成一個戰士類變數
        public static PlayerRoles _RolesWarrior = new PlayerRoles();
        //生成一個法師類變數
        public static PlayerRoles _RolesWizard = new PlayerRoles();
        //生成一個玩家揹包
        public static GamePackage _PlayerPackage = new GamePackage();
        //生成一個武器商店
        public static WeaponStore _WeaponStore = new WeaponStore();
        //生成一個技能
        public static Skill _Skill = new Skill();
        //宣告一個用於儲存玩家選擇角色的列舉
        public static Enum_GameRoles Enum_GamePlayerRoles;
        //判斷角色是否選擇了使用技能的變數
        public static bool Bskill;
        //玩家的角色等級變數,用於判斷是否解鎖新場景
        static int PGrade = 1;
        //武士的Hp臨時變數,用於在戰鬥前儲存Hp,並在戰鬥後恢復
        public static int HPTemp = 1000;
        //法師的Hp臨時變數,用於在戰鬥前儲存Hp,並在戰鬥後恢復
        public static int HPTempWizard = 800;
        static void Main(string[] args)
        {
            Start();
            Console.ReadKey();
        }
        /// <summary>
        /// 開始遊戲函式
        /// </summary>
        static void Start()
        {
            //更改控制檯 擡頭
            Console.Title = "RPG-奇蹟之城";
            Console.WriteLine("\n\t**************歡迎進入遊戲**************");
            Thread.Sleep(1000);
            Console.WriteLine("\n   是否開始遊戲?     Y.我已準備好了     N.我再想想看");
            //判斷玩家的按鍵,是否退出
            ConsoleKeyInfo Downkey = Console.ReadKey(true);
            //玩家如果選擇了退出遊戲,就返回這個函式,退出遊戲
            if (Downkey.Key.Equals(ConsoleKey.N))
            {
                Thread.Sleep(500);
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("\n\t**************下次再見,謝謝(^_^)************");
                return;
            }
            //玩家如果選擇了繼續遊戲,呼叫載入延時函式,出現一個load載入畫面
            Load();
            //等待延時,製作遊戲載入的假象
            Thread.Sleep(1000);
            //提示玩家輸入一個角色的姓名
            Console.WriteLine("\n\n\t**************請輸入角色姓名**************");
            Console.Write("\n\t**************角色姓名為:");
            //獲取玩家輸入的角色姓名,並且更改玩家角色類中的玩家角色姓名
            _PlayerRoles.Name = Console.ReadLine();
            //用於判斷使用者選擇的職業,如果選擇錯誤,將不退出這個死迴圈
            while (true)
            {
                //等待延時,製作遊戲載入的假象
                Thread.Sleep(1000);
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine("\n\t請選擇職業:1.戰士\t2.法師");
                //判斷玩家的按鍵,獲得玩家選擇職業
                ConsoleKeyInfo Downkey1 = Console.ReadKey(true);
                //如果選擇1,生成戰士
                if (Downkey1.Key.Equals(ConsoleKey.D1)|| Downkey1.Key.Equals(ConsoleKey.NumPad1))
                {
                    //進入戰士函式,生成一個戰士
                    GameWarrior();
                    break;
                }
                //如果選擇2,生成法師
                else if (Downkey1.Key.Equals(ConsoleKey.D2) || Downkey1.Key.Equals(ConsoleKey.NumPad2))
                {
                    //進入法師函式,生成一個法師
                    GameWizard();
                    break;
                }
                //選擇其他,提示輸入錯誤,重新輸入,直到輸入正確退出這個死迴圈
                else
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Thread.Sleep(500);
                    Console.WriteLine("\n\t很抱歉,您輸入的有誤,當前職業不存在");
                }
            }
        }
        /// <summary>
        /// 遊戲背景函式
        /// </summary>
        static void GameBackground()
        {
            Console.WriteLine("\n\t**************遊戲馬上開始**************");
            //呼叫載入延時函式,出現一個load載入畫面
            Load();
            //遊戲背景對話
            Thread.Sleep(1000);
            Console.Write("\n\n\n\t\t好黑!!!");
            Thread.Sleep(400);
            Console.WriteLine("我這是在哪?∑(°Д°)");
            Thread.Sleep(1000);
            Console.WriteLine("\n\t\t嗷嗚~~~嗷嗚~~~");
            Thread.Sleep(1000);
            Console.WriteLine("\n\t\t啊!!!狼!!!!!!!!!");
            Thread.Sleep(1000);
            Console.WriteLine("\n\n* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *");
            Console.ReadKey();
            Thread.Sleep(1000);
            Console.WriteLine("\n\n\n\t\t迷迷糊糊睜開眼······");
            Thread.Sleep(1000);
            Console.WriteLine("\n\t\t你醒了?");
            Thread.Sleep(1000);
            Console.WriteLine("\n\t\t我怎麼了?我這是在哪???");
            Thread.Sleep(1000);
            Console.WriteLine("\n\t\t別害怕,這是我家,我在城外的森林裡發現的你的時候你已經暈倒了。");
            Thread.Sleep(1000);
            Console.WriteLine("\n\t\t我怎麼什麼都不記得了???");
            Thread.Sleep(1000);
            Console.WriteLine("\n\n\n* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * ");
            Console.ReadKey();
            Thread.Sleep(1000);
            Console.WriteLine("\n\n\t\t* * * * * * * * * 一年之後* * * * * * * * *");
            Thread.Sleep(500);
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("\n\t\t* * * * * * * 解鎖新場景小村村 * * * * * * * ");
            Console.ForegroundColor = ConsoleColor.White;
            //呼叫選擇判斷函式,引導玩家進行選擇判斷
            GameChoice();
        }
        /// <summary>
        /// 生成一個玩家 角色是戰士
        /// </summary>
        static void GameWarrior()
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("\n\t**************選擇成功,您選擇的職業是戰士");
            Console.ForegroundColor = ConsoleColor.White;
            //戰士的血量
            _RolesWarrior.Hp = 1000;
            //戰士的攻擊力
            _RolesWarrior.Attack =63;
            //戰士的防禦力
            _RolesWarrior.Defense = 65;
            //戰士的金錢
            _RolesWarrior.Money = 30000;
            //戰士的經驗
            _RolesWarrior.Experience = 0;
            //戰士的等級
            _RolesWarrior.Grade = 10;
            //給玩家角色列舉賦值 戰士列舉
            Enum_GamePlayerRoles = Enum_GameRoles.Enum_Warrior;
            Thread.Sleep(1000);
            //呼叫遊戲背景函式
            GameBackground();
        }
        /// <summary>
        /// 生成一個玩家 角色是法師
        /// </summary>
        static void GameWizard()
        {
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("\n\t**************選擇成功,您選擇的職業是法師");
            Console.ForegroundColor = ConsoleColor.White;
            //法師的血量
            _RolesWizard.Hp = 800;
            //法師的攻擊力
            _RolesWizard.Attack = 65;
            //法師的防禦力
            _RolesWizard.Defense = 35;
            //法師的金錢
            _RolesWizard.Money = 300;
            //法師的經驗
            _RolesWizard.Experience = 0;
            //法師的等級
            _RolesWizard.Grade = 1;
            //給玩家角色列舉賦值 法師列舉
            Enum_GamePlayerRoles = Enum_GameRoles.Enum_Wizard;
            Thread.Sleep(1000);
            //呼叫遊戲背景函式
            GameBackground();
        }
        /// <summary>
        /// 提示玩家選擇,1.開始戰鬥 2.進入商城 3.檢視當前屬性
        /// </summary>
        public static void GameChoice()
        {
            //清除所有生成的怪物
            ComputerRoles.ListComputerRoles.Clear();
            //判斷玩家的等級是否等於5級,如果等於5級就解鎖新場景
            if (_RolesWarrior.Grade == 5 || _RolesWizard.Grade == 5)
            {
                //判斷是否解鎖過新場景,如果解鎖過,就不再次解鎖
                if (PGrade==1)
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("\n\t**************解鎖場景失落的古城**************");
                    Console.ForegroundColor = ConsoleColor.White;
                    Console.WriteLine("\n\t解鎖新怪物 叛軍  BOSS:變異的軍人 ");
                    //進入場景後,用於判斷玩家等級是否升級的計數器進行增加
                    PGrade++;
                }
            }
            //判斷玩家選擇角色,在玩家每次戰鬥結束後,恢復玩家血量
            if (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Warrior)
            {
                //恢復戰士的HP
                _RolesWarrior.Hp = HPTemp;
            }
            else if (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Wizard)
            {
                //恢復法師的HP
                _RolesWizard.Hp = HPTempWizard;
            }
            //載入延時,模模擬實遊戲載入
            Thread.Sleep(500);
            Console.ForegroundColor = ConsoleColor.Red;
            Console.WriteLine("\n\n\t\t* * * * * * * * *歡迎回來\t" + _PlayerRoles.Name);
            Console.ForegroundColor = ConsoleColor.White;
            //進入一個死迴圈,用於判斷玩家的選擇是否是給出的選擇,如果不是則不退出,如果是則執行相對應的函式
            while (true)
            {
                Thread.Sleep(400);
                Console.ForegroundColor = ConsoleColor.White;
                Console.WriteLine("\n\t請選擇您要進行的操作  \n\n\t1.進入戰鬥  2.進入商城  \n\n\t3.檢視當前屬性  4.檢視當前揹包物品  \n\n\t5.技能檢視   6.技能學習");
                //判斷玩家的按鍵,獲得玩家選擇
                ConsoleKeyInfo Downkey1 = Console.ReadKey(true);
                if (Downkey1.Key.Equals(ConsoleKey.D1)|| Downkey1.Key.Equals(ConsoleKey.NumPad1))
                {
                    //判斷玩家選擇角色,然後進行判斷,在戰鬥前儲存玩家Hp,用於在戰鬥結束後恢復
                    if (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Warrior)
                    {
                        //儲存戰士的HP
                        HPTemp = _RolesWarrior.Hp;
                    }
                    else if (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Wizard)
                    {
                        //儲存法師的HP
                        HPTempWizard = _RolesWizard.Hp;
                    }
                    Thread.Sleep(400);
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("\n\t**************您選擇的是進入戰鬥");
                    Console.ForegroundColor = ConsoleColor.White;
                    //載入動畫
                    Load();
                    //進入戰鬥場景
                    Combat();
                    break;
                }
                else if (Downkey1.Key.Equals(ConsoleKey.D2) || Downkey1.Key.Equals(ConsoleKey.NumPad2))
                {
                    Thread.Sleep(400);
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("\n\t**************您選擇的是進入商城");
                    Console.ForegroundColor = ConsoleColor.White;
                    //載入動畫
                    Load();
                    _WeaponStore.PanDuan();
                    break;
                }
                else if (Downkey1.Key.Equals(ConsoleKey.D3) || Downkey1.Key.Equals(ConsoleKey.NumPad3))
                {
                    Thread.Sleep(400);
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("\n\t**************您選擇的是檢視當前屬性");
                    Console.ForegroundColor = ConsoleColor.White;
                    //載入動畫
                    Load();
                    //根據玩家選擇的是法師還是戰士,展示不同的屬性
                    if(Enum_GamePlayerRoles== Enum_GameRoles.Enum_Warrior)
                    {
                        //戰士的角色資訊展示
                        GameRolesManager.Information(_PlayerRoles.Name, _RolesWarrior.Hp, _RolesWarrior.Attack, _RolesWarrior.Defense, _RolesWarrior.Experience, _RolesWarrior.Money, _RolesWarrior.Grade);
                    }
                    else if(Enum_GamePlayerRoles == Enum_GameRoles.Enum_Wizard)
                    {
                        //法師的角色資訊展示
                        GameRolesManager.Information(_PlayerRoles.Name, _RolesWizard.Hp, _RolesWizard.Attack, _RolesWizard.Defense, _RolesWizard.Experience, _RolesWizard.Money, _RolesWizard.Grade);
                    }
                    break;
                }
                else if(Downkey1.Key.Equals(ConsoleKey.D4) || Downkey1.Key.Equals(ConsoleKey.NumPad4))
                {
                    Thread.Sleep(400);
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("\n\t**************您選擇的是檢視揹包");
                    Console.ForegroundColor = ConsoleColor.White;
                    //載入動畫
                    Load();
                    _PlayerPackage.PackageToUp();
                    break;
                }
                else if (Downkey1.Key.Equals(ConsoleKey.D5) || Downkey1.Key.Equals(ConsoleKey.NumPad5))
                {
                    Thread.Sleep(400);
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("\n\t**************您選擇的是檢視技能");
                    Console.ForegroundColor = ConsoleColor.White;
                    //載入動畫
                    Load();
                    //根據玩家選擇的是法師還是戰士,展示不同的技能
                    if (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Warrior)
                    {
                        //戰士的技能列表
                        WarriorSkill.WarriorSkillShow();
                    }
                    else if (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Wizard)
                    {
                        //法師的技能列表
                        WizardSkill.WizardSkillShow();
                    }
                    break;
                }
                else if (Downkey1.Key.Equals(ConsoleKey.D6)||Downkey1.Key.Equals(ConsoleKey.NumPad6))
                {
                    Thread.Sleep(400);
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("\n\t**************您選擇的是學習技能");
                    Console.ForegroundColor = ConsoleColor.White;
                    //載入動畫
                    Load();
                    //根據玩家選擇的是法師還是戰士,學習不同的技能
                    if (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Warrior)
                    {
                        WarriorSkill.StartWarriorSkill();
                        //戰士的技能學習
                    }
                    else if (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Wizard)
                    {

                        WizardSkill.StartWizardSkill();
                        //法師的技能學習
                    }
                    break;
                }
                //選擇錯誤就提示錯誤,並回到開頭,重新選擇
                else
                {
                    Console.ForegroundColor = ConsoleColor.Red;
                    Thread.Sleep(500);
                    Console.WriteLine("\n\t**************很抱歉,您輸入的有誤,當前選擇不存在");
                }
            }

        }
        /// <summary>
        /// 延時載入,用於場景切換載入
        /// </summary>
        public static void Load()
        {
            Thread.Sleep(500);
            Console.Write("\n\t········Loading");
            //通過迴圈,載入延時,每0.4秒載入一個點
            for (int i = 1; i <= 8; i++)
            {
                Thread.Sleep(400);
                Console.Write("·");
            }
        }
        /// <summary>
        /// 戰鬥場景,當玩家選擇戰鬥後進入
        /// </summary>
        public static void Combat()
        {
            //生成隨機數
            Random sjs = new Random();
            //計數器,用來統計局數
            int countNum = 1;
            //判斷使用者選擇角色是否為戰士
            bool Rolse = (Enum_GamePlayerRoles == Enum_GameRoles.Enum_Warrior);
            //進入戰爭迴圈,直到玩家或者所有怪物死亡,退出
            while (true)
            {
                Console.ForegroundColor = ConsoleColor.Red;
                Console.WriteLine("\n\t戰爭開始了");
                Console.ForegroundColor = ConsoleColor.White;
                int ntemp = sjs.Next(1, 4);
                //用來隨機生成敵人(1-3個)
                for (int i = 1; i <= ntemp; i++)
                {
                    //生成一個敵人變數
                    ComputerRoles computerRoles = new ComputerRoles();
                    Thread.Sleep(400);
                    //輸出敵人變數的名字
                    Console.WriteLine("\n\t遇到敵人:    " + computerRoles.Name);
                    //把敵人加到敵人列表中
                    ComputerRoles.ListComputerRoles.Add(computerRoles);
                    Thread.Sleep(400);
                }
                //判斷玩家輸入的是否正確,輸入正確後退出迴圈
                while (true)
                {
                    //顯示遊戲進行了幾次
                    Console.ForegroundColor = ConsoleColor.Red;
                    Console.WriteLine("\n\t第" + countNum + "回合");
                    Console.ForegroundColor = ConsoleColor.White;
                    Thread.Sleep(400);
                    //提示玩家進行輸入
                    s: Console.WriteLine("\n\t請按鍵選擇要執行的行為: \n\n\t1.普通攻擊  2.技能攻擊  3.顯示敵方屬性  \n\n\t4.顯示己方屬性  5.逃跑   6.使用補血藥品");
                    //判斷玩家輸入的是否正確
                    ConsoleKeyInfo Downkey1 = Console.ReadKey(true);
                    //玩家輸入後進入攻擊方法
                    if (Downkey1.Key.Equals(ConsoleKey.D1)|| Downkey1.Key.Equals(ConsoleKey.NumPad1))
                    {
                        Thread.Sleep(400);
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("\n\t您選擇的是普通攻擊,請按鍵選擇攻擊目標:");
                        Console.ForegroundColor = ConsoleColor.White;
                        //輸出生成的所有敵人,供玩家選擇攻擊
                        for (int i = 0; i < ComputerRoles.ListComputerRoles.Count; i++)
                        {
                            Console.WriteLine("\n\t" + (i + 1) + ":" + ComputerRoles.ListComputerRoles[i].Name);
                        }
                        //判斷輸入的是否正確
                        int Ninttemp;
                        while (true)
                        {
                            //接受玩家的輸入資訊
                            string strTemp = Console.ReadLine();
                            //判斷玩家輸入的是否為數字,如果是就退出迴圈
                            if (int.TryParse(strTemp, out Ninttemp))
                            {
                                //判斷玩家輸入的是否超過了小怪列表的長度
                                if (ComputerRoles.ListComputerRoles.Count >= Ninttemp)
                                {
                                    break;
                                }
                                else
                                {
                                    Thread.Sleep(400);
                                    Console.ForegroundColor = ConsoleColor.Red;
                                    Console.WriteLine("\n\t很抱歉,您選擇的物件不存在,請重新選擇");
                                    Console.ForegroundColor = ConsoleColor.White;
                                }
                            }
                            else
                            {
                                Thread.Sleep(400);
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("\n\t很抱歉,您輸入的有誤,請重新選擇");
                                Console.ForegroundColor = ConsoleColor.White;
                            }
                        }
                        //判斷玩家選擇的角色,在攻擊中對怪物進行不同上海
                        if (Rolse)
                        {
                            //給被攻擊物件方法傳入:戰士
                            ComputerRoles.ListComputerRoles[Ninttemp - 1].Bcombat(_RolesWarrior);

                        }
                        else
                        {
                            //給被攻擊物件方法傳入:法師
                            ComputerRoles.ListComputerRoles[Ninttemp - 1].Bcombat(_RolesWizard);
                        }

                    }
                    else if (Downkey1.Key.Equals(ConsoleKey.D2) || Downkey1.Key.Equals(ConsoleKey.NumPad2))
                    {
                        Thread.Sleep(400);
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("\n\t您選擇的是技能攻擊,請按鍵選擇攻擊目標:");
                        Console.ForegroundColor = ConsoleColor.White;
                        for (int i = 0; i < ComputerRoles.ListComputerRoles.Count; i++)
                        {
                            Console.WriteLine("\n\t" + (i + 1) + ":" + ComputerRoles.ListComputerRoles[i].Name);
                        }
                        //判斷輸入的是否正確
                        int Ninttemp;
                        while (true)
                        {
                            //接受玩家輸入的選擇目標,並進行判斷
                            string strTemp = Console.ReadLine();
                            if (int.TryParse(strTemp, out Ninttemp))
                            {
                                if (ComputerRoles.ListComputerRoles.Count >= Ninttemp)
                                {
                                    break;
                                }
                                else
                                {
                                    Thread.Sleep(400);
                                    Console.WriteLine("\n\t很抱歉,您輸入的有誤,請重新選擇");
                                }
                            }
                            else
                            {
                                Thread.Sleep(400);
                                Console.WriteLine("\n\t很抱歉,您輸入的有誤,請重新選擇");
                            }
                        }
                        if (Rolse)
                        {
                            //改變引數,傳遞使用了技能攻擊
                            Bskill = true;
                            ComputerRoles.ListComputerRoles[Ninttemp - 1].Bcombat(_RolesWarrior);
                        }
                        else
                        {
                            //改變引數,傳遞使用了技能攻擊
                            Bskill = true;
                            ComputerRoles.ListComputerRoles[Ninttemp - 1].Bcombat(_RolesWizard);
                        }
                    }
                    else if (Downkey1.Key.Equals(ConsoleKey.D3) || Downkey1.Key.Equals(ConsoleKey.NumPad3))
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("\n\t您選擇的是顯示敵方屬性");
                        Console.ForegroundColor = ConsoleColor.White;
                        Load();
                        //加載出所有怪物的屬性
                        for (int i = 0; i < ComputerRoles.ListComputerRoles.Count; i++)
                        {
                            GameRolesManager.Information(ComputerRoles.ListComputerRoles[i].Name, ComputerRoles.ListComputerRoles[i].Hp, ComputerRoles.ListComputerRoles[i].Attack, ComputerRoles.ListComputerRoles[i].Defense, 0, 0, 0, false);
                        }
                    }
                    else if (Downkey1.Key.Equals(ConsoleKey.D4) || Downkey1.Key.Equals(ConsoleKey.NumPad4))
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("\n\t您選擇的是顯示己方屬性");
                        Console.ForegroundColor = ConsoleColor.White;
                        Load();
                        if (Rolse)
                        {
                            //戰士的角色資訊展示
                            GameRolesManager.Information(_PlayerRoles.Name, _RolesWarrior.Hp, _RolesWarrior.Attack, _RolesWarrior.Defense, _RolesWarrior.Experience, _RolesWarrior.Money, _RolesWarrior.Grade, false);
                        }
                        else if (!Rolse)
                        {
                            //法師的角色資訊展示
                            GameRolesManager.Information(_PlayerRoles.Name, _RolesWizard.Hp, _RolesWizard.Attack, _RolesWizard.Defense, _RolesWizard.Experience, _RolesWizard.Money, _RolesWizard.Grade, false);
                        }

                    }
                    else if (Downkey1.Key.Equals(ConsoleKey.D5) || Downkey1.Key.Equals(ConsoleKey.NumPad5))
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("\n\t正在為您加速逃跑中");
                        Console.ForegroundColor = ConsoleColor.White;
                        Load();
                        int temp = sjs.Next(1, 3);
                        if (temp == 2)
                        {
                            Console.ForegroundColor = ConsoleColor.Yellow;
                            Console.WriteLine("\n\n\t逃跑成功………………");
                            Console.ForegroundColor = ConsoleColor.White;
                            GameChoice();
                        }
                        else
                        {
                            Console.ForegroundColor = ConsoleColor.Yellow;
                            Console.WriteLine("\n\n\t逃跑失敗………………");
                            Console.ForegroundColor = ConsoleColor.White;
                        }
                    }
                    else if(Downkey1.Key.Equals(ConsoleKey.D6) || Downkey1.Key.Equals(ConsoleKey.NumPad6))
                    {
                        Console.WriteLine("\n\t您選擇的是使用補血藥品");
                        Load();
                        Console.ForegroundColor = ConsoleColor.Red;
                        Console.WriteLine("\n\t請選擇您要使用的補血藥品");
                        Console.ForegroundColor = ConsoleColor.White;
                        Console.WriteLine("\n\t1.能量甘飲");
                        Console.WriteLine("\n\t2.止痛藥");
                        ConsoleKeyInfo Downkey4 = Console.ReadKey(true);
                        if (Downkey4.Key.Equals(ConsoleKey.D1)|| Downkey4.Key.Equals(ConsoleKey.NumPad1))
                        {
                            if(GamePackage.DicPackageGoods1.ContainsKey("能量甘飲"))
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("\n\t您已成功使用能量甘飲,您的血量增加了120");
                                Console.ForegroundColor = ConsoleColor.White;
                                int count = GamePackage.DicPackageGoods1["能量甘飲"];
                                GamePackage.DicPackageGoods1["能量甘飲"] = count - 1;
                                _RolesWarrior.Hp += 120;
                                _RolesWizard.Hp += 120;
                                //判斷加血是否超過了最大血量
                                if (_RolesWarrior.Hp>ntemp)
                                {
                                    _RolesWarrior.Hp = ntemp;
                                }
                                if(_RolesWizard.Hp>HPTempWizard)
                                {
                                    _RolesWizard.Hp = HPTempWizard;
                                }
                            }
                            else
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("\n\t您的揹包中沒有此物品,您可以去商店購買");
                                Console.ForegroundColor = ConsoleColor.White;
                            }
                        }
                        else if(Downkey4.Key.Equals(ConsoleKey.D2) || Downkey4.Key.Equals(ConsoleKey.NumPad2))
                        {
                            if (GamePackage.DicPackageGoods1.ContainsKey("止痛藥"))
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("\n\t您已成功使用止痛藥,您的血量增加了240");
                                Console.ForegroundColor = ConsoleColor.White;
                                int count = GamePackage.DicPackageGoods1["止痛藥"];
                                GamePackage.DicPackageGoods1["止痛藥"] = count - 1;
                                _RolesWarrior.Hp += 240;
                                _RolesWizard.Hp += 240;
                                //判斷加血是否超過了最大血量
                                if (_RolesWarrior.Hp > ntemp)
                                {
                                    _RolesWarrior.Hp = ntemp;
                                }
                                if (_RolesWizard.Hp > HPTempWizard)
                                {
                                    _RolesWizard.Hp = HPTempWizard;
                                }
                            }
                            else
                            {
                                Console.ForegroundColor = ConsoleColor.Red;
                                Console.WriteLine("\n\t您的揹包中沒有此物品,您可以去商店購買");
                                Console.ForegroundColor = ConsoleColor.White;
                            }
                        }
                        else
                        {
                            Console.ForegroundColor = ConsoleColor.Red;
                            Thread.Sleep(500);
                            Console.WriteLine("\n\t很抱歉,您輸入的有誤,請重新選擇");
                            Console.ForegroundColor = ConsoleColor.White;
                        }
                    }
                    else
                    {
                        Console.ForegroundColor = ConsoleColor.Red;
                        Thread.Sleep(500);
                        Console.WriteLine("\n\t很抱歉,您輸入的有誤,請重新選擇");
                        Console.ForegroundColor = ConsoleColor.White;
                        goto s;
                    }
                    //判斷生成怪物是否被消滅
                    for (int i = 0; i < ComputerRoles.ListComputerRoles.Count; i++)
                    {
                        if (ComputerRoles.ListComputerRoles[i].Hp <= 0)
                        {
                            Thread.Sleep(400);
                            Console.WriteLine("\n\t"+ComputerRoles.ListComputerRoles[i].Name + "被消滅了");
                            //如果消滅了就刪掉這個怪物
                            ComputerRoles.ListComputerRoles.RemoveAt(i);
                            i--;
                        }
                    }
                    //如果所有怪物被消滅
                    if (ComputerRoles.ListComputerRoles.Count == 0)
                    {
                        Thread.Sleep(400);
                        Console.BackgroundColor = ConsoleColor.Red;
                        Console.WriteLine("\n\t戰鬥結束,你獲勝了!!!");
                        Console.BackgroundColor = ConsoleColor.White;
                        //隨機生成經驗和金錢
                        int jie2 = sjs.Next(10, 20);
                        int jie3 = sjs.Next(5, 200);
                        //給不同角色分別增加金錢和經驗
                        if (Rolse)
                        {
                            _RolesWarrior.Experience+=jie2;
                            Thread.Sleep(400);
                            Console.WriteLine("\n\t本次戰爭獲得經驗" + jie2);
                            _RolesWarrior.Money += jie3;
                            Thread.Sleep(400);
                            Console.WriteLine("\n\t本次戰爭獲得金錢" + jie3);
                          
                        }
                        else
                        {
                            _RolesWizard.Experience += jie2;
                            Thread.Sleep(400);
                            Console.WriteLine("\n\t本次戰爭獲得經驗" + jie2);
                            _RolesWizard.Money += jie3;
                            Thread.Sleep(400);
                            Console.WriteLine("\n\t本次戰爭獲得金錢" + jie3);

                        }
                        //隨機生成物品
                        int jie1 = sjs.Next(1, 10);
                        if (jie1 == 9 || jie1 == 7)
                        {
                            Thread.Sleep(400);
                            Console.BackgroundColor = ConsoleColor.Yellow;
                            Console.WriteLine("\n\t本次戰爭獲得能量甘飲1瓶,已自動為您放入揹包");
                            Console.BackgroundColor = ConsoleColor.White;
                            //給玩家揹包增加這個物品
                            int count = GamePackage.DicPackageGoods1["能量甘飲"];
                            GamePackage.DicPackageGoods1["能量甘飲"] = count + 1;
                        }
                        if (jie1 == 5)
                        {
                            Thread.Sleep(400);
                            Console.BackgroundColor = ConsoleColor.Yellow;
                            Console.WriteLine("\n\t本次戰爭獲得止痛藥1瓶,已自動為您放入揹包");
                            Console.BackgroundColor = ConsoleColor.White;
                            int count = GamePackage.DicPackageGoods1["止痛藥"];
                            //給玩家揹包增加這個物品
                            GamePackage.DicPackageGoods1["止痛藥"] = count + 1;
                        }
                        //判斷角色是否可以升級
                        GameRolesManager.Up(Rolse);
                        //回到選擇頁面,等待玩家再次選擇
                        GameChoice();
                    }
                    //如果怪物沒有被消滅
                    else
                    {
                        //局數增加
                        countNum++;
                        foreach (var guaiwu in ComputerRoles.ListComputerRoles)
                        {
                            //如果怪物的HP大於0,攻擊玩家
                            if (guaiwu.Hp > 0)
                            {
                                if (Rolse)
                                {
                                    //傳遞對玩家傷害的怪物
                                    _RolesWarrior.Bcombat(guaiwu);
                                }
                                else if (!Rolse)
                                {
                                    _RolesWizard.Bcombat(guaiwu);
                                }
                            }
                        }
                    }
                }
            }
        }
    }
}

專案原始碼和可執行程式下載地址

https://download.csdn.net/download/baidu_41878134/10529998

C#專案交流

如果你想免費獲得專案原始碼,如果你在學習方面有什麼問題,可以加企鵝群:787981076。我會給你講解