千家信息网

C#如何实现简单的飞行棋小游戏

发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,这篇文章主要介绍了C#如何实现简单的飞行棋小游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。具体内容如下1.玩家姓名的输入2.对屏幕
千家信息网最后更新 2025年01月17日C#如何实现简单的飞行棋小游戏

这篇文章主要介绍了C#如何实现简单的飞行棋小游戏,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。

具体内容如下

1.玩家姓名的输入

2.对屏幕进行清屏

3.初始化地图

4.玩家A和玩家B玩游戏

using System;namespace homework{    class data    {        //静态字段来模拟全局变量        static int[] Maps = new int[100];        //声明一个静态数组用来存储玩家A跟玩家B的坐标        static int[] PlayerPos = new int[2];        static string[] PlayerNames = new string[2];        //两个玩家的标记        static bool[] Flags = new bool[2];//flags[0]默认是false         public static void Main(String[] args)        {            GameShow();            //玩家姓名的输入            #region             Console.WriteLine("请输入玩家A的姓名:");            PlayerNames[0] = Console.ReadLine();            while (PlayerNames[0] == "")            {                Console.WriteLine("玩家A的姓名不能为空,请重新输入");                PlayerNames[0] = Console.ReadLine();            }            Console.WriteLine("请输入玩家B的姓名:");            PlayerNames[1] = Console.ReadLine();            while (PlayerNames[1] == "" || PlayerNames[1] == PlayerNames[0])            {                if (PlayerNames[0] == "")                {                    Console.WriteLine("玩家A的姓名不能为空,请重新输入");                    PlayerNames[1] = Console.ReadLine();                }                else                {                    Console.WriteLine("玩家B的姓名不能与玩家A相同");                    PlayerNames[1] = Console.ReadLine();                }            }            #endregion            //对屏幕进行清屏            #region             Console.Clear();//清屏            GameShow();            Console.WriteLine("{0}的士兵用A表示", PlayerNames[0]);            Console.WriteLine("{0}的士兵用B表示", PlayerNames[1]);            #endregion            //画地图之前 初始化地图            #region             InitailMap();            DrawMap();            #endregion            //当玩家A跟玩家B没有一个人在终点时候 两个玩家不停地去玩游戏            #region             while (PlayerPos[0] < 99 && PlayerPos[0] < 99)            {                if (Flags[0] == false)                {                    PlayGame(0);                }                else                {                    Flags[0] = false;                }                if (PlayerPos[0] > 99)                {                    Console.WriteLine("玩家{0}赢了玩家{1}", PlayerNames[0], PlayerNames[1]);                    break;                }                if (Flags[1] == false)                {                    PlayGame(1);                }                else                {                    Flags[1] = false;                }                if (PlayerPos[0] > 99)                {                    Console.WriteLine("玩家{0}赢了玩家{1}", PlayerNames[0], PlayerNames[1]);                    break;                }            }//while            #endregion            Console.WriteLine("游戏结束!!!");            Console.ReadLine();        }        //画地图头        #region         public static void GameShow()        {            Console.ForegroundColor = ConsoleColor.Gray;            Console.WriteLine("*************************************");            Console.WriteLine("*************************************");            Console.WriteLine("****************飞行棋***************");            Console.WriteLine("*************************************");            Console.WriteLine("*************************************");        }        #endregion        //初始化地图        #region         public static void InitailMap()        {            int[] luckyturn = { 6, 23, 40, 55, 69, 83 };//幸运轮盘            for (int i = 0; i < luckyturn.Length; i++)            {                Maps[luckyturn[i]] = 1;            }            int[] landMine = { 5, 13, 17, 33, 38, 50, 64, 80, 94 };//地雷            for (int i = 0; i < landMine.Length; i++)            {                Maps[landMine[i]] = 2;            }            int[] pause = { 2,3,4,9, 27, 60, 93 };//暂停            for (int i = 0; i < pause.Length; i++)            {                Maps[pause[i]] = 3;            }            int[] timeTunnel = { 20, 25, 45, 63, 72, 88, 90 };//时空隧道            for (int i = 0; i < timeTunnel.Length; i++)            {                Maps[timeTunnel[i]] = 4;            }        }        #endregion        //画地图        #region         public static void DrawMap()        {            Console.WriteLine("图例:幸运圆圈:○  地雷:☆  暂停:▽  时空隧道:◎");            //第一横行            for (int i = 0; i < 30; i++)            {                //如果玩家A跟玩家B的坐标相同,画一个尖括号                Console.Write(DrawStringMap(i));            }//for            Console.WriteLine();            // 第一竖行            for (int i = 30; i < 35; i++)            {                for (int j = 0; j <= 28; j++)                {                    Console.Write("  ");                }                Console.WriteLine(DrawStringMap(i));            }            //第二横行            for (int i = 64; i >= 35; i--)            {                Console.Write(DrawStringMap(i));            }            //画第二行 需要进行换行            Console.WriteLine();            //第二竖行            for (int i = 65; i <= 69; i++)            {                Console.WriteLine(DrawStringMap(i));            }            //第三横行            for (int i = 70; i <= 99; i++)            {                Console.Write(DrawStringMap(i));            }            Console.WriteLine();        }        #endregion        //画地图中抽象出一个方法        #region        public static string DrawStringMap(int i)        {            string str = "";            if (PlayerPos[0] == PlayerPos[1] && PlayerPos[1] == i)            {                str = "<>";            }            else if (PlayerPos[0] == i)            {                str = "A";            }            else if (PlayerPos[1] == i)            {                str = "B";            }            else            {                switch (Maps[i])                {                    case 0: str = "□"; break;                    case 1: str = "○"; break;                    case 2: str = "☆"; break;                    case 3: str = "▽"; break;                    case 4: str = "◎"; break;                }//switch            }//else            return str;        }        #endregion        //双方掷骰子过程        #region         public static void PlayGame(int playerNumber)        {            Random r = new Random();            int rNumber = r.Next(1, 7);            Console.WriteLine("{0}按人任意键开始掷骰子", PlayerNames[playerNumber]);            Console.ReadKey(true);            Console.WriteLine("{0}掷骰子掷出了{1}", PlayerNames[playerNumber], rNumber);            PlayerPos[playerNumber] += rNumber;            Console.ReadKey(true);            Console.WriteLine("{0}按任意键开始行动", PlayerNames[playerNumber]);            Console.ReadKey(true);            Console.WriteLine("{0}行动完了", PlayerNames[playerNumber]);            Console.ReadKey(true);            //玩家A有可能踩到了玩家B 方块 幸运玩家 地雷 暂停 时空隧道            if (PlayerPos[playerNumber] == PlayerPos[1 - playerNumber])            {                Console.WriteLine("玩家{0}踩到了玩家{1},玩家{1}退6格", PlayerNames[playerNumber], PlayerNames[1 - playerNumber]);                PlayerPos[1 - playerNumber] -= 6;                Console.ReadKey(true);            }            else//踩到关卡            {                //玩家坐标                switch (Maps[PlayerPos[playerNumber]])                {                    case 0:                        Console.WriteLine("玩家{0}踩到了方块,安全", PlayerNames[playerNumber]);                        Console.ReadKey(true);                        break;                    case 1:                        Console.WriteLine("玩家{0}踩到幸运圆圈,请选择1--交换位置 2--轰炸对方", PlayerNames[playerNumber]);                        string input = Console.ReadLine();                        while (true)                        {                            if (input == "1")                            {                                Console.WriteLine("玩家{0}选择跟玩家{1}交换位置", PlayerNames[playerNumber], PlayerNames[1 - playerNumber]);                                Console.ReadKey(true);                                int temp = PlayerPos[playerNumber];                                PlayerPos[playerNumber] = PlayerPos[1 - playerNumber];                                PlayerPos[1 - playerNumber] = temp;                                Console.WriteLine("交换完成!!!按任意键继续游戏!!!");                                Console.ReadKey(true);                                break;                            }                            else if (input == "2")                            {                                Console.WriteLine("玩家{0}选择轰炸玩家{1},玩家{1}退6格", PlayerNames[playerNumber], PlayerNames[1 - playerNumber]);                                Console.ReadKey(true);                                PlayerPos[1] -= 6;                                Console.WriteLine("玩家{0}退了6格", PlayerNames[1 - playerNumber]);                                Console.ReadKey(true);                                break;                            }                            else                            {                                Console.WriteLine("只能输入1或者2 1--交换位置  2--轰炸对方");                                input = Console.ReadLine();                            }                        }                        Console.ReadKey(true);                        break;                    case 2:                        Console.WriteLine("玩家{0}踩到了地雷,退6格", PlayerNames[playerNumber]);                        Console.ReadKey(true);                        PlayerPos[1 - playerNumber] -= 6;                        Console.WriteLine("玩家{0}退了6格", PlayerNames[playerNumber]);                        Console.ReadKey(true);                        break;                    case 3:                        Console.WriteLine("玩家{0}踩到了暂停,暂停一回合", PlayerNames[playerNumber]);                        Flags[playerNumber] = true;                        Console.ReadKey(true);                        break;                    case 4:                        Console.WriteLine("玩家{0}踩到了时空隧道,前进10格", PlayerNames[playerNumber]);                        Console.ReadKey(true);                        PlayerPos[playerNumber] += 10;                        break;                }//switch            }//else            ChangePos();            Console.Clear();            DrawMap();        }        #endregion        //当玩家坐标发生改变需要判断两者是否超出范围        #region         public static void ChangePos()        {            if (PlayerPos[0] < 0)            {                PlayerPos[0] = 0;            }            if (PlayerPos[0] >= 99)            {                PlayerPos[0] = 99;            }            if (PlayerPos[1] < 0)            {                PlayerPos[1] = 0;            }            if (PlayerPos[1] > 99)            {                PlayerPos[1] = 99;            }        }        #endregion    }}

感谢你能够认真阅读完这篇文章,希望小编分享的"C#如何实现简单的飞行棋小游戏"这篇文章对大家有帮助,同时也希望大家多多支持,关注行业资讯频道,更多相关知识等着你来学习!

0