C# 对战游戏

class Program
{
struct player
{
public string name;
public int hp;
public int attack;
public int defend;
public int quick;
public WuGong WG;
}
struct WuGong
{
public string name;
public int atk;
}
static void gongfu(WuGong[] wg)
{
wg[0].name="降龙十八掌";
wg[0].atk = 500;

wg[1].name = "打狗棒法";
wg[1].atk = 600;

wg[2].name = "独孤九剑";
wg[2].atk = 600;
}
static void Main(string[] args)
{

Console.BackgroundColor = ConsoleColor.White;
Console.ForegroundColor = ConsoleColor.Black;
Console.Clear();
player p1 = new player();
player p2 = new player();
Random r = new Random();

//生成两个玩家
Console.Write("请输入第一个战士的名字:");
p1.name = Console.ReadLine();
Console.Write("请输入第一个战士的名字:");
p2.name = Console.ReadLine();
//生成血量
p1.hp = r.Next(1, 1000) + 1000;//初始血量
p2.hp = r.Next(1, 1000) + 1000;
//生成攻防
p1.attack = r.Next(1, 50) + 80;
p2.attack = r.Next(1, 50) + 80;
p1.defend = r.Next(1, 50) + 50;
p2.defend = r.Next(1, 50) + 50;
//生成身法-敏捷度
p1.quick = r.Next(100);
p2.quick = r.Next(100);

Console.WriteLine("玩家:" + p1.name + " 血量:" + p1.hp + "\t攻击力:" + p1.attack
+ "\t物防:" + p1.defend + " 敏捷度:" + p1.quick);
Console.WriteLine("VS");
Console.WriteLine("玩家:" + p2.name + " 血量:" + p2.hp + "\t攻击力:" + p2.attack
+ "\t物防:" + p2.defend + " 敏捷度:" + p2.quick);
Console.WriteLine("点击任意键开始游戏.....");
Console.ReadKey();

while (true)
{
// 得出最后结果,跳出循环
if (p1.hp <= 0 && p2.hp <= 0)
{
Console.WriteLine(p1.name + "与" + p2.name + "同归于尽!");
Console.ReadLine();
break;
}
if (p1.hp <= 0)
{
Console.WriteLine(p1.name + "把" + p2.name + "KO..");
Console.ReadLine();
break;
}
if (p2.hp <= 0)
{
Console.WriteLine(p2.name + "把" + p1.name + "KO..");
Console.ReadLine();
break;
}

//对战

WuGong[] wg = new WuGong[3];
gongfu(wg);

//大招
int dz1 = r.Next(10);//大招随机
if (dz1 >= 5) //从1到9的随机数里 取8和9 有20%的几率用大招。
{
Random x = new Random();
int a = x.Next(0, 3);
int dx1 = r.Next(100);//声明 掉血 变量
int gj1 = r.Next(100) - 50;//为了浮动 P2的 攻击力;
int fy1 = r.Next(100) - 50;//为了浮动 P1的防御力;
dx1 = ((dx1 + wg[a].atk) - (p1.defend + fy1)) < 0 ? 0 : ((dx1 + wg[a].atk) - (p1.defend + fy1));
//为了防止掉血 出现负值
p1.hp -= dx1;
if (p1.hp < 0)
{
p1.hp = 0;
}
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(p2.name + "使用大招 "+wg[a].name+" 攻击,对" + p1.name + "造成" + dx1 + "的伤害。");

}
else //平常招式
{
//躲闪
int sf1 = r.Next(80);//身法的随机数

if (p1.quick - sf1 >= 0)
{
Console.ForegroundColor = ConsoleColor.Black;
Console.WriteLine(p1.name + "躲闪" + p2.name + "的攻击");
}
else
{
int dx1 = r.Next(100);//声明 掉血 变量
int gj1 = r.Next(100) - 50;//为了浮动 P2的 攻击力;
int fy1 = r.Next(100) - 50;//为了浮动 P1的防御力;
dx1 = (dx1 + (p2.attack + gj1) - (p1.defend + fy1)) < 0 ? 0 : (dx1 + (p2.attack + gj1) - (p1.defend + fy1));
//为了防止掉血 出现负值
p1.hp -= dx1;
if (p1.hp < 0)
{
p1.hp = 0;
}
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine(p1.name + "使用普通攻击,对" + p2.name + "造成" + dx1 + "的伤害。");
}
}
//稍等一下
System.Threading.Thread.Sleep(1000);

int dz2 = r.Next(10);
if (dz2 >= 5)
{
Random y = new Random();
int b = y.Next(0,3);
int dx2 = r.Next(100);
int gj2 = r.Next(100) - 50;//为了浮动 P1的 攻击力;
int fy2 = r.Next(100) - 50;//为了浮动 P2的防御力;
dx2 = ((dx2 + wg[b].atk) - (p2.defend + fy2)) < 0 ? 0 : ((dx2 + wg[b].atk) - (p2.defend + fy2));
//为了防止掉血 出现负值
p2.hp -= dx2;
if (p2.hp < 0)
{
p2.hp = 0;
}
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.WriteLine(p1.name + "使用大招 "+wg[b].name+" 攻击,对" + p2.name + "造成" + dx2 + "的伤害。");
}
else
{
//躲闪
int sf2 = r.Next(80);
if (p2.quick - sf2 > sf2)
{
Console.ForegroundColor = ConsoleColor.Black;
Console.WriteLine(p2.name + "躲闪" + p1.name + "的攻击");
}
else
{
int dx2 = r.Next(100);
int gj2 = r.Next(100) - 50;//为了浮动 P1的 攻击力;
int fy2 = r.Next(100) - 50;//为了浮动 P2的防御力;
dx2 = (dx2 + (p1.attack + gj2 ) - (p2.defend + fy2)) < 0 ? 0 : (dx2 + (p1.attack + gj2 ) - (p2.defend + fy2));
//为了防止掉血 出现负值
p2.hp -= dx2;
if (p2.hp < 0)
{
p2.hp = 0;
}
Console.ForegroundColor = ConsoleColor.DarkMagenta;
Console.WriteLine(p2.name + "使用普通攻击,对" + p1.name + "造成" + dx2 + "的伤害。");
}
}
//稍等一下
System.Threading.Thread.Sleep(1000);
Console.ForegroundColor = ConsoleColor.DarkBlue;
Console.WriteLine("玩家:" + p1.name + "\t血量:" + p1.hp + "\t");
Console.WriteLine("玩家:" + p2.name + "\t血量:" + p2.hp);

}
}

}

