using System;
using System.Threading;
namespace @new
{
class Program
{
/*常量初始化*/
#region
//昵称
static string name = "";
//生命
static int hp;
//当前生命
static int c_hp;
//成长生命
static int g_hp;
//攻击力
static int atk;
//成长攻击力
static int g_atk;
//防御
static int def;
//成长防御
static int g_def;
//速度
static int speed;
//成长速度
static int g_speed;
//等级
static int level = 1;
//当前经验
static int exp = 0;
//升级所需经验
static int g_exp = 1000;
//金钱
static int money = 100;
//查看面板
#endregion
//武器 衣服 鞋子
static Equip wuqi;
static int wuqi_atk;
static Equip yifu;
static int yifu_hp;
static Equip xiezi;
static int xiezi_speed;
//装备中转站
static string q1 = null;
static string q2 = null;
static string q3 = null;
//装备道具
enum EquipType
{
wuqi,
yifu,
xiezi
}
struct Equip
{
public EquipType type;
public string name;
public string des;
public int hp;
public int atk;
public int speed;
public Equip(EquipType type, string name, string des, int hp, int atk, int speed)
{
this.type = type;
this.name = name;
this.des = des;
this.hp = hp;
this.atk = atk;
this.speed = speed;
}
}
static void EquipItem(Equip a)
{
switch (a.type)
{
case EquipType.wuqi:
Log("你装备了武器:" + a.name + " 它" + a.des + " 攻击力+" + a.atk);
//装备穿戴
wuqi_atk = a.atk;
//装备中转站内装备放入背包数组
BeiBao(q1);
//新的装备再次放入装备中转站
q1 = a.name;
wuqi = a;
break;
case EquipType.yifu:
Log("你装备了衣服:" + a.name + " 它" + a.des + " 生命+" + a.hp);
yifu_hp = a.hp;
BeiBao(q2);
q2 = a.name;
yifu = a;
break;
case EquipType.xiezi:
Log("你装备了鞋子:" + a.name + " 它" + a.des + " 速度+" + a.speed);
xiezi_speed = a.speed;
BeiBao(q3);
q3 = a.name;
xiezi = a;
break;
}
}
//背包
static string[] a = new string[20];
static void BeiBao(string str)
{
for (int n = 0; n < 10; n++)
{
if (a[n] == null)
{
a[n] = str;
break;
}
}
Console.WriteLine("当前你的背包里有:");
for (int m = 0; m <= 9; m++)
{
if (a[m] == null)
{
break;
}
Console.Write(a[m] + " ");
}
Console.WriteLine();
}
//面板提示
static void ShowInfo()
{
Console.WriteLine("你现在状态:生命为:{0}/{1}+{2},攻击力为:{3}+{4},防御为:{5},速度为:{6}+{7},金钱为:{8},等级为:{9},经验为:{10}/{11}", c_hp, hp, yifu.hp, atk, wuqi.atk, def, speed, xiezi_speed, money, level, exp, g_exp);
Log("武器:" + wuqi.name + " 衣服:" + yifu.name + " 鞋子:" + xiezi.name);
Thread.Sleep(1000);
BeiBao(null);
}
//延迟输出函数
static void Log(string text)
{
Console.WriteLine(text);
Thread.Sleep(1000);
}
//战前准备以及战斗过程
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)
{
Log("你遇到了" + e_name + "!是否在战斗前消耗10银两回满生命?");
ShowInfo();
Console.WriteLine(e_name + "现在的状态:生命为:{0},攻击力为:{1},速度为:{2},暴击为:{3},闪避为:{4},金钱为:{5},经验为:{6}", e_hp, e_atk, e_speed, e_satk, e_miss, e_money, e_exp);
Thread.Sleep(1000);
Log("1,回满 2,跳过");
string str = Console.ReadLine();
if (str == "1" && money >= 10)
{
c_hp = hp+yifu_hp ;
money -= 10;
Log("血量已回满!");
ShowInfo();
}
//判断先手
bool playerAtk = speed + xiezi_speed > e_speed;
while (true)
{
//如果是玩家攻击
if (playerAtk)
{
//下一次攻击轮到敌人
playerAtk = false;
//判定闪避
if (new Random().Next(0, 100) < e_miss)
{
Log("你向" + e_name + "砍出一刀,却被" + e_name + "轻松地躲了过去!");
continue;
}
//敌人掉血
int num = new Random().Next(atk + wuqi_atk - 5, atk + wuqi_atk + 5);
e_hp -= num;
Log("你向" + e_name + "砍出一刀," + e_name + "受到了" + num + "点伤害。");
//判定敌人死亡
if (e_hp <= 0)
{
Log("你击败了" + e_name + ",你获得了" + e_money + "金钱与" + e_exp + "经验!");
money += e_money;
exp += e_exp;
LevelUp();
ShowInfo();
break;
}
}
else
{
//当前敌人攻击,下次玩家攻击
playerAtk = true;
if (new Random().Next(0, 100) < e_satk)
{
if(e_atk * 2 > def)
{
c_hp -= e_atk * 2 - def;
Log(e_name + "使出了斩无极,触发了暴击效果,对你造成了" + (e_atk * 2 - def) + "点伤害");
}
else
{
Log(e_name + "使出了斩无极,触发了暴击效果,对你造成了0点伤害");
}
}
else
{
if (e_atk > def)
{
c_hp -= e_atk - def;
Log(e_name + "使出了横扫,对你造成了" + (e_atk - def) + "点伤害");
}
else
{
Log(e_name + "使出了横扫,对你造成了0点伤害");
}
}
//如果玩家死亡
if (c_hp <= 0)
{
Log("你被残忍地杀害了。");
Log("胜败乃兵家常事,请重新来过");
//退出
Environment.Exit(0);
}
}
}
}
//判定升级
static void LevelUp()
{
while (exp >= g_exp)
{
level++;
hp += g_hp;
c_hp = hp + yifu_hp;
atk += g_atk;
def += g_def;
speed += g_speed;
exp -= g_exp;
g_exp = level * 1000;
}
}
//角色创建
static void CreateCharacter()
{
//提示
Console.WriteLine("请输入你的角色名称:");
//输入角色名称
name = Console.ReadLine();
//判断是否输入了名称
if (string.IsNullOrEmpty(name))
{
//给与默认名称
name = "李逍遥";
}
//血量随机100到120之间的数
hp = new Random().Next(100, 120);
//当前血量
c_hp = hp;
//成长血量
g_hp = new Random().Next(100, 120);
//攻击力
atk = new Random().Next(10, 20);
//成长攻击
g_atk = new Random().Next(10, 20);
//防御
def = new Random().Next(5, 10);
//成长防御
g_def = new Random().Next(5, 10);
//速度
speed = new Random().Next(5, 10);
//成长速度
g_speed = new Random().Next(5, 10);
Log("恭喜你,角色创建成功!");
ShowInfo();
}
//角色评分
static void PingFen()
{
int a = hp + atk + def + speed;
int b = g_hp + g_atk + g_def + g_speed;
int c = a + b;
//120-160之间:120-130;130-150;150-160。
if (a <= 130)
{
Log("你的角色初始属性很差。");
}
else if (a <= 150)
{
Log("你的角色初始属性一般。");
}
else
{
Log("你的角色初始属性很好。");
}
if (b <= 130)
{
Log("你的角色天赋很差。");
}
else if (b <= 150)
{
Log("你的角色天赋一般。");
}
else
{
Log("你的角色天赋很好。");
}
if (c <= 260)
{
Log("综合来看,系统这边建议你转生重开呢!");
}
else if (b <= 300)
{
Log("综合来看,系统这边建议你可以开始正常游玩了。");
}
else
{
Log("综合来看,系统这边对你佩服的五体投地!");
}
}
//怪物随机
enum EnemyType
{
小木马,
大木马,
键盘侠,
圣母,
鲤鱼精,
猫妖,
大魔法师,
魔神
}
struct Enemy
{
public EnemyType type;
public Enemy(EnemyType type)
{
this.type = type;
}
}
static void EnemyFight(Enemy a)
{
for (int i = 0; i < 3; i++)
{
Console.WriteLine("按一下回车键开始移动");
Console.ReadKey();
if (new Random().Next(0, 5) > 3)
{
switch (a.type)
{
case EnemyType.小木马:
Battle("小木马", 20, 20, 1, 5, 5, 20, 500);
break;
case EnemyType.大木马:
Battle("大木马", 40, 30, 1, 10, 10, 20, 1000);
break;
case EnemyType.键盘侠:
Battle("键盘侠", 80, 40, 5, 10, 10, 20, 1000);
break;
case EnemyType.圣母:
Battle("圣母", 100, 50, 10, 15, 15, 20, 1500);
break;
case EnemyType.鲤鱼精:
Battle("鲤鱼精", 200, 60, 15, 15, 15, 20, 2000);
break;
case EnemyType.猫妖:
Battle("猫妖", 300, 70, 5, 20, 15, 20, 2500);
break;
case EnemyType.大魔法师:
Battle("大魔法师", 1000, 80, 25, 20, 25, 100, 5000);
break;
case EnemyType.魔神:
Battle("魔神", 1500, 90, 30, 30, 30, 200, 10000);
break;
}
}
}
}
/*开始冒险历程*/
//NPC1对话选择
static void NPC1(string text1,string text2)
{
Log("你的左边有一名" + text1 + ",右边有一名" + text2 + ",你要选择和谁对话?");
Log("1." + text1 + " 2." + text2 + " 3.跳过");
string str = Console.ReadLine();
if (str == "1")
{
Log("初级任务:给予" + text1 + " 20两银子,换取100点生命上限提升。");
Log("1,换 2,跳过");
str = Console.ReadLine();
if (str == "1" && money >= 20)
{
hp += 100;
c_hp += 100;
money -= 20;
Log("兑换成功!");
ShowInfo();
}
}
else if (str == "2")
{
Log("初级任务:给予" + text2 + " 50两银子,换取武器青龙偃月刀");
Log("1,换 2,跳过");
str = Console.ReadLine();
if (str == "1" && money >= 50)
{
money -= 50;
EquipItem(new Equip(EquipType.wuqi, "青龙偃月刀", "锋利无比", 0, 20, 0));
Log("兑换成功!");
ShowInfo();
}
}
Log("你离开了NPC。");
}
//NPC2对话选择
static void NPC2(string text1, string text2)
{
Log("你的左边有一名" + text1 + ",右边有一名" + text2 + ",你要选择和谁对话?");
Log("1." + text1 + " 2." + text2 + " 3.跳过");
string str = Console.ReadLine();
if (str == "1")
{
Log("初级任务:给予" + text1 + " 20两银子,换取衣服黄金圣衣。");
Log("1,换 2,跳过");
str = Console.ReadLine();
if (str == "1" && money >= 20)
{
money -= 20;
EquipItem(new Equip(EquipType.yifu, "黄金圣衣", "坚固无比", 300, 0, 0));
Log("兑换成功!");
ShowInfo();
}
}
else if (str == "2")
{
Log("初级任务:给予" + text2 + " 20两银子,换取鞋子清欢鞋。");
Log("1,换 2,跳过");
str = Console.ReadLine();
if (str == "1" && money >= 20)
{
money -= 20;
EquipItem(new Equip(EquipType.xiezi, "清欢鞋", "快如闪电", 0, 0, 5));
Log("兑换成功!");
ShowInfo();
}
}
Log("你离开了NPC。");
}
//NPC3对话选择
static void NPC3()
{
Log("你遇到了一个神秘人,50两银子可以换取100生命上限的提升。");
while(true)
{
Log("1,兑换一次 2,放弃");
string str = Console.ReadLine();
if (str == "1" && money >= 50)
{
money -= 50;
hp += 100;
c_hp += 100;
Log("兑换成功!");
ShowInfo();
Log("是否继续");
}
else
{
break;
}
}
}
//NPC4对话选择
static void NPC4()
{
Log("啊啦啊啦!这位小弟弟,要不要和大姐姐去迷雾森林里玩呀。");
Log("伴随着一阵眩晕感,你昏了过去,刚醒来的你遇到了这位大姐姐,对于她的盛情邀请你打算怎么办?");
Log("1,逃跑 2,接受她的邀请");
string str = Console.ReadLine();
if (str == "1")
{
Map();
}
else
{
Log("陌生女子觉得你是一个很轻浮的人,于是你被残忍地杀害了。");
Environment.Exit(0);
}
}
static void Map()
{
int x = 3, y = 1;//记录小人初始位置
int[,] map = new int[10, 10]
{
{1,1,1,1,1,1,1,1,1,1},
{1,0,0,0,0,1,0,0,0,1},
{1,0,0,0,0,1,0,0,0,1},
{1,4,2,0,0,1,0,0,0,1},
{1,0,0,0,0,1,0,0,0,1},
{1,0,0,0,0,0,0,0,0,1},
{1,0,0,0,0,0,0,0,0,1},
{1,1,1,1,1,0,0,0,0,1},
{1,0,0,0,0,0,0,0,3,1},
{1,1,1,1,1,1,1,1,1,1}
};
//打印初始图
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (map[i, j] == 0)
{
Console.Write(" ");
}
else if (map[i, j] == 1)
{
Console.Write("■");
}
else if (map[i, j] == 2)
{
Console.Write("□");
}
else if (map[i, j] == 3)
{
Console.Write("★");
}
else if (map[i, j] == 4)
{
Console.Write("♀");
}
}
Console.WriteLine();
}
while (true)
{
ConsoleKeyInfo s = Console.ReadKey();
int t = map[x, y];
if (s.Key.ToString() == "RightArrow")
{
if (map[x, y + 1] == 0)
{
map[x, y] = map[x, y + 1];
map[x, y + 1] = t;
y++;
}
else if (map[x, y + 1] == 2 && map[x, y + 2] != 1)
{
int m = map[x, y + 1];
map[x, y + 1] = t;
map[x, y] = 0;
map[x, y + 2] = m;
y++;
}
}
else if (s.Key.ToString() == "LeftArrow")
{
if (map[x, y - 1] == 0)
{
map[x, y] = map[x, y - 1];
map[x, y - 1] = t;
y--;
}
else if (map[x, y - 1] == 2 && map[x, y - 2] != 1)
{
int m = map[x, y - 1];
map[x, y - 1] = t;
map[x, y] = 0;
map[x, y - 2] = m;
y--;
}
}
else if (s.Key.ToString() == "UpArrow")
{
if (map[x - 1, y] == 0)
{
map[x, y] = map[x - 1, y];
map[x - 1, y] = t;
x--;
}
else if (map[x - 1, y] == 2 && map[x - 2, y] != 1)
{
int m = map[x - 1, y];
map[x - 1, y] = t;
map[x, y] = 0;
map[x - 2, y] = m;
x--;
}
}
else if (s.Key.ToString() == "DownArrow")
{
if (map[x + 1, y] == 0)
{
map[x, y] = map[x + 1, y];
map[x + 1, y] = t;
x++;
}
else if (map[x + 1, y] == 2 && map[x + 2, y] != 1)
{
int m = map[x + 1, y];
map[x + 1, y] = t;
map[x, y] = 0;
map[x + 2, y] = m;
x++;
}
}
Console.Clear();
for (int i = 0; i < 10; i++)
{
for (int j = 0; j < 10; j++)
{
if (map[i, j] == 0)
{
Console.Write(" ");
}
else if (map[i, j] == 1)
{
Console.Write("■");
}
else if (map[i, j] == 2)
{
Console.Write("□");
}
else if (map[i, j] == 3)
{
Console.Write("★");
}
else if (map[i, j] == 4)
{
Console.Write("♀");
}
}
Console.WriteLine();
}
if (map[8, 8] == 2)
{
Console.WriteLine("逃脱成功!");
break;
}
}
}
//新手村
static void XinShouCun()
{
Log("***********************************");
Log("年轻人,欢迎来到计算机大陆。");
Log("传说,上古时期,众神混战,微软公司陨落于此,故得此名。");
NPC1("360安全卫士", "电脑管家");
Log("你需要找个地方熟悉win10系统。");
EnemyFight(new Enemy(EnemyType.小木马));
EnemyFight(new Enemy(EnemyType.大木马));
NPC1("QQ", "微信");
EnemyFight(new Enemy(EnemyType.键盘侠));
EnemyFight(new Enemy(EnemyType.圣母));
NPC2("商人1", "商人2");
EnemyFight(new Enemy(EnemyType.键盘侠));
EnemyFight(new Enemy(EnemyType.圣母));
Log("你感觉自己有点虚,又回去找商人买东西。");
NPC2("商人1", "商人2");
EnemyFight(new Enemy(EnemyType.键盘侠));
EnemyFight(new Enemy(EnemyType.圣母));
NPC3();
}
//喂鱼抽猫王国
static void WeiYuChouMao()
{
Log("随着和野怪的搏杀,你渐渐地学会了如何一个人活下去。现在,你来到了位于计算机大陆北方的一个名为喂鱼抽猫的王国。");
Log("在这个国家,只有两个种族,鱼族和猫族。");
Log("你初来乍到,不知道伪装自己,被路边的士兵看到了,他们向你冲了过来。");
Log("你选择:1,战斗 2,逃跑");
string str = Console.ReadLine();
if (str == "1")
{
EnemyFight(new Enemy(EnemyType.鲤鱼精));
EnemyFight(new Enemy(EnemyType.猫妖));
}
else
{
Log("因为你逃跑了,喂鱼抽猫王国甚至派出了大魔法师来抓你。");
Log("你开始了逃命之旅。");
EnemyFight(new Enemy(EnemyType.鲤鱼精));
EnemyFight(new Enemy(EnemyType.猫妖));
EnemyFight(new Enemy(EnemyType.大魔法师));
}
Log("喂鱼抽猫王国已经把你定为一个非常危险的人,发动全国之力要来剿灭你。");
Log("其中有不少强大的魔神要亲自来杀了你,系统建议你快跑。");
EnemyFight(new Enemy(EnemyType.魔神));
EnemyFight(new Enemy(EnemyType.魔神));
EnemyFight(new Enemy(EnemyType.魔神));
Log("你成功的活了下来。");
Log("你搜刮了魔神的财产");
EquipItem(new Equip(EquipType.wuqi, "倚天剑", "所向披靡", 0, 50, 0));
EquipItem(new Equip(EquipType.yifu, "绝对领域", "无人能破", 500, 0, 0));
EquipItem(new Equip(EquipType.xiezi, "踏玉虚鞋", "迅疾如风", 0, 0, 10));
ShowInfo();
}
//火之高兴王国
static void HuoZhiGaoXing()
{
Log("按照系统酱的估算,现在的你应该已经有十级了。(来自系统酱的吐槽:没有的话,那你也太黑了!)");
Log("系统酱认为你已经可以开启第二重世界了,在第二重世界中,你将会遇到更加强大的敌人,更多的装备,注你好运。");
Log("************************************");
NPC4();
Log("你逃到了一个小村庄,在这里娶妻生子,安稳的度过了余生。");
Log("完结撒花!");
}
static void Main(string[] args)
{
Console.BackgroundColor = ConsoleColor.DarkBlue;
Console.Clear();
Console.ForegroundColor = ConsoleColor.Green;
CreateCharacter();
PingFen();
XinShouCun();
WeiYuChouMao();
HuoZhiGaoXing();
}
}
}
C#第七课文字游戏2.0版本
最新推荐文章于 2024-07-04 12:10:18 发布
本文档详细介绍了使用C#语言开发文字游戏2.0版本的过程,涵盖了游戏设计、类结构、控制流程及异常处理等方面。通过实例代码解析,帮助读者深入理解C#编程技巧和游戏开发思路。
摘要由CSDN通过智能技术生成