按类分的
(1)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using ClassLibrary1;
using System.Threading;
namespace FinallProject
{
class Program
{
static void Main(string[] args)
{
InitView init = new InitView();
init.GameBackground();
init.LoadingInterface();
init.Init();
}
}
}
(2)
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
using ClassLibrary1;
using System.Media;
using 回合制游戏;
namespace FinallProject
{
enum Choose
{
one = 1, two = 2, three = 3, four = 4, five = 5
};
class InitView
{
//初始化用户金额
private int userMoney = 1000;
private int EnemyMoney = 1000;
//设置我方英雄队列和敌方英雄队列
private List<Hero> ListOurHero = new List<Hero>();
private List<Hero> ListEnemyHero = new List<Hero>();
//增加用户金额
public void AddUserMoney(int money)
{
userMoney = userMoney + money;
}
//设置敌人的金钱
public void SetEnemyMoney(int money)
{
EnemyMoney = money;
}
//游戏背景介绍
public void GameBackground()
{
Console.WriteLine("游戏背景介绍:");
Console.WriteLine();
Console.WriteLine(" 本游戏是一款回合制游戏,此游戏是基于两军冲突的战场。\n游戏规则及内容很大程度上借鉴了其他流行回合制游戏的内容,融入了中国三国时期的历史背景以及《三国演义》小说内容,形成了具有历史特色的回合制游戏。");
Console.WriteLine();
Console.WriteLine();
}
//游戏加载界面:
public void LoadingInterface()
{
Console.WriteLine("游戏正在加载中......");
Console.WriteLine();
Console.WriteLine();
Console.WriteLine();
Console.WriteLine(" -------- ---------");
Console.WriteLine(" |@ @| 5 VS 5 回合游戏 |+ +|");
Console.WriteLine(" | ## | | ## |");
Console.WriteLine(" -------- \\ / ------ ---------");
Console.WriteLine(" #### \\ / | #### ");
Console.WriteLine(" @ ####@ \\ / |_____ & #### &");
Console.WriteLine(" @ #### @ \\ / | & #### &");
Console.WriteLine(" @ #### \\/ ______| #### &");
}
//初始化界面
public void Init()
{
MusicManager.Turn();
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("是否了解游戏规则?");
Console.WriteLine("输入1 进行了解,输入2 为跳过");
//对 是否了解游戏规则进行输入
string sflj = Console.ReadLine();
for (int i = 0; sflj != "q"; i++)
{
try
{
int b = int.Parse(sflj);
if (b == 1)
{
Console.WriteLine();
Console.WriteLine();
Console.WriteLine("游戏规则:");
Console.WriteLine(" ①己方阵营和敌方阵营分别有五个英雄,每个英雄的初始状态都是血量200 魔法值100 。 游戏开始后首先己方攻击,\n每次从对方阵营随机筛选一个敌人进行攻击,\n每次魔法攻击会消耗魔法值。");
Console.WriteLine(" ②攻击的同时会输出攻击信息:如小一攻击了小二,小二剩余血量为80。" + "\n当己方所有英雄攻击完毕之后,敌人开始攻击,攻击流程同上。 当某一个敌人或者己方英雄死亡后,\n死亡的角色会从对应阵营中移除。");
Console.WriteLine(" ③获胜条件:只有当某一个阵营中的英雄全部死亡,游戏结束,\n进行游戏结算,显示获胜方。");
Console.WriteLine("=============================================================== ");
break;
}
else if (b == 2)
{
Console.WriteLine("游戏规则已跳过");
Console.WriteLine("===============================================================");
break;
}
else
{
Console.WriteLine("请输入正确的值!");
Thread.Sleep(2000);
Console.Clear();
}
}
catch (Exception)
{
Console.WriteLine("请输入正确的值!");
Thread.Sleep(2000);
Console.Clear();
}
Console.WriteLine("是否了解游戏规则?");
Console.WriteLine("输入1 进行了解,输入2 为跳过");
sflj = Console.ReadLine();
}
Thread.Sleep(1000);
Console.Clear();
Console.WriteLine();
Console.WriteLine("欢迎进入游戏 ");
Console.WriteLine();
Console.WriteLine("请选择游戏模式(按q退出): ");
Console.WriteLine("");
Console.WriteLine("1. 英雄乱斗(PVP)");
Console.WriteLine();
Console.WriteLine("2. 副本剿匪(PVE)");
Console.WriteLine();
Console.WriteLine("3. 查看金钱");
Console.WriteLine();
Console.WriteLine("4. 双人pk模式");
Console.WriteLine();
Console.WriteLine("5. 设定游戏背景音乐");
Console.WriteLine();
Console.WriteLine("6. 英雄图册");
Console.WriteLine();
//初始化一开始的变量
string begin = Console.ReadLine();
for (int i = 0; begin != "q"; i++)
{
try
{
int a = int.Parse(begin);
if (a == 1)
{
Console.WriteLine("进入游戏");
Thread.Sleep(1000);
Console.Clear();
SetEnemyMoney(userMoney);
InitFightOursHero();
InitFightEnemyHero();
Fight(0);
Thread.Sleep(3000);
Console.Clear();
}
else if (a == 2)
{
Console.WriteLine("进入副本");
Thread.Sleep(1000);
Console.Clear();
FuBen();
InitFightOursHero();
InitFightEnemyHero();
AddUserMoney(Fight(1));
Thread.Sleep(5000);
Console.Clear();
}
else if (a == 3)
{
Console.WriteLine("您当前的金钱为" + userMoney + "/局");
Thread.Sleep(2000);
Console.Clear();
//刷屏
}
else if (a == 4)
{
Console.WriteLine("进入pk模式");
Thread.Sleep(1000);
BattleControl1 battleControl1 = BattleControl1.GetInstance1();
Console.Clear();
InitFightOursHero();
InitFightEnemyHero_pk();
battleControl1.Game(ListOurHero, ListEnemyHero);
Thread.Sleep(2000);
Console.Clear();
//刷屏
}
else if (a == 5)
{
Console.Clear();
Console.WriteLine("设置音乐");
MusicManager.ShowMusics();
MusicManager.ChooseMusic(int.Parse(Console.ReadLine()));
Thread.Sleep(1000);
Console.Clear();
}
else if (a == 6)
{
Console.Clear();
Console.WriteLine("英雄图册");
HeroCharacteristics();
Thread.Sleep(1000);
Console.Clear();
}
else
{
Console.WriteLine("请输入正确的值!");
Thread.Sleep(2000);
Console.Clear();
}
}
catch (Exception)
{
//Console.WriteLine("请输入正确的值!");
Thread.Sleep(2000);
Console.Clear();
}
Console.WriteLine("请选择游戏模式(按q退出): ");
Console.WriteLine("");
Console.WriteLine("1. 英雄乱斗(PVP)");
Console.WriteLine();
Console.WriteLine("2. 副本剿匪(PVE)");
Console.WriteLine();
Console.WriteLine("3. 查看金钱");
Console.WriteLine();
Console.WriteLine("4. 双人pk模式");
Console.WriteLine();
Console.WriteLine("5. 设置音乐");
Console.WriteLine();
Console.WriteLine("6. 英雄图册");
Console.WriteLine();
begin = Console.ReadLine();
}
}
//初始化战斗
public void InitFightOursHero()
{
int money = userMoney;
HeroDetail heroDetail = new HeroDetail();
//获取各个等级的英雄
List<Hero> list1 = new List<Hero>();
List<Hero> list2 = new List<Hero>();
List<Hero> list3 = new List<Hero>();
List<Hero> list4 = new List<Hero>();
List<Hero> userListHero = new List<Hero>();
list1 = heroDetail.GetHero1();
list2 = heroDetail.GetHero2();
list3 = heroDetail.GetHero3();
list4 = heroDetail.GetHero4();
//展示英雄列表
Console.WriteLine("一级英雄:");
foreach (var item in list1)
{
Console.Write(item.name + " 花费:" + item.heroMoney + " ");
}
Console.WriteLine();
Console.WriteLine("二级英雄");
foreach (var item in list2)
{
Console.Write(item.name + " 花费:" + item.heroMoney + " ");
}
Console.WriteLine();
Console.WriteLine("三级英雄");
foreach (var item in list3)
{
Console.Write(item.name + " 花费:" + item.heroMoney + " ");
}
Console.WriteLine();
Console.WriteLine("四级英雄");
foreach (var item in list4)
{
Console.Write(item.name + " 花费:" + item.heroMoney + " ");
}
Console.WriteLine();
Console.WriteLine("当前余额为: " + money);
Console.WriteLine("请选择英雄(按任意键继续,按q键退出/结束):");
Console.WriteLine("注意:选择格式为先级别后英雄 如:1回车 3回车 对应1级3号英雄");
string str = Console.ReadLine();
for (int i = 0; str != "q"; i++)
{
if (money >= 0)
{
try
{
int parse = int.Parse(str);
if (parse == 1)
{
Console.WriteLine("请选择英雄: ");
try
{
int parse2 = int.Parse(Console.ReadLine());
if (parse2 >= 1 && parse2 <= list1.Count)
{
parse2--;
if (money - list1[parse2].heroMoney >= 0)
{
userListHero.Add(list1[parse2]);
money -= list1[parse2].heroMoney;
}
else
{
Console.WriteLine("您的金钱不够!");
}
}
else
{
Console.WriteLine("输入错误!");
}
}
catch (Exception)
{
Console.WriteLine("请输入正确的值!");
}
}
else if (parse == 2)
{
Console.WriteLine("请选择英雄: ");
try
{
int parse2 = int.Parse(Console.ReadLine());
if (parse2 >= 1 && parse2 <= (list2.Count))
{
parse2--;
if (money - list2[parse2].heroMoney >= 0)
{
userListHero.Add(list2[parse2]);
money -= list2[parse2].heroMoney;
}
else
{
Console.WriteLine("您的金钱不够!");
}
}
else
{
Console.WriteLine("输入错误!");
}
}
catch (Exception)
{
Console.WriteLine("请输入正确的值!");
}
}
else if (parse == 3)
{
Console.WriteLine("请选择英雄: ");
try
{
int parse2 = int.Parse(Console.ReadLine());
if (parse2 >= 1 && parse2 <= (list3.Count))
{
parse2--;
if (money - list3[parse2].heroMoney >= 0)
{
userListHero.Add(list3[parse2]);
money -= list3[parse2].heroMoney;
}
else
{
Console.WriteLine("您的金钱不够!");
}
}
else
{
Console.WriteLine("输入错误!");
}
}
catch (Exception)
{
Console.WriteLine("请输入正确的值!");
}
}
else if (parse == 4)
{
Console.WriteLine("请选择英雄: ");
try
{
int parse2 = int.Parse(Console.ReadLine());
if (parse2 >= 1 && parse2 <= (list4.Count))
{
parse2--;
if (money - list4[parse2].heroMoney >= 0)
{
userListHero.Add(list4[parse2]);
money -= list4[parse2].heroMoney;
}
else
{
Console.WriteLine("您的金钱不够!");
}
}
else
{
Console.WriteLine("输入错误!");
}
}
catch (Exception)
{
Console.WriteLine("请输入正确的值!");
}
}
else
{
Console.WriteLine("输入错误!");
}
}
catch (Exception)
{
Console.WriteLine("请输入正确的值!");
}
Console.WriteLine("您选择的英雄为:");
foreach (var item in userListHero)
{
Console.Write(item.name + " ");
}
Thread.Sleep(2000);
Console.Clear();
//展示英雄列表
Console.WriteLine("一级英雄:");
foreach (var item in list1)
{
Console.Write(item.name + " 花费:" + item.heroMoney + " ");
}
Console.WriteLine();
Console.WriteLine("二级英雄");
foreach (var item in list2)
{
Console.Write(item.name + " 花费:" + item.heroMoney + " ");
}
Console.WriteLine();
Console.WriteLine("三级英雄");
foreach (var item in list3)
{
Console.Write(item.name + " 花费:" + item.heroMoney + " ");
}
Console.WriteLine();
Console.WriteLine("四级英雄");
foreach (var item in list4)
{
Console.Write(item.name + " 花费:" + item.heroMoney + " ");
}
Console.WriteLine();
Console.WriteLine("当前余额为: " + money);
Console.WriteLine("请选择英雄(按任意键继续,按q键退出/结束):");
str = Console.ReadLine();
if (str == "q")
{
break;
}
}
else
{
Console.WriteLine("您的金钱不足!");
return;
}
}
ListOurHero = userListHero;
}
//玩家二远英雄
public void InitFightEnemyHero_pk()
{
int money = userMoney;
HeroDetail heroDetail = new HeroDetail();
//获取各个等级的英雄
List<Hero> list1 = new List<Hero>();
List<Hero> list2 = new List<Hero>();
List<Hero> list3 = new List<Hero>();
List<Hero> list4 = new List<Hero>();
List<Hero> userListHero = new List<Hero>();
list1 = heroDetail.GetHero1();
list2 = heroDetail.GetHero2();
list3 = heroDetail.GetHero3();
list4 = heroDetail.GetHero4();
//展示英雄列表
Console.WriteLine("一级英雄:");
foreach (var item in list1)
{
Console.Write(item.name + " 花费:" + item.heroMoney + " ");
}
Console.WriteLine();
Console.WriteLine("二级英雄");
foreach (var item in list2)
{
Console.Write(item.name + " 花费:" + item.heroMoney + " ");
}
Console.WriteLine();
Console.WriteLine("三级英雄");
foreach (var item in list3)
{
Console.Write(item.name + " 花费:" + item.heroMoney + " ");
}
Console.WriteLine();
Console.WriteLine("四级英雄");
foreach (var item in list4)
{
Console.Write(item.name + " 花费:" + item.heroMoney + " ");
}
Console.WriteLine();
Console.WriteLine("当前余额为: " + money);
Console.WriteLine("请选择英雄(按任意键继续,按q键退出/结束):");
Console.WriteLine("注意:选择格式为先级别后英雄 如:1回车 3回车 对应1级3号英雄");
string str = Console.ReadLine();
for (int i = 0; str != "q"; i++)
{
if (money >= 0)
{
try
{
int parse = int.Parse(str);
if (parse == 1)
{
Console.WriteLine("请选择英雄: ");
try
{
int parse2 = int.Parse(Console.ReadLine());
if (parse2 >= 1 && parse2 <= list1.Count)
{
parse2--;
if (money - list1[parse2].heroMoney >= 0)
{
userListHero.Add(list1[parse2]);
money -= list1[parse2].heroMoney;
}
else
{
Console.WriteLine("您的金钱不够!");
}
}
else
{
Console.WriteLine("输入错误!");
}
}
catch (Exception)
{
Console.WriteLine("请输入正确的值!");
}
}
else if (parse == 2)
{
Console.WriteLine("请选择英雄: ");
try
{
int parse2 = int.Parse(Console.ReadLine());
if (parse2 >= 1 && parse2 <= (list2.Count))
{
parse2--;
if (money - list2[parse2].heroMoney >= 0)
{
userListHero.Add(list2[parse2]);
money -= list2[parse2].heroMoney;
}
else
{
Console.WriteLine("您的金钱不够!");
}
}
else
{
Console.WriteLine("输入错误!");
}
}
catch (Exception)
{
Console.WriteLine("请输入正确的值!");
}
}
else if (parse == 3)
{
Console.WriteLine("请选择英雄: ");
try
{
int parse2 = int.Parse(Console.ReadLine());
if (parse2 >= 1 && parse2 <= (list3.Count))
{
parse2--;
if (money - list3[parse2].heroMoney >= 0)
{
userListHero.Add(list3[parse2]);
money -= list3[parse2].heroMoney;
}
else
{
Console.WriteLine("您的金钱不够!");
}
}
else
{
Console.WriteLine("输入错误!");
}
}
catch (Exception)
{
Console.WriteLine("请输入正确的值!");
}
}
else if (parse == 4)
{
Console.WriteLine("请选择英雄: ");
try
{
int parse2 = int.Parse(Console.ReadLine());
if (parse2 >= 1 && parse2 <= (list4.Count))
{
parse2--;
if (money - list4[parse2].heroMoney >= 0)
{
userListHero.Add(list4[parse2]);
money -= list4[parse2].heroMoney;
}
else
{
Console.WriteLine("您的金钱不够!");
}
}
else
{
Console.WriteLine("输入错误!");
}
}
catch (Exception)
{
Console.WriteLine("请输入正确的值!");
}
}
else
{
Console.WriteLine("输入错误!");
}
}
catch (Exception)
{
Console.WriteLine("请输入正确的值!");
}
Console.WriteLine("您选择的英雄为:");
foreach (var item in userListHero)
{
Console.Write(item.name + " ");
}
Thread.Sleep(2000);
Console.Clear();
//展示英雄列表
Console.WriteLine("一级英雄:");
foreach (var item in list1)
{
Console.Write(item.name + " 花费:" + item.heroMoney + " ");
}
Console.WriteLine();
Console.WriteLine("二级英雄");
foreach (var item in list2)
{
Console.Write(item.name + " 花费:" + item.heroMoney + " ");
}
Console.WriteLine();
Console.WriteLine("三级英雄");
foreach (var item in list3)
{
Console.Write(item.name + " 花费:" + item.heroMoney + " ");
}
Console.WriteLine();
Console.WriteLine("四级英雄");
foreach (var item in list4)
{
Console.Write(item.name + " 花费:" + item.heroMoney + " ");
}
Console.WriteLine();
Console.WriteLine("当前余额为: " + money);
Console.WriteLine("请选择英雄(按任意键继续,按q键退出/结束):");
str = Console.ReadLine();
if (str == "q")
{
break;
}
}
else
{
Console.WriteLine("您的金钱不足!");
return;
}
}
ListEnemyHero = userListHero;
}
//为敌方自动分配英雄
public void InitFightEnemyHero()
{
Console.Clear();
int userMoney1 = EnemyMoney;
HeroDetail heroDetail = new HeroDetail();
//获取各个等级的英雄
List<Hero> list1 = new List<Hero>();
List<Hero> list2 = new List<Hero>();
List<Hero> list3 = new List<Hero>();
List<Hero> list4 = new List<Hero>();
List<Hero> userListHero = new List<Hero>();
list1 = heroDetail.GetHero1();
list2 = heroDetail.GetHero2();
list3 = heroDetail.GetHero3();
list4 = heroDetail.GetHero4();
Random ran = new Random();
for (int i = 0; userMoney1 > 0; i++)
{
int count = ran.Next(4);
if (count == 1)
{
int parse2 = ran.Next(list1.Count);
if (parse2 >= 1 && parse2 <= (list1.Count))
{
parse2--;
userListHero.Add(list1[parse2]);
userMoney1 -= list1[parse2].heroMoney;
}
}
else if (count == 2)
{
int parse2 = ran.Next(list2.Count);
if (parse2 >= 1 && parse2 <= (list2.Count))
{
parse2--;
userListHero.Add(list2[parse2]);
userMoney1 -= list2[parse2].heroMoney;
}
}
else if (count == 3)
{
int parse2 = ran.Next(list3.Count);
if (parse2 >= 1 && parse2 <= (list3.Count))
{
parse2--;
userListHero.Add(list3[parse2]);
userMoney1 -= list3[parse2].heroMoney;
}
}
else if (count == 4)
{
int parse2 = ran.Next(list4.Count);
if (parse2 >= 1 && parse2 <= (list4.Count))
{
parse2--;
userListHero.Add(list4[parse2]);
userMoney1 -= list4[parse2].heroMoney;
}
}
}
if (userMoney1 < 0)
{
userListHero.RemoveAt(userListHero.Count - 1);
}
Console.WriteLine("敌方选择的英雄为:");
foreach (var item in userListHero)
{
Console.Write(item.name + " ");
}
Thread.Sleep(2000);
Console.Clear();
ListEnemyHero = userListHero;
}
//战斗类
public int Fight(int flag)
{
BattleControl battleContro = BattleControl.GetBattleControl();
battleContro.SetHeroOurs(ListOurHero);
battleContro.SetHeroEnemy(ListEnemyHero);
battleContro.Fight();
if (flag == 1) { Console.WriteLine("本局获得金钱:" + battleContro.GetMoney()); }
return battleContro.GetMoney();
}
//副本剿匪
public void FuBen()
{
Console.WriteLine("请输入游戏的难度(按q退出):");
Console.WriteLine("1. 容易");
Console.WriteLine("2. 普通");
Console.WriteLine("3. 困难");
string jiao = Console.ReadLine();
for (int i = 0; jiao != "q"; i++)
{
try
{
int a = int.Parse(jiao);
if (a == 1)
{
SetEnemyMoney(800);
Thread.Sleep(2000);
Console.Clear();
return;
}
else if (a == 2)
{
SetEnemyMoney(2500);
Thread.Sleep(2000);
Console.Clear();
return;
}
else if (a == 3)
{
SetEnemyMoney(5000);
Thread.Sleep(2000);
Console.Clear();
return;
}
}
catch (Exception)
{
Console.WriteLine("请输入正确的难度!");
Thread.Sleep(2000);
Console.Clear();
}
Console.WriteLine("请输入游戏的难度(按q退出):");
Console.WriteLine("1. 容易");
Console.WriteLine("2. 普通");
Console.WriteLine("3. 困难");
jiao = Console.ReadLine();
}
}
//英雄图册
public void HeroCharacteristics()
{
HeroDetail heroDetail = new HeroDetail();
//实例化对象
List<Hero> list1 = new List<Hero>();
List<Hero> list2 = new List<Hero>();
List<Hero> list3 = new List<Hero>();
List<Hero> list4 = new List<Hero>();
//获取各个等级的英雄
list1 = heroDetail.GetHero1();
list2 = heroDetail.GetHero2();
list3 = heroDetail.GetHero3();
list4 = heroDetail.GetHero4();
Console.WriteLine("请输入你要查询的英雄类别");
Console.WriteLine("有1,2,3,4四个等级");
Console.WriteLine("输入5可以查询全部英雄,输入其他数跳出功能");
int n = int.Parse(Console.ReadLine());
Choose num = (Choose)n;
switch (num)
{
case Choose.one:
//展示英雄列表
Console.WriteLine("一级英雄:");
foreach (var item in list1)
{
Console.WriteLine(item.name + " 花费:" + item.heroMoney + " 血量 " + item.hp + " 物理攻击力" + item.physicsAttack + " 魔法攻击力" + item.magicAttack +"魔力值"+item.mp +"\n");
}
break;
case Choose.two:
foreach (var item in list2)
{
Console.WriteLine("二级英雄:");
Console.WriteLine(item.name + " 花费:" + item.heroMoney + " 血量 " + item.hp + " 物理攻击力" + item.physicsAttack + " 魔法攻击力" + item.magicAttack + "魔力值" + item.mp + "\n");
}
break;
case Choose.three:
foreach (var item in list3)
{
Console.WriteLine("三级英雄:");
Console.WriteLine(item.name + " 花费:" + item.heroMoney + " 血量 " + item.hp + " 物理攻击力" + item.physicsAttack + " 魔法攻击力" + item.magicAttack + "魔力值" + item.mp + "\n");
}
break;
case Choose.four:
foreach (var item in list4)
{
Console.WriteLine("四级英雄:");
Console.WriteLine(item.name + " 花费:" + item.heroMoney + " 血量 " + item.hp + " 物理攻击力" + item.physicsAttack + " 魔法攻击力" + item.magicAttack + "魔力值" + item.mp + "\n");
}
break;
case Choose.five:
Console.WriteLine("全部英雄:");
foreach (var item in list1)
{
Console.WriteLine(item.name + " 花费:" + item.heroMoney + " 血量 " + item.hp + " 物理攻击力" + item.physicsAttack + " 魔法攻击力" + item.magicAttack + "魔力值" + item.mp + "\n");
}
foreach (var item in list2)
{
Console.WriteLine(item.name + " 花费:" + item.heroMoney + " 血量 " + item.hp + " 物理攻击力" + item.physicsAttack + " 魔法攻击力" + item.magicAttack + "魔力值" + item.mp + "\n");
}
foreach (var item in list3)
{
Console.WriteLine(item.name + " 花费:" + item.heroMoney + " 血量 " + item.hp + " 物理攻击力" + item.physicsAttack + " 魔法攻击力" + item.magicAttack + "魔力值" + item.mp + "\n");
}
foreach (var item in list4)
{
Console.WriteLine(item.name + " 花费:" + item.heroMoney + " 血量 " + item.hp + " 物理攻击力" + item.physicsAttack + " 魔法攻击力" + item.magicAttack + "魔力值" + item.mp + "\n");
}
break;
default:
return;
}
Console.WriteLine("输入q键可跳出,输入别的任意键可重复查询");
string flag = Console.ReadLine();
if (flag == "q")
{
return;
}
else {
HeroCharacteristics();
}
}
}
}
(3)
using System;
using System.Collections.Generic;
using System.Threading;
namespace ClassLibrary1
{
public class Hero
{
public string name;
public int hp;//血量
public int mp;//魔法值
public int physicsAttack;//物理攻击力
public int magicAttack;//魔法攻击力
public int heroMoney;//英雄的价钱
public Hero() { }
public Hero(string name,int hp,int mp,int physicsAttack,int magicAttack)
{
this.name = name;
this.hp = hp;
this.mp = mp;
this.physicsAttack = physicsAttack;
this.magicAttack = magicAttack;
}
}
}
(4)
using System;
using ClassLibrary1;
using System.Collections.Generic;
using System.Threading;
namespace ClassLibrary1
{
public class HeroDetail
{
//初始化英雄
Hero hero1_1 = new Hero("夏侯惇", 500, 450, 80, 25);
Hero hero1_2 = new Hero("张郃", 500, 430, 77, 20);
Hero hero1_3 = new Hero("徐晃", 485, 400, 77, 40);
Hero hero1_4 = new Hero("夏侯渊", 499, 500, 70, 65);
Hero hero1_5 = new Hero("典韦", 600, 400, 90, 40);
Hero hero2_1 = new Hero("于禁", 300, 200, 50, 10);
Hero hero2_2 = new Hero("曹洪", 300, 220, 50, 12);
Hero hero2_3 = new Hero("乐进", 280, 200, 48, 15);
Hero hero2_4 = new Hero("曹仁", 300, 240, 50, 20);
Hero hero2_5 = new Hero("李典", 290, 200, 49, 25);
Hero hero3_1 = new Hero("宋宪", 200, 100, 40, 20);
Hero hero3_2 = new Hero("魏旭", 190, 92, 38, 18);
Hero hero3_3 = new Hero("穆顺", 180, 100, 35, 20);
Hero hero3_4 = new Hero("方跃", 180, 145, 35, 15);
Hero hero3_5 = new Hero("潘凤", 170, 120, 30, 18);
Hero hero4_1 = new Hero("张兵长", 140, 50, 25, 11);
Hero hero4_2 = new Hero("韩兵长", 142, 57, 23, 9);
Hero hero4_3 = new Hero("秦兵长", 148, 62, 25, 12);
Hero hero4_4 = new Hero("赵兵长", 144, 58, 24, 10);
Hero hero4_5 = new Hero("李兵长", 150, 55, 24, 8);
List<Hero> listHero = new List<Hero>();
List<Hero> listHero2 = new List<Hero>();
List<Hero> listHero3 = new List<Hero>();
List<Hero> listHero4 = new List<Hero>();
private void init()
{
//设置金钱
hero1_1.heroMoney = 500;
hero1_2.heroMoney = 480;
hero1_3.heroMoney = 485;
hero1_4.heroMoney = 493;
hero1_5.heroMoney = 550;
hero2_1.heroMoney = 300;
hero2_2.heroMoney = 320;
hero2_3.heroMoney = 295;
hero2_4.heroMoney = 335;
hero2_5.heroMoney = 310;
hero3_1.heroMoney = 200;
hero3_2.heroMoney = 190;
hero3_3.heroMoney = 220;
hero3_4.heroMoney = 215;
hero3_5.heroMoney = 150;
hero4_1.heroMoney = 155;
hero4_2.heroMoney = 148;
hero4_3.heroMoney = 160;
hero4_4.heroMoney = 157;
hero4_5.heroMoney = 164;
//将英雄添加进队列
listHero.Add(hero1_1);
listHero.Add(hero1_2);
listHero.Add(hero1_3);
listHero.Add(hero1_4);
listHero.Add(hero1_5);
listHero2.Add(hero2_1);
listHero2.Add(hero2_2);
listHero2.Add(hero2_3);
listHero2.Add(hero2_4);
listHero2.Add(hero2_5);
listHero3.Add(hero3_1);
listHero3.Add(hero3_2);
listHero3.Add(hero3_3);
listHero3.Add(hero3_4);
listHero3.Add(hero3_5);
listHero4.Add(hero4_1);
listHero4.Add(hero4_2);
listHero4.Add(hero4_3);
listHero4.Add(hero4_4);
listHero4.Add(hero4_5);
}
public HeroDetail()//构造器
{
init();
}
public List<Hero> GetHero1()
{
return listHero;
}
public List<Hero> GetHero2()
{
return listHero2;
}
public List<Hero> GetHero3()
{
return listHero3;
}
public List<Hero> GetHero4()
{
return listHero4;
}
}
}
(5)
using ClassLibrary1;
using System;
using System.Collections.Generic;
using System.Threading;
public class BattleControl
{
//魔法和物理混合攻击的类
private static BattleControl battleControl;
private List<Hero> ours = new List<Hero>();//我方英雄
private List<Hero> enemy = new List<Hero>();//敌方英雄
private int round = 0;//计时器
private int Money;
private BattleControl() { }//私有构造器
public static BattleControl GetBattleControl()
{
if (battleControl == null)
{
battleControl = new BattleControl();
}
return battleControl;
}
public void SetHeroOurs(List<Hero> oursHero)
{
ours = oursHero;
}
public void SetHeroEnemy(List<Hero> enemyHero)
{
enemy = enemyHero;
}
public void Fight()
{
Console.WriteLine("战斗开始");
for (; ours.Count != 0 && enemy.Count != 0; round++)
{
Console.WriteLine("--------------------------------------");
for (int i = 0; i < ours.Count; i++)
{
Random ran = new Random();
int countEnemy = ran.Next(enemy.Count);
if (enemy.Count == 0) { break; }
int CriticalHit = 40;//物理暴击率默认40%
int CriticalHit1 = 20;//魔法暴击率默认20%
Random random = new Random();
int c = random.Next(0, 100);
int d = random.Next(0, 100);
if (d < CriticalHit1)
{
ours[i].magicAttack = ours[i].magicAttack * 2;
Thread.Sleep(1000);
if (c < CriticalHit)
{
ours[i].physicsAttack = ours[i].physicsAttack * 2;
Thread.Sleep(1000);
if (ours[i].mp - ours[i].magicAttack >= 0)
{
enemy[countEnemy].hp -= ours[i].physicsAttack + ours[i].magicAttack;
Console.WriteLine(ours[i].name + "攻击了" + enemy[countEnemy].name + " " + "物理攻击暴击: " + ours[i].physicsAttack + " 魔法攻击暴击: " + ours[i].magicAttack);
ours[i].mp -= ours[i].magicAttack;
Thread.Sleep(1000);//睡眠
}
else if (ours[i].mp - ours[i].magicAttack < 0)
{
enemy[countEnemy].hp -= ours[i].physicsAttack + ours[i].mp;
Console.WriteLine(ours[i].name + "攻击了" + enemy[countEnemy].name + " " + "物理攻击暴击: " + ours[i].physicsAttack + " 魔法攻击暴击: " + ours[i].mp);
ours[i].mp = 0;
Thread.Sleep(1000);//睡眠
}
}
else if (ours[i].mp - ours[i].magicAttack >= 0)
{
enemy[countEnemy].hp -= ours[i].physicsAttack + ours[i].magicAttack;
Console.WriteLine(ours[i].name + "攻击了" + enemy[countEnemy].name + " " + "物理攻击: " + ours[i].physicsAttack + " 魔法攻击暴击: " + ours[i].magicAttack);
ours[i].mp -= ours[i].magicAttack;
Thread.Sleep(1000);//睡眠
}
else if (ours[i].mp - ours[i].magicAttack < 0)
{
enemy[countEnemy].hp -= ours[i].physicsAttack + ours[i].mp;
Console.WriteLine(ours[i].name + "攻击了" + enemy[countEnemy].name + " " + "物理攻击: " + ours[i].physicsAttack + " 魔法暴击攻击: " + ours[i].mp);
ours[i].mp = 0;
Thread.Sleep(1000);//睡眠
}
}
else
{
if (c < CriticalHit)
{
ours[i].physicsAttack = ours[i].physicsAttack * 2;
Thread.Sleep(1000);
if (ours[i].mp - ours[i].magicAttack >= 0)
{
enemy[countEnemy].hp -= ours[i].physicsAttack + ours[i].magicAttack;
Console.WriteLine(ours[i].name + "攻击了" + enemy[countEnemy].name + " " + "物理攻击暴击: " + ours[i].physicsAttack + " 魔法攻击: " + ours[i].magicAttack);
ours[i].mp -= ours[i].magicAttack;
Thread.Sleep(1000);//睡眠
}
else if (ours[i].mp - ours[i].magicAttack < 0)
{
enemy[countEnemy].hp -= ours[i].physicsAttack + ours[i].mp;
Console.WriteLine(ours[i].name + "攻击了" + enemy[countEnemy].name + " " + "物理攻击暴击: " + ours[i].physicsAttack + " 魔法攻击: " + ours[i].mp);
ours[i].mp = 0;
Thread.Sleep(1000);//睡眠
}
}
else if (ours[i].mp - ours[i].magicAttack >= 0)
{
enemy[countEnemy].hp -= ours[i].physicsAttack + ours[i].magicAttack;
Console.WriteLine(ours[i].name + "攻击了" + enemy[countEnemy].name + " " + "物理攻击: " + ours[i].physicsAttack + " 魔法攻击: " + ours[i].magicAttack);
ours[i].mp -= ours[i].magicAttack;
Thread.Sleep(1000);//睡眠
}
else if (ours[i].mp - ours[i].magicAttack < 0)
{
enemy[countEnemy].hp -= ours[i].physicsAttack + ours[i].mp;
Console.WriteLine(ours[i].name + "攻击了" + enemy[countEnemy].name + " " + "物理攻击: " + ours[i].physicsAttack + " 魔法攻击: " + ours[i].mp);
ours[i].mp = 0;
Thread.Sleep(1000);//睡眠
}
}
if (enemy[countEnemy].hp <= 0) { enemy[countEnemy].hp = 0; }
Console.WriteLine("敌方阵营: " + enemy[countEnemy].name + "的血量还剩: " + enemy[countEnemy].hp + "滴血");
for (int j = 0; j < enemy.Count; j++)
{
if (enemy[j].hp <= 0)
{
Console.WriteLine("*************************************");
Console.WriteLine("敌方阵营" + enemy[j].name + "死亡!");
Console.WriteLine("*************************************");
enemy.RemoveAt(j);
Thread.Sleep(1000);//睡眠
}
}
}//我方攻击结束
for (int i = 0; i < enemy.Count; i++)
{
Random ran = new Random();
int countEnemy = ran.Next(ours.Count);
if (ours.Count == 0) { break; }
int CriticalHit = 40;//物理暴击率默认40%
int CriticalHit1 = 20;//魔法暴击率默认20%
Random random = new Random();
int c = random.Next(0, 100);
int d = random.Next(0, 100);
if (d < CriticalHit1)
{
if (c < CriticalHit)
{
if (enemy[i].mp - enemy[i].magicAttack >= 0)
{
ours[countEnemy].hp -= enemy[i].physicsAttack + enemy[i].magicAttack;
Console.WriteLine(enemy[i].name + "攻击了" + ours[countEnemy].name + " " + "物理攻击暴击: " + enemy[i].physicsAttack + " 魔法攻击暴击: " + enemy[i].magicAttack);
enemy[i].mp -= enemy[i].magicAttack;
Thread.Sleep(1000);//睡眠
}
else if (enemy[i].mp - enemy[i].magicAttack < 0)
{
ours[countEnemy].hp -= enemy[i].physicsAttack + enemy[i].mp;
Console.WriteLine(enemy[i].name + "攻击了" + ours[countEnemy].name + " " + "物理攻击暴击: " + enemy[i].physicsAttack + " 魔法攻击暴击: " + enemy[i].mp);
enemy[i].mp = 0;
Thread.Sleep(1000);//睡眠
}
}
else
{
if (enemy[i].mp - enemy[i].magicAttack >= 0)
{
ours[countEnemy].hp -= enemy[i].physicsAttack + enemy[i].magicAttack;
Console.WriteLine(enemy[i].name + "攻击了" + ours[countEnemy].name + " " + "物理攻击: " + enemy[i].physicsAttack + " 魔法攻击暴击: " + enemy[i].magicAttack);
enemy[i].mp -= enemy[i].magicAttack;
Thread.Sleep(1000);//睡眠
}
else if (enemy[i].mp - enemy[i].magicAttack < 0)
{
ours[countEnemy].hp -= enemy[i].physicsAttack + enemy[i].mp;
Console.WriteLine(enemy[i].name + "攻击了" + ours[countEnemy].name + " " + "物理攻击: " + enemy[i].physicsAttack + " 魔法攻击暴击: " + enemy[i].mp);
enemy[i].mp = 0;
Thread.Sleep(1000);//睡眠
}
}
}
else
{
if (c < CriticalHit)
{
if (enemy[i].mp - enemy[i].magicAttack >= 0)
{
ours[countEnemy].hp -= enemy[i].physicsAttack + enemy[i].magicAttack;
Console.WriteLine(enemy[i].name + "攻击了" + ours[countEnemy].name + " " + "物理攻击暴击: " + enemy[i].physicsAttack + " 魔法攻击: " + enemy[i].magicAttack);
enemy[i].mp -= enemy[i].magicAttack;
Thread.Sleep(1000);//睡眠
}
else if (enemy[i].mp - enemy[i].magicAttack < 0)
{
ours[countEnemy].hp -= enemy[i].physicsAttack + enemy[i].mp;
Console.WriteLine(enemy[i].name + "攻击了" + ours[countEnemy].name + " " + "物理攻击暴击: " + enemy[i].physicsAttack + " 魔法攻击: " + enemy[i].mp);
enemy[i].mp = 0;
Thread.Sleep(1000);//睡眠
}
}
else
{
if (enemy[i].mp - enemy[i].magicAttack >= 0)
{
ours[countEnemy].hp -= enemy[i].physicsAttack + enemy[i].magicAttack;
Console.WriteLine(enemy[i].name + "攻击了" + ours[countEnemy].name + " " + "物理攻击: " + enemy[i].physicsAttack + " 魔法攻击: " + enemy[i].magicAttack);
enemy[i].mp -= enemy[i].magicAttack;
Thread.Sleep(1000);//睡眠
}
else if (enemy[i].mp - enemy[i].magicAttack < 0)
{
ours[countEnemy].hp -= enemy[i].physicsAttack + enemy[i].mp;
Console.WriteLine(enemy[i].name + "攻击了" + ours[countEnemy].name + " " + "物理攻击: " + enemy[i].physicsAttack + " 魔法攻击: " + enemy[i].mp);
enemy[i].mp = 0;
Thread.Sleep(1000);//睡眠
}
}
}
if (ours[countEnemy].hp <= 0) { ours[countEnemy].hp = 0; }
Console.WriteLine("我方阵营: " + ours[countEnemy].name + "的血量还剩: " + ours[countEnemy].hp + "滴血");
for (int k = 0; k < ours.Count; k++)
{
if (ours[k].hp <= 0)
{
Console.WriteLine("*************************************");
Console.WriteLine("我方阵营" + ours[k].name + "死亡!");
Console.WriteLine("*************************************");
ours.RemoveAt(k);
Thread.Sleep(1000);//睡眠
}
}
}//敌方攻击结束
}
Console.WriteLine("战斗结束!!!");
Console.WriteLine("一共: " + round + "回合!!!");
if (ours.Count == 0)
{
Console.WriteLine("敌方阵营获胜!!!");
Money = 0;
}
else if (enemy.Count == 0)
{
Console.WriteLine("我方阵营获胜!!!");
Money = 10 * ours.Count + 10;
}
}
public int GetMoney()
{
return Money;
}
}
(6)
using ClassLibrary1;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace 回合制游戏
{
class BattleControl1
{
private List<Hero> ours;
private List<Hero> enemy;
private int round = 0;
//round记录回合数
private static BattleControl1 battleControl1;
private BattleControl1()
{
}
public static BattleControl1 GetInstance1()
{
if (battleControl1 == null)
{
battleControl1 = new BattleControl1();
}
return battleControl1;
}
public void GameNotice()
{
Console.WriteLine("game notice:");
}
public void GameLive(int flag, List<Hero> ours, List<Hero> enemy)
{
if (flag == 1)
{
Console.WriteLine("our action:");
foreach (Hero h1 in ours)
{
Console.WriteLine(h1.name + " ");
Console.Write("血量" + h1.hp + " ");
Console.Write("物理攻击力" + h1.physicsAttack + "\n");
}
}
else if (flag == -1)
{
Console.WriteLine("enemy action:");
foreach (Hero h1 in enemy)
{
Console.WriteLine(h1.name + " ");
Console.Write("血量" + h1.hp + " ");
Console.Write("物理攻击力" + h1.physicsAttack + "\n");
}
}
}
public int AttackChoose(List<Hero> team)
{
int n = 0;
foreach (Hero h in team)//选中对应第一个英雄
{
n++;
}
return n - 1;
}
public void Game(List<Hero> ours, List<Hero> enemy)
{
Console.WriteLine("ours.Count=" + ours.Count);
Console.WriteLine("enemy.Count=" + enemy.Count);
//可以测试敌方和我方的人数
int flag = 1;
int aim;
while (!(ours.Count == 0 || enemy.Count == 0))
{
Console.WriteLine("当前回合数:" + round);
if (flag == 1)
{
round++;
//回合数增加
for (int i = 0; i < ours.Count; i++)
{
aim = AttackChoose(enemy);
//Console.WriteLine("i=" +i);
//Console.WriteLine("aim=" + aim);
//可以测试对应的攻击目标和己方出手的人
if (enemy[aim].hp - ours[i].physicsAttack >= 0)
{
enemy[aim].hp -= ours[i].physicsAttack;
}
else
{
enemy[aim].hp = 0;
}
if (enemy[aim].hp <= 0)
{
Console.WriteLine("敌方英雄" + enemy[aim].name + "被击杀");
enemy.Remove(enemy[aim]);
if (enemy.Count <= 0)
{
GameLive(flag, ours, enemy);
Console.WriteLine("round number:" + round);
Console.WriteLine("game over");
Thread.Sleep(5000);
Console.WriteLine("哈哈哈哈,小贼,我卧薪尝胆就为今朝大仇得报,victroy理所当然");
Thread.Sleep(10000);
return;
}
}
GameLive(-1, ours, enemy);
}
}
else
{
for (int i = 0; i < enemy.Count; i++)
{
aim = AttackChoose(ours);
if (ours[aim].hp - enemy[i].physicsAttack >= 0)
{
ours[aim].hp -= enemy[i].physicsAttack;
}
else
{
ours[aim].hp = 0;
}
if (ours[aim].hp <= 0)
{
Console.WriteLine("我方英雄" + ours[aim].name + "被击杀");
ours.Remove(ours[aim]);
if (ours.Count <= 0)
{
GameLive(flag, ours, enemy);
Console.WriteLine("round number:" + round);
Console.WriteLine("game over");
Thread.Sleep(10000);
Console.WriteLine("去研究战术,合理配兵方可取胜,卧薪尝胆,三千越加可吞吴defeat");
Thread.Sleep(10000);
return;
}
}
GameLive(1, ours, enemy);
}
}
flag *= -1;
//切换回和
Thread.Sleep(2000);
Console.Clear();
}
}
}
}
(7)
using System.Media;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Threading;
namespace FinallProject
{
class MusicManager
{
private static int max=3;//总共3首歌曲
private static int currentIndex=0;
private static SoundPlayer soundPlayer;
private static string[] location ={ "..\\..\\..\\bgmusic0.wav", "..\\..\\..\\bgmusic1.wav", "..\\..\\..\\bgmusic2.wav" };
private static string[] musics = { "《悲欢离合戏一场》","《曹操》","《三国恋》"};
public static void Turn()
{
soundPlayer = new SoundPlayer(@location[0]);
currentIndex = 0;
soundPlayer.PlayLooping();
}
public static void ChooseMusic(int i)
{
if (i < max+1)
{
if(i==max)
{
Stop();
currentIndex = 0;
}
soundPlayer = new SoundPlayer(@location[i]);
soundPlayer.PlayLooping();
currentIndex = i;
}
else
{
Console.WriteLine("输入错误");
Thread.Sleep(1000);
Console.Clear();
}
}
public static void Stop()
{
soundPlayer.Stop();
}
public static void ShowMusics()
{
for(int i=0;i<max;i++)
{
Console.WriteLine("{0} {1}",i,musics[i]);
}
Console.WriteLine("{0} 关闭当前音乐",max);
}
}
}