时间: 2024-10-20 14:58:41

C# 对战游戏的相关文章

模拟德州扑克对战游戏

================================================================ 注意:本文参考"巧妙的Python数据结构玩法|实战德州扑克"的相关内容,并在此基础之上完成模拟扑克对战游戏. 原文网址:http://mp.weixin.qq.com/s/JQ0zJGf7Tz49Xn78x7Z40g ================================================================ 我们写了两

对战游戏

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace 对战游戏 { class Program { static void Main(string[] args) { Random r = new Random(); Soldier s1 = new Soldier(); Console.Write(

封装练习 对战游戏

using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 对战游戏 { class Program { static void Main(string[] args) { Random r = new Random(); //战士,名字,生命值,攻击力,招式 Soldier s1 = new Soldier(); Console.Write("请输入第一个战士的姓

结构体、枚举类型及其练习题,最后的对战游戏(基础版)

结构体:在内存中临时存储数据的方式1.变量.常量2.数组,可以存储固定长度统一类型的数据3.集合4.结构体 学生信息:姓名,性别,年龄,系别 结构体含义:就是将生活中的一些个体,封装成一个特殊的类型 结构体是:用户自定义数据类型 创建:创建的位置:main函数之外struct Student{ public int Code; public string Name; public string Sex; public int Old; public DateTime Birthday;} 定义:

第十二天学习内容 综合应用 推箱子和对战游戏

using System;using System.Collections.Generic;using System.Linq;using System.Text;using System.Threading.Tasks; namespace day12{    class Program    {        static void Main(string[] args)        { //推箱子游戏            int x = 1, y = 1, i = 0;        

对战游戏1.0

//主函数using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace 作业_对战游戏 { class Program { static void Main(string[] args) { Random r = new Random(); //战士,名字,生命值,攻击力,招式,闪躲 Soldier S1 = new Soldier(); Console.Write(

ADO.NET 扩展属性、配置文件 和 对战游戏

扩展属性 有外键关系时将信息处理成用户可看懂的 利用扩展属性 如:Info表中的民族列显示的是民族代号处理成Nation表中的民族名称 需要在Info类里面扩展一个显示nation名称的属性 例:先前在NationDA里面已经下好了一个代号换成名称的方法 public class Info { //扩展的名族名称属性 public string NationName { get { NationDA da = new NationDA(); return da.NationName(this.n

函数 及对战游戏

//对战游戏 struct duizhan { public string name; public int  xue; public int  gongji; public int  fangyu; public int  mingzhong; public int  shengfa; } static void Main(string[] args) { duizhan[] a = new duizhan[5];//定义结构体,并建立数组 int i = 0; for (; i < 5;i+

【经典】C++&amp;RPG对战游戏

博文背景: 还记大二上学期的时候看的这个C++&RPG游戏(博主大一下学期自学的php,涵盖oop内容),一个外校的同学他们大一学的C++,大二初期C++实训要求做一个程序填空,就是这个 RPG 对战游戏,有几处空需要填上,问我可以不,我就信誓旦旦的说OK,最后“万般无奈多方考究”才给将程序补充完整.最近在做毕业设计,用到C++&QT oop部分,重新温习了下C++ oop,就想起来大二的时候还“捣鼓”过这么个游戏,现重新看了下,进行整理总结,写下该博文. ----------------

VS 游戏:推箱子&amp;对战游戏

推箱子 //只做了两关 class Program { static void Main(string[] args) { int x = 1; int y = 8; int z = 0; int end1x = 6; int end1y = 3; int end2x = 6; int end2y = 3; #region 地图绘制 string[,,] map = new string[3, 10, 10] { { {"●", "●", "●"