这个是当年自己在学校里面写的小游戏,现在看看好弱智啊!
第一代的代码:
public struct Heros
{
public string name;
public double hp;
public double mp;
public double attack;
public double defence;
public string state;
public int delay;
public int swore;//诅咒计数器
public Skill selfskill;
}
public struct Skill
{
public string name;
public double mp;
public string info;
public double punch;
public int delay;
public int swore;//诅咒能力
}
static void Main(string[] args)
{
Console.WriteLine("红色警戒争霸赛现在开始!");
Random rnd = new Random();
Skill[] skills = new Skill[7];
skills[0].name = "【末日审判粉碎机】";
skills[0].mp = 50;
skills[0].info = "【使敌人遭到难以抗拒的粉碎性打击】";
skills[0].punch = 1.8;
skills[0].delay = 1;
skills[1].name = "【中子炮死亡射线】";
skills[1].mp = 75;
skills[1].info = "【使敌人见光死】";
skills[1].punch = 1.6;
skills[2].name = "【核心巨变】";
skills[2].mp = 500;
skills[2].info = "【使自己战斗力大为提升】";
skills[3].name = "【心灵震爆】";
skills[3].mp = 100;
skills[3].info = "【使敌人丧失战斗意志力】";
skills[3].swore = 40;
skills[4].name = "【氢元素混合爆炸】";
skills[4].mp = 100;
skills[4].info = "【自爆】";
skills[5].name = "【汲取光束】";
skills[5].mp = 40;
skills[5].info = "【获得了敌人的部分生命值和攻击值】";
skills[6].name = "【贿赂】";
skills[6].mp = 100;
skills[6].info = "【用金钱和美女收买敌人】";
skills[6].swore = 20;
skills[6].delay = 2;
Heros[] heros=new Heros[7];
heros[0].name = "【天启坦克】";
heros[0].hp = 3000;
heros[0].mp = 250;
heros[0].attack = 800;
heros[0].defence = 500;
heros[0].state = "【苏维埃共产主义】";
heros[0].selfskill = skills[0];
heros[0].delay = 0;
heros[0].swore = 0;
heros[1].name = "【未来坦克】";
heros[1].hp = 2500;
heros[1].mp = 500;
heros[1].attack = 600;
heros[1].defence = 300;
heros[1].state = "【民主自由世界】";
heros[1].selfskill = skills[1];
heros[1].delay = 0;
heros[1].swore = 0;
heros[2].name = "【帝国核心要塞】";
heros[2].hp = 6000;
heros[2].mp = 1500;
heros[2].attack = 1000;
heros[2].defence = 600;
heros[2].state = "【升日帝国】";
heros[2].selfskill = skills[2];
heros[2].delay = 3;
heros[2].swore = 0;
heros[3].name = "【尤里X】";
heros[3].hp = 150;
heros[3].mp = 1200;
heros[3].attack = 100;
heros[3].defence = 100;
heros[3].state = "【尤里恶普希龙王朝】";
heros[3].selfskill = skills[3];
heros[3].delay = 0;
heros[3].swore = -50;
heros[4].name = "【基洛夫飞艇】";
heros[4].hp = 5000;
heros[4].mp = 200;
heros[4].attack = 800;
heros[4].defence = 600;
heros[4].state = "【苏维埃共产主义】";
heros[4].selfskill = skills[4];
heros[4].delay = 3;
heros[4].swore = 10;
heros[5].name = "【铁锤坦克】";
heros[5].hp = 2000;
heros[5].mp = 150;
heros[5].attack = 400;
heros[5].defence = 250;
heros[5].state = "【苏维埃共产主义】";
heros[5].selfskill = skills[5];
heros[5].delay = 0;
heros[5].swore = 0;
heros[6].name = "【间谍】";
heros[6].hp = 100;
heros[6].mp = 600;
heros[6].attack = 10;
heros[6].defence = 50;
heros[6].state = "【民主自由世界】";
heros[6].selfskill = skills[6];
heros[6].delay = 0;
heros[6].swore = -20;
for (int i=0; i<=heros.Length-1;i++ )
{
Console.WriteLine("如果您想选择英雄{0},请输入数字{1}",heros[i].name,i);
}
int selecthero = Convert.ToInt32( Console.ReadLine());
Heros player = new Heros();
player = heros[selecthero]; //玩家选择的英雄赋值给电脑,然后就是电脑选择英雄
Heros PC = new Heros();
int selecthero2;
for (; ; )
{
selecthero2 = rnd.Next(0,heros.Length);
PC = heros[selecthero2];
if (player.state != PC.state)
{ break; }
}
Console.WriteLine("您选择了英雄{0},电脑选择英雄{1}",player.name,PC.name);
//开始PK
for (int i=1; ;i++ )
{
Console.WriteLine("第{0}回合",i);
//玩家回合
if (player.delay != 0)
{
//停止一个回合
Console.WriteLine("您要停止一个回合!");
player.delay--;
}
else
{
Console.WriteLine("请问是否发动技能?Y(y)或者N(n)");
char skilltouch = Console.ReadKey().KeyChar;//主动发动技能的触发变量
int playerskilltouch = rnd.Next(50, 151);//决定发动这次技能成功的概率
if ((skilltouch == 'y' | skilltouch == 'Y') & player.name == "【天启坦克】" & playerskilltouch > 30)
{ Heroskillattack0(ref player, ref PC); }
else if ((skilltouch == 'y' | skilltouch == 'Y') & player.name == "【未来坦克】" & playerskilltouch > 50)
{ Heroskillattack1(ref player, ref PC); }
else if ((skilltouch == 'y' | skilltouch == 'Y') & player.name == "【帝国核心要塞】" & playerskilltouch > 80)
{ Heroskillattack2(ref player, ref PC); }
else if ((skilltouch == 'y' | skilltouch == 'Y') & player.name == "【尤里X】" & playerskilltouch > 90)
{ Heroskillattack3(ref player, ref PC); }
else if ((skilltouch == 'y' | skilltouch == 'Y') & player.name == "【基洛夫飞艇】" & playerskilltouch > 70)
{ Heroskillattack4(ref player, ref PC); }
else if ((skilltouch == 'y' | skilltouch == 'Y') & player.name == "【铁锤坦克】" & playerskilltouch > 60)
{ Heroskillattack5(ref player, ref PC); }
else if ((skilltouch == 'y' | skilltouch == 'Y') & player.name == "【间谍】" & playerskilltouch > 60)
{ Heroskillattack6(ref player, ref PC); }
else
{ Commonattack(ref player, ref PC); }
}
//判定电脑
if(Gameover(ref PC)||PC.swore>=100)
{
Console.WriteLine("{0}击败了{1},打倒{2},{3}万岁!",
player.name,PC.name,PC.state,player.state);
PC.swore -= 10;
break;
}
//电脑回合
if (PC.delay != 0)
{
//停止一个回合
Console.WriteLine("电脑要停止一个回合!");
PC.delay--;
}
else
{
int pcskilltouch = rnd.Next(1, 101);
if (pcskilltouch > 30 & PC.name == "【天启坦克】") //分别表示计算机发动技能的概率
{ Heroskillattack0(ref PC, ref player); }
else if (pcskilltouch > 40 & PC.name == "【未来坦克】")
{ Heroskillattack1(ref PC, ref player); }
else if (pcskilltouch > 80 & PC.name == "【帝国核心要塞】")//建议playskilltouch和pcskilltouch相同
{ Heroskillattack2(ref PC, ref player); }
else if (pcskilltouch > 90 & PC.name == "【尤里X】")
{ Heroskillattack3(ref PC, ref player); }
else if (pcskilltouch > 90 & PC.name == "【基洛夫飞艇】")
{ Heroskillattack4(ref PC, ref player); }
else if (pcskilltouch > 90 & PC.name == "【铁锤坦克】")
{ Heroskillattack5(ref PC, ref player); }
else if (pcskilltouch > 60 & PC.name == "【间谍】")
{ Heroskillattack6(ref PC, ref player); }
else
{ Commonattack(ref PC, ref player); }
}
//判定玩家
if(Gameover(ref player)||player.swore>=100)
{
Console.WriteLine("{0}击败了{1},打倒{2},{3}万岁!",
PC.name, player.name, player.state, PC.state);
player.swore -= 10;
break;
}
//游戏菜单,随机事件
Console.WriteLine("您是否要打开随机箱子?Y(y)或者N(n)");
char rndbox = Console.ReadKey().KeyChar;
if(rndbox=='Y'||rndbox=='y')
{
double rndboxopen1 = rnd.Next(50,151);
double rndboxopen2 = rnd.Next(50, 151);
double rndboxopen3 = rnd.Next(10, 16);
player.hp = player.hp * 0.01 * rndboxopen1;
player.mp = player.mp * 0.01 * rndboxopen1;
player.swore -= rndbox;
Console.WriteLine("你打开箱子后,生命值翻{0}倍,技能值翻{1}倍",rndboxopen1*0.01,rndboxopen2*0.01);
}
}
}
/// <summary>
/// 普通攻击
/// </summary>
/// <param name="attacker"></param>
/// <param name="defencer"></param>
public static void Commonattack(ref Heros attacker, ref Heros defencer)
{
double damage = attacker.attack - defencer.defence;
if(damage<10)
{
damage = 10;
}
defencer.hp = defencer.hp - damage;
if(defencer.hp<0)
{
defencer.hp = 0;
}
Console.WriteLine("{0}对{1}发动了【普通攻击】,造成了{2}点伤害,{1}生命值还剩下{3}"
,attacker.name,defencer.name,damage,defencer.hp);
}
/// <summary>
/// 游戏结束
/// </summary>
/// <param name="victim"></param>
/// <returns></returns>
public static bool Gameover(ref Heros victim)
{
if(victim.hp==0)
{
return true;
}
else
{ return false; }
}
//一个技能写一个函数,避免因为属性过多造成的变成混乱
/// <summary>
/// 天启坦克的末日审判技能,暴击效果,还有使得敌方停止一回合
/// </summary>
/// <param name="attacker"></param>
/// <param name="defencer"></param>
public static void Heroskillattack0(ref Heros attacker, ref Heros defencer)
{
if (attacker.mp < attacker.selfskill.mp)
{
Console.WriteLine("您的技能值不足,行动失败");
return;
}
attacker.mp = attacker.mp - attacker.selfskill.mp;//减少技能值
double damage = attacker.attack*attacker.selfskill.punch - defencer.defence;//暴击
if (damage < 10)
{
damage = 10;
}
defencer.hp = defencer.hp - damage;
if (defencer.hp < 0)
{
defencer.hp = 0;
}
defencer.delay = defencer.delay + attacker.selfskill.delay;
Console.WriteLine("{0}对{1}发动了{2},{3},造成了{4}点伤害,{1}生命值还剩下{5}"
,attacker.name,defencer.name,attacker.selfskill.name,attacker.selfskill.info,damage,defencer.hp);
}
/// <summary>
/// 中子炮死亡射线,暴击效果
/// </summary>
/// <param name="attacker"></param>
/// <param name="defencer"></param>
public static void Heroskillattack1(ref Heros attacker, ref Heros defencer)
{
if (attacker.mp < attacker.selfskill.mp)
{
Console.WriteLine("您的技能值不足,行动失败");
return;
}
attacker.mp = attacker.mp - attacker.selfskill.mp;//减少技能值
double damage = attacker.attack * attacker.selfskill.punch - defencer.defence;//暴击
if (damage < 10)
{
damage = 10;
}
defencer.hp = defencer.hp - damage;
if (defencer.hp < 0)
{
defencer.hp = 0;
}
Console.WriteLine("{0}对{1}发动了{2},{3},造成了{4}点伤害,{1}生命值还剩下{5}"
, attacker.name, defencer.name, attacker.selfskill.name, attacker.selfskill.info, damage, defencer.hp);
}
/// <summary>
/// 核心巨变,攻击力永远提升到1.1倍数
/// </summary>
/// <param name="attacker"></param>
/// <param name="defencer"></param>
public static void Heroskillattack2(ref Heros attacker, ref Heros defencer)
{
if (attacker.mp < attacker.selfskill.mp)
{
Console.WriteLine("您的技能值不足,行动失败");
return;
}
attacker.mp = attacker.mp - attacker.selfskill.mp;//减少技能值
double damage=0;
if (defencer.hp < 0)
{
defencer.hp = 0;
}
attacker.attack *= 1.1;// 核心巨变,攻击力永远提升到1.1倍数
Console.WriteLine("{0}对{1}发动了{2},{3},造成了{4}点伤害,{1}生命值还剩下{5}"
, attacker.name, defencer.name, attacker.selfskill.name, attacker.selfskill.info, damage, defencer.hp);
}
/// <summary>
/// 【心灵震爆】,一旦有三次技能发动成功,则完全获得胜利
/// </summary>
/// <param name="attacker"></param>
/// <param name="defencer"></param>
public static void Heroskillattack3(ref Heros attacker, ref Heros defencer)
{
if (attacker.mp < attacker.selfskill.mp)
{
Console.WriteLine("您的技能值不足,行动失败");
return;
}
attacker.mp = attacker.mp - attacker.selfskill.mp;//减少技能值
double damage= defencer.hp*0.3+ defencer.attack-defencer.defence;
attacker.hp += damage;
if (defencer.hp < 0)
{
defencer.hp = 0;
}
defencer.swore = defencer.swore + attacker.selfskill.swore;
damage = 0;
Console.WriteLine("{0}对{1}发动了{2},{3},造成了{4}点伤害,{1}生命值还剩下{5}"
, attacker.name, defencer.name, attacker.selfskill.name, attacker.selfskill.info, damage, defencer.hp);
}
/// <summary>
/// 自爆(伤害值为自身血量的1.5倍数)
/// </summary>
/// <param name="attacker"></param>
/// <param name="defencer"></param>
public static void Heroskillattack4(ref Heros attacker, ref Heros defencer)
{
if (attacker.mp < attacker.selfskill.mp)
{
Console.WriteLine("您的技能值不足,行动失败");
return;
}
attacker.mp = attacker.mp - attacker.selfskill.mp;//减少技能值
double damage = 1.5 * (attacker.hp - 100);
attacker.hp = 100;
defencer.hp -= damage;
if (defencer.hp < 0)
{
defencer.hp = 0;
}
Console.WriteLine("{0}对{1}发动了{2},{3},造成了{4}点伤害,{1}生命值还剩下{5}"
, attacker.name, defencer.name, attacker.selfskill.name, attacker.selfskill.info, damage, defencer.hp);
}
/// <summary>
/// 汲取光束,吸血技能
/// </summary>
/// <param name="attacker"></param>
/// <param name="defencer"></param>
public static void Heroskillattack5(ref Heros attacker, ref Heros defencer)
{
if (attacker.mp < attacker.selfskill.mp)
{
Console.WriteLine("您的技能值不足,行动失败");
return;
}
attacker.mp = attacker.mp - attacker.selfskill.mp;//减少技能值
double damage = attacker.attack-defencer.defence;
if(damage<=10)
{
return;
}
attacker.hp += damage;
defencer.hp -= damage*0.9;
damage *= 0.1;//汲取光束还会吸取攻击力和防守力
attacker.attack += damage;
attacker.defence += damage;
if (defencer.hp < 0)
{
defencer.hp = 0;
}
Console.WriteLine("{0}对{1}发动了{2},{3},造成了{4}点伤害,{1}生命值还剩下{5}"
, attacker.name, defencer.name, attacker.selfskill.name, attacker.selfskill.info, damage, defencer.hp);
}
/// <summary>
/// 收买敌人
/// </summary>
/// <param name="attacker"></param>
/// <param name="defencer"></param>
public static void Heroskillattack6(ref Heros attacker, ref Heros defencer)
{
if (attacker.mp < attacker.selfskill.mp)
{
Console.WriteLine("您的技能值不足,行动失败");
return;
}
double damage = 0;
attacker.mp = attacker.mp - attacker.selfskill.mp;//减少技能值
defencer.delay = defencer.delay + attacker.selfskill.swore;
defencer.swore += attacker.selfskill.delay;
if (defencer.delay >= 3 || defencer.swore >= 50)
{ attacker.defence *= 100; }
if (defencer.hp < 0)
{
defencer.hp = 0;
}
Console.WriteLine("{0}对{1}发动了{2},{3},造成了{4}点伤害,{1}生命值还剩下{5}"
, attacker.name, defencer.name, attacker.selfskill.name, attacker.selfskill.info, damage, defencer.hp);
}
第二代的代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace redalert
{ //这是关于红色警戒的游戏
class Program
{
static void Main(string[] args)
{
Console.WriteLine("欢迎进入红色警戒争霸战");
double damage;
Console.WriteLine("--------------------------");
state basicstate = new state();
sovietgeneration1 state11 = new sovietgeneration1();
state11.statearmy();
Console.WriteLine("--------------------------");
soveitgeneration2 state12 = new soveitgeneration2();
state12.statearmy();
Console.WriteLine("--------------------------");
soveitgeneration3 state13 = new soveitgeneration3();
state13.statearmy();
Console.WriteLine("--------------------------");
USAgeneration1 state21 = new USAgeneration1();
state21.statearmy();
Console.WriteLine("--------------------------");
USAgeneration2 state22 = new USAgeneration2();
state22.statearmy();
Console.WriteLine("--------------------------");
USAgeneration3 state23 = new USAgeneration3();
state23.statearmy();
Console.WriteLine("--------------------------");
randomincident incidents = new randomincident();
Console.WriteLine("请选择您的阵营:1苏维埃社会主义共和国联盟2美利坚合众国");
player youplayer = new player();
pc opposite = new pc();
int selectstate = Convert.ToInt32(Console.ReadLine()) ;
//表示玩家已经升级到的代数
int generationplayer=0;
int generationpc=0;
//开始初始值设定
if(selectstate==1)
{
Console.Clear();
Console.WriteLine("您选择了【苏维埃社会主义共和国联盟】");
youplayer.Attack = state11.Attack;
youplayer.Defence = state11.Defence;
youplayer.Hp = state11.Hp;
youplayer.Mp = state11.Mp;
opposite.Attack = state21.Attack;
opposite.Defence = state21.Defence;
opposite.Hp = state21.Hp;
opposite.Mp = state21.Mp;
generationplayer++;