C#控制檯RPG遊戲,面向物件練習
阿新 • • 發佈:2019-01-04
簡介
閒來無事寫的一個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。我會給你講解