C#之基础2---④(C#飞行棋逻辑流程图及代码,Visual Studio虚线对齐,Switch语句)

本文详细介绍了C#实现飞行棋游戏的逻辑部分,包括玩家行动判断、地图绘制,以及使用switch语句等关键点。同时,讨论了字符串数组与整数数组的区别,并分享了代码实现的各个方法,如Title()、InitMap()等。文章还提及了Visual Studio中虚线对齐的技巧和Switch语句的使用教程链接。
摘要由CSDN通过智能技术生成

       终于到了所谓的飞行棋阶段了,这个阶段先是自己梳理思路去敲,后面发现的确挺难^_^,后面被卡在了玩家行动、行动判断以及绘制不同地图上面,然后就开始带着问题去看视频。

一、逻辑部分

自己思路与老师思路的差距:
1、可以通过用int数组画飞行棋,通过数字来对应不同的关卡。我的思路用的是字符串数组画的,直接把符号赋值给字符换数组,没有想到可以利用中间的数字来设置不同的符号。区别在于老师利用了一个标识符(数字)来判断要画哪一个。
那么字符串数组与整数数组的使用区别在什么呢?他们的初始值不同,整数数组的初始值是0,而字符串数组的初始值为null,改变时只改一下数字即可。
2、两个玩家用数组来表示,采用switch语句。
3、对于多次用到的参数,在类中进行声明。
4、画竖行时我直接用的多个空格,老师则采用for循环输入空格。
5、颜色的转换。
6、Console.ReadKey()在控制台处是否显示按下的键,通过参数的true,false来判断。
7、如何行动:
第一种情况:AB坐标相同,那么后面的按个退回原点,坐标为0。
第二种情况:不踩任意奖励键,那么继续往前走。

第三种情况:踩到奖励的坐标键,根据奖励的具体内容来改变玩家的坐标位置。

二、导图类(绿色部分为调用方法过程)

三、代码类:

①、主函数及定义声明

public static int[] Map = new int[100];                                       //在类中声明数组,利用率较高,为提高效率声明到类中
        public static int[] PlayerPos = new int[] { 0, 0 };                   //声明玩家坐标数组
        public static string[] PlayerNames = new string[2];                   //声明玩家姓名
        public static bool[] flag = new bool[] { false, false };              //声明一个flag标记
        static void Main(string[] args)
        {
            
            Title();                                                          //调用游戏头方法
            InitMap();                                                        //调用初始化地图方法
            #region 判断输入姓名是否为空,是否相同
            Console.WriteLine("请输入玩家A的姓名");                           //在控制台上写入内容
            PlayerNames[0] = Console.ReadLine();                              //读取控制台内容,并将结果赋值给玩家数组A
            while (PlayerNames[0] == "")                                      //判断,如果玩家A的姓名为空,则提示
            {
                Console.WriteLine("玩家A姓名不能为空,请重新输入"); //提示内容
                PlayerNames[0] = Console.ReadLine();
            }
            Console.WriteLine("请输入玩家B的姓名");                           //在控制台上写入内容
            PlayerNames[1] = Console.ReadLine();                              //读取控制台内容,并将结果赋值给玩家B
            while (PlayerNames[1] == "" || PlayerNames[0] == PlayerNames[1])  //判断,玩家AB姓名是否相同,玩家B是否为空
            {
                if (PlayerNames[0] == PlayerNames[1])                         //如果相同则提示对应信息
                {
                    Console.WriteLine("玩家B的姓名不能与玩家A的姓名“{0}”相同", PlayerNames[0]);
                }
                else
                {
                    Console.WriteLine("玩家B姓名不能为空,请重新输入");        //如果为空则提示为空信息
                }
                PlayerNames[1] = Console.ReadLine();                           //然后再次读取控制台内容
            }
            #endregion
            Console.Clear();
            Title();                                                            //调用游戏头方法
            Console.WriteLine("对战开始...");                                   //在控制台上输入内容
            Console.WriteLine("{0}的士兵用A表示...", PlayerNames[0]);
            Console.WriteLine("{0}的士兵用B表示...", PlayerNames[1]);
            DrawMap();                                                          //调用画地图方法
            while (PlayerPos[0] <= 99 && PlayerPos[1] <= 99)                    //创建循环,如果两个玩家的坐标都<=99的话那么进行下面循环,但凡有一个等于99那么退出循环
        
评论 14
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Elsa~

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值