骑士飞行棋游戏

来源:互联网 发布:mysql 默认 编辑:程序博客网 时间:2024/04/20 10:11
namespace QiShiFeiXingQi
{
    class Program
    {
        static string[] name=new string[2]; //定义数组接受两个人的名字
        static int[] Map = new int[130];//定义地图每格的元素
        static int[] Coordinate = { 0,0 };//定义坐标的位置
        static Random rd = new Random();//产生随即数
        static bool isNo = false;
        static void Main(string[] args)
        {
            ShowUI();
            #region 玩家输入姓名
            Console.WriteLine("请输入玩家A的姓名:");
            name[0] = Console.ReadLine();
            while (name[0] == "")
            {
                Console.WriteLine("你的姓名不能为空,请重新输入:");
                name[0] = Console.ReadLine();
            }
            Console.WriteLine("请输入玩家B的名字:");
            name[1]=Console.ReadLine();
            while (name[1] == "" || name[1] == name[0])
            {
                if (name[1] == "")
                {
                    Console.WriteLine("玩家B的名字也不能为空,请重新输入吧:");
                }
                else
                {
                    Console.WriteLine("两个人的名字一样了,请重新输入:");
                }
                name[1] = Console.ReadLine();
            }
            #endregion
            Console.WriteLine("{0}是玩家A",name[0]);
            Console.WriteLine("{0}的玩家B",name[1]);
           
            InitalMap();
            DrawMap();
            Console.WriteLine("游戏对战开始...");
            while (Coordinate[0] < 130 && Coordinate[1] < 130)
            {
                int temp = rd.Next(1, 7);
                if (isNo == false)
                {
                    #region A掷筛子
                    Console.WriteLine("{0}按任意键开始掷筛子:", name[0]);
                    Console.ReadKey(true);
                    temp = rd.Next(1, 7);
                    Console.WriteLine("{0}掷出了个:{1}", name[0], temp);
                    Console.WriteLine("按任意键开始行动......");
                    Console.ReadKey(true);
                    Coordinate[0] = Coordinate[0] + temp;
                    CheckNum();
                    if (Coordinate[0] == Coordinate[1])
                    {
                        Coordinate[1] = 0;
                    }
                    else
                    {
                        switch (Map[Coordinate[0]])
                        {
                            case 0:
                                //普通
                                break;
                            case 1:
                                //1------交换位置--------------2------轰炸对方--------
                                Console.WriteLine("请输入1-交换位置---------------2-轰炸对方");
                                int enter = Number(1, 2);
                                if (enter == 1)
                                {
                                    int s = Coordinate[0];
                                    Coordinate[0] = Coordinate[1];
                                    Coordinate[1] = s;
                                }
                                else
                                {
                                    Coordinate[1] = Coordinate[1] - 6;
                                    CheckNum();
                                }
                                break;
                            case 2:
                                Coordinate[0] = Coordinate[0] - 6;
                                CheckNum();
                                //倒退六格
                                break;
                            case 3:
                                //站停一次
                                isNo = true;
                                break;
                            case 4:
                                Coordinate[0] = Coordinate[0] + 10;
                                CheckNum();
                                //前进10格
                                break;
                            default:
                                break;
                        }
                    }
                    Console.Clear();
                    ShowUI();
                    InitalMap();
                    DrawMap();
                    #endregion
                }
                else
                {
                    isNo = false;
                }
                if (isNo == false)
                {
                    #region B掷筛子
                    Console.WriteLine("{0}按任意键开始掷筛子:", name[1]);
                    Console.ReadKey(true);
                    temp = rd.Next(1, 7);
                    Console.WriteLine("{0}掷出了个:{1}", name[1], temp);
                    Console.WriteLine("按任意键开始行动......");
                    Console.ReadKey(true);
                    temp = rd.Next(1, 7);
                    Coordinate[1] = Coordinate[1] + temp;
                    CheckNum();
                    if (Coordinate[1] == Coordinate[0])
                    {
                        Coordinate[0] = 0;
                    }
                    else
                    {
                        switch (Map[Coordinate[1]])
                        {
                            case 0:
                                break;
                            case 1:
                                Console.WriteLine("请输入1-交换位置---------------2-轰炸对方");
                                int enter = Number(1, 2);
                                if (enter == 1)
                                {
                                    int s = Coordinate[1];
                                    Coordinate[1] = Coordinate[0];
                                    Coordinate[0] = s;
                                }
                                else
                                {
                                    Coordinate[0] = Coordinate[0] - 6;
                                    CheckNum();
                                }
                                break;
                            case 2:
                                Coordinate[1] = Coordinate[1] - 6;
                                CheckNum();
                                break;
                            case 3:
                                isNo = true;
                                break;
                            case 4:
                                Coordinate[1] = Coordinate[1] + 10;
                                CheckNum();
                                break;
                            default:
                                break;
                        }
                    }
                    Console.Clear();
                    ShowUI();
                    InitalMap();
                    DrawMap();
                    #endregion
                }
                else
                {
                    isNo = false;
                }
            }
            Console.ReadKey();
        }
        /// <summary>
        /// 欢迎界面的方法
        /// </summary>
        static void ShowUI()
        {
            Console.Write("********************************************************************************");
            Console.Write("*                                                                              *");
            Console.Write("*              杨    玉    杰    的    飞    行    骑    游    戏              *");
            Console.Write("*                                                                              *");
            Console.Write("********************************************************************************");
            Console.WriteLine("图例:◎表示幸运轮盘   ¤表示炸弹   ▲站停一次   ★时空隧道");
        }
        /// <summary>
        /// 轮盘初始化
        /// </summary>
        static void InitalMap()
        {
            int[] luckyTrun = { 6, 26, 47, 88, 91,110 };
            int[] landMine = { 5, 24, 33, 49, 53, 73, 89, 95,111 };
            int[] stop = { 9, 20, 38, 49, 55, 68, 74,112 };
            int[] timeTunnel = { 7, 25, 33, 69, 88,113 };
            for (int i = 0; i < luckyTrun.Length; i++)
            {
                Map[luckyTrun[i]] = 1;
            }
            for (int i = 0; i < landMine.Length; i++)
            {
                Map[landMine[i]] = 2;
            }
            for (int i = 0; i < stop.Length; i++)
            {
                Map[stop[i]] = 3;
            }
            for (int i = 0; i < timeTunnel.Length; i++)
            {
                Map[timeTunnel[i]] = 4;
            }
        }
        /// <summary>
        /// 绘制每一格
        /// </summary>
        static string DrowingMap(int post)
        {
            string result = "";
            if (Coordinate[0] == post && Coordinate[1] == post)
            {
                result = "<>";
            }
            else if (Coordinate[0] == post)
            {
                result = "A";
            }
            else if (Coordinate[1] == post)
            {
                result = "B";
            }
            else
            {
                switch (Map[post])
                {
                    case 0: result = "□";
                        break;
                    case 1: result = "◎";
                        break;
                    case 2: result = "¤";
                        break;
                    case 3: result = "▲";
                        break;
                    case 4: result = "★";
                        break;
                    default:
                        break;
                }
            }
            return result;
        }
        /// <summary>
        /// 绘制每一行
        /// </summary>
        static void DrawMap()
        {
            for (int i = 0; i < 40; i++)
            {
                Console.Write(DrowingMap(i));
            }
            for (int i = 40; i < 45; i++)
            {
                for (int j = 0; j < 39; j++)
                {
                    Console.Write("  ");
                }
                Console.Write(DrowingMap(i));
            }
            for (int i = 84; i >= 45; i--)
            {
                Console.Write(DrowingMap(i));
            }
            for (int i = 85; i < 90; i++)
            {
                Console.WriteLine(DrowingMap(i));
            }
            for (int i = 90; i < 130; i++)
            {
                Console.Write(DrowingMap(i));
            }
        }
        /// <summary>
        /// 玩家A和玩家B掷筛子
        /// </summary>
        static void Dice()
        {
 
        }
        /// <summary>
        /// 检查玩家A和玩家B的数字是否超出了范围
        /// </summary>
        static void CheckNum()
        {
            for(int i=0;i<2;i++)
            {
                if (Coordinate[i] >= 130)
                {
                    Coordinate[i] = 129;
                }
                if (Coordinate[i] < 0)
                {
                    Coordinate[i] = 0;
                }
            }
        }
        /// <summary>
        /// 只能输入min和max之间的数字
        /// </summary>
        /// <param name="min"></param>
        /// <param name="max"></param>
        /// <returns></returns>
        static int Number(int min, int max)
        {
            while (true)
            {               
                try
                {
                    int numbers = Convert.ToInt32(Console.ReadLine());
                    if (numbers < min || numbers > max)
                    {
                        Console.WriteLine("只能输入{0}到{1}之间的数字,请重新输入!",min,max);
                        continue;
                    }
                    return numbers;
                }
                catch
                {
                    Console.WriteLine("只能输入数字,请重新输入!");
                }
            }
        }
    }
}
0 0
原创粉丝点击