练习——对战游戏

Posted 苏迁时

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了练习——对战游戏相关的知识,希望对你有一定的参考价值。

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace 对战
{
    class Program
    {
        static void Main(string[] args)
        {
            role rol1 = new role();
            role rol2 = new role();
            skill s1 = new skill();
            skill s2 = new skill();
            skill s3 = new skill();
            skill s4 = new skill();
            Random ran= new Random();
            Console.WriteLine("1、格罗姆  2、吉安娜  3、乌瑟尔  4、安度因");
            int r1 = 0;
            int r2 = 0;
            for (; ; )//选择角色
            {
                try
                {
                    Console.Write("请选择第一个角色(输入序号):");
                    int rr1 = int.Parse(Console.ReadLine());
                    if (rr1 >= 1 && rr1 <= 4)
                    {
                        r1 = rr1;
                    }
                    else
                    {
                        Console.WriteLine("请从以上四个角色之中选择!");
                        continue;
                    }
                    Console.Write("请选择第二个角色(输入序号):");
                    int rr2 = int.Parse(Console.ReadLine());
                    if (rr2 >= 1 && rr2 <= 4)
                    {
                        r2 = rr2;
                        break;
                    }
                    else
                    {
                        Console.WriteLine("请从以上四个角色之中选择!");
                        continue;
                    }
                }
                catch
                {
                    Console.WriteLine("操作有误,请正确输入角色序号!");
                    continue;
                }
            }
            //录入第一个角色信息
            if(r1==1)
            {
                rol1.Name = "格罗姆";
                rol1.Blood = 3000;
                rol1.Str = 100;
                s1.Name = "冲锋";
                s1.Str = 200;
                rol1.Smlski = s1;
                s2.Name = "风车";
                s2.Str = 500;
                rol1.Bigski = s2;
            }
            else if (r1 == 2)
            {
                rol1.Name = "吉安娜";
                rol1.Blood = 1500;
                rol1.Str = 200;
                s1.Name = "火球术";
                s1.Str = 400;
                rol1.Smlski = s1;
                s2.Name = "暴风雪";
                s2.Str = 1000;
                rol1.Bigski = s2;
            }
            else if (r1 == 3)
            {
                rol1.Name = "乌瑟尔";
                rol1.Blood = 2500;
                rol1.Str = 90;
                s1.Name = "圣光术";
                s1.Str = 300;
                rol1.Smlski = s1;
                s2.Name = "圣疗术";
                s2.Str = -600;
                rol1.Bigski = s2;
            }
            else
            {
                rol1.Name = "安度因";
                rol1.Blood = 2000;
                rol1.Str = 80;
                s1.Name = "治疗术";
                s1.Str = -200;
                rol1.Smlski = s1;
                s2.Name = "医疗波";
                s2.Str = -800;
                rol1.Bigski = s2;
            }
            //录入第二个角色信息
            if (r2 == 1)
            {
                rol2.Name = "格罗姆";
                rol2.Blood = 3000;
                rol2.Str = 100;
                s3.Name = "冲锋";
                s3.Str = 200;
                rol2.Smlski = s3;
                s4.Name = "风车";
                s4.Str = 500;
                rol2.Bigski = s4;
            }
            else if (r2 == 2)
            {
                rol2.Name = "吉安娜";
                rol2.Blood = 1500;
                rol2.Str = 200;
                s3.Name = "火球术";
                s3.Str = 400;
                rol2.Smlski = s3;
                s4.Name = "暴风雪";
                s4.Str = 1000;
                rol2.Bigski = s4;
            }
            else if (r2 == 3)
            {
                rol2.Name = "乌瑟尔";
                rol2.Blood = 2500;
                rol2.Str = 90;
                s3.Name = "圣光术";
                s3.Str = 300;
                rol2.Smlski = s3;
                s4.Name = "圣疗术";
                s4.Str = -600;
                rol2.Bigski = s4;
            }
            else
            {
                rol2.Name = "安度因";
                rol2.Blood = 2000;
                rol2.Str = 80;
                s3.Name = "治疗术";
                s3.Str = -200;
                rol2.Smlski = s3;
                s4.Name = "医疗波";
                s4.Str = -800;
                rol2.Bigski = s4;
            }
            if(rol1.Name==rol2.Name)
            {
                rol1.Name = rol1.Name + "1";
                rol2.Name = rol2.Name + "2";
            }
            Console.WriteLine("==========================================================");
            Console.WriteLine("角色"+"\\t"+"生命值"+"\\t"+"攻击力"+"\\t"+"技能1"+"\\t"+"技能2");
            Console.WriteLine(rol1.Name + "\\t" + rol1.Blood + "\\t" + rol1.Str + "\\t" + rol1.Smlski.Name + "\\t" + rol1.Bigski.Name);
            Console.WriteLine(rol2.Name + "\\t" + rol2.Blood + "\\t" + rol2.Str + "\\t" + rol2.Smlski.Name + "\\t" + rol2.Bigski.Name);
            Console.WriteLine("选择完毕,请按任意键开始战斗!");
            Console.ReadKey();
            //开始战斗
            for (; ; )
            {
                //默认角色1先手攻击
                int ran1 = ran.Next(1, 101);//判断是否释放技能
                if(ran1<=5)//释放大技能
                {
                    int bigstr=0;//记录大技能数值
                    //判断是否是治疗技能
                    if (rol1.Bigski.Str > 0)
                    {
                        bigstr = ran.Next(((rol1.Bigski.Str) / 10) * 8, ((rol1.Bigski.Str) / 10) * 12);
                        Console.WriteLine("【{0}】释放了☆☆☆{1}☆☆☆,对【{2}】造成了{3}点伤害,【{4}】剩余血量{5}", rol1.Name, rol1.Bigski.Name, rol2.Name, bigstr, rol2.Name, (rol2.Blood - bigstr));
                        rol2.Blood -= bigstr;
                    }
                    else
                    {
                        bigstr = ran.Next((Math.Abs(rol1.Bigski.Str) / 10) * 8, (Math.Abs(rol1.Bigski.Str) / 10) * 12);
                        Console.WriteLine("【{0}】释放了☆☆☆{1}☆☆☆,治疗了自己{2}点血量,【{3}】剩余血量{4}", rol1.Name, rol1.Bigski.Name, bigstr, rol1.Name, (rol1.Blood + bigstr));
                        rol1.Blood += bigstr;
                    }
                }
                else if (ran1<= 20)//释放小技能
                {
                    int smlstr = 0;
                    if (rol1.Smlski.Str > 0)
                    {
                        smlstr = ran.Next(((rol1.Smlski.Str) / 10) * 8, ((rol1.Smlski.Str) / 10) * 12);
                        Console.WriteLine("【{0}】释放了☆{1}☆,对【{2}】造成了{3}点伤害,【{4}】剩余血量{5}", rol1.Name, rol1.Smlski.Name, rol2.Name, smlstr, rol2.Name, (rol2.Blood - smlstr));
                        rol2.Blood -= smlstr;
                    }
                    else
                    {
                        smlstr = ran.Next((Math.Abs(rol1.Smlski.Str) / 10) * 8, (Math.Abs(rol1.Smlski.Str) / 10) * 12);
                        Console.WriteLine("【{0}】释放了☆{1}☆,治疗了自己{2}点血量,【{3}】剩余血量{4}", rol1.Name, rol1.Smlski.Name, smlstr, rol1.Name, (rol1.Blood + smlstr));
                        rol1.Blood += smlstr;
                    }
                }
                else//不释放技能,普通攻击
                {
                    int str = ran.Next(((rol1.Str) / 10) * 8, ((rol1.Str) / 10) * 12);
                    Console.WriteLine("【{0}】攻击了【{1}】,对【{2}】造成了{3}点伤害,【{4}】剩余血量{5}",rol1.Name,rol2.Name,rol2.Name,str,rol2.Name,(rol2.Blood-str));
                    rol2.Blood -= str;
                }
                Console.WriteLine();
                if(rol2.Blood<=0)//判断是否阵亡
                {
                    Console.WriteLine("【{0}】阵亡,【{1}】获得了胜利。",rol2.Name,rol1.Name);
                    break;
                }
                System.Threading.Thread.Sleep(1500);

                //角色2进行攻击
                int ran2 = ran.Next(1, 101);
                if (ran2 <= 5)
                {
                    int bigstr = 0;
                    if (rol2.Bigski.Str > 0)
                    {
                        bigstr = ran.Next(((rol2.Bigski.Str) / 10) * 8, ((rol2.Bigski.Str) / 10) * 12);
                        Console.WriteLine("【{0}】释放了☆☆☆{1}☆☆☆,对【{2}】造成了{3}点伤害,【{4}】剩余血量{5}", rol2.Name, rol2.Bigski.Name, rol1.Name, bigstr, rol1.Name, (rol1.Blood - bigstr));
                        rol1.Blood -= bigstr;
                    }
                    else
                    {
                        bigstr = ran.Next((Math.Abs(rol2.Bigski.Str) / 10) * 8, (Math.Abs(rol2.Bigski.Str) / 10) * 12);
                        Console.WriteLine("【{0}】释放了☆☆☆{1}☆☆☆,治疗了自己{2}点血量,【{3}】剩余血量{4}", rol2.Name, rol2.Bigski.Name, bigstr, rol2.Name, (rol2.Blood + bigstr));
                        rol2.Blood += bigstr;
                    }
                }
                else if (ran2 <= 20)
                {
                    int smlstr = 0;
                    if (rol2.Smlski.Str > 0)
                    {
                        smlstr = ran.Next(((rol2.Smlski.Str) / 10) * 8, ((rol2.Smlski.Str) / 10) * 12);
                        Console.WriteLine("【{0}】释放了☆{1}☆,对【{2}】造成了{3}点伤害,【{4}】剩余血量{5}", rol2.Name, rol2.Smlski.Name, rol1.Name, smlstr, rol1.Name, (rol1.Blood - smlstr));
                        rol1.Blood -= smlstr;
                    }
                    else
                    {
                        smlstr = ran.Next((Math.Abs(rol2.Smlski.Str) / 10) * 8, (Math.Abs(rol2.Smlski.Str) / 10) * 12);
                        Console.WriteLine("【{0}】释放了☆{1}☆,治疗了自己{2}点血量,【{3}】剩余血量{4}", rol2.Name, rol2.Smlski.Name, smlstr, rol2.Name, (rol2.Blood + smlstr));
                        rol2.Blood += smlstr;
                    }
                }
                else
                {
                    int str = ran.Next(((rol2.Str) / 10) * 8, ((rol2.Str) / 10) * 12);
                    Console.WriteLine("【{0}】攻击了【{1}】,对【{2}】造成了{3}点伤害,【{4}】剩余血量{5}", rol2.Name, rol1.Name, rol1.Name, str, rol1.Name, (rol1.Blood - str));
                    rol1.Blood -= str;
                }
                Console.WriteLine();
                if (rol1.Blood <= 0)
                {
                    Console.WriteLine("【{0}】阵亡,【{1}】获得了胜利。", rol1.Name, rol2.Name);
                    break;
                }
                System.Threading.Thread.Sleep(1500);
            }

            Console.ReadKey();
        }
    }
}

 

以上是关于练习——对战游戏的主要内容,如果未能解决你的问题,请参考以下文章

[新星计划] Python面向对象练习 | 回合制对战游戏模拟ATMLinux用户管理类

[新星计划] Python面向对象练习 | 回合制对战游戏模拟ATMLinux用户管理类

[新星计划] Python面向对象练习 | 回合制对战游戏模拟ATMLinux用户管理类

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

《C#零基础入门之百识百例》(六十五)类和结构体的对比 -- 文字对战游戏

Python练习