语法基础-方案一:C#阶段项目

项目名称:制作一款窗口程序的飞行棋项目
项目需求:要求至少两人对战
开发周期:两天

1.创建窗口程序

2.显示UI面板

显示UI
代码实现

3.创建游戏玩家

创建玩家代码

4.输入完毕后,进入第二个页面

清楚屏幕,重新绘制信息
这是重新绘制后的控制台程序

5.绘制地图

绘制地图前应该看到的是我们的需求,利用数组,对应下标的内容显示为1:表示暂停格▲,2:表示地雷格☆,3:表示幸运格●,4:表示穿越格∞,0:表示普通格□

image.png
image.png

6.设置地图数组Map的数据

for循环
添加监视
通过循环发现已经设置好了

7.将所有特殊格写入Map数组地图中

循环遍历赋值
最终Map里面的值

8.根据数据绘制地图

先声明玩家初始位置,即复活点

设置出生点
image.png

9.完善地图

绘制第二条地图

// 画第二行
            for (int i = 30; i < 34; i++)
            {
                for (int j = 0; j < 29; j++)
                {
                    Console.Write("  ");
                }
                // 判断玩家1和玩家2 是否在当前要画的第i格上
                if (playerPos[0] == i && playerPos[1] == i)
                {
                    Console.Write("〓"); // 如果在一起就绘制此图形
                }
                else if (playerPos[0] == i)
                {
                    Console.Write("1"); // 如果不在一起,那玩家1所在i格绘制1
                }
                else if (playerPos[1] == i)
                {
                    Console.Write("2");// 如果不在一起,那玩家2所在的i格绘制2
                }
                else  // 绘制完玩家和重合位置,那么其余的格子绘制根据Map数组的下标来绘制
                {
                    switch (map[i])
                    {
                        case 0:
                            Console.WriteLine("□");
                            break;
                        case 1:
                            Console.WriteLine("▲");
                            break;
                        case 2:
                            Console.WriteLine("☆");
                            break;
                        case 3:
                            Console.WriteLine("●");
                            break;
                        case 4:
                            Console.WriteLine("∞");
                            break;
                    }
                }
             }

这里会出现两个问题:
就是在绘制第二行的时候,会出现偏差

错误问题

这是源自你在绘制第一行结束后,要进行换行

换行即可

10.抽取封装

通过对上面第一行与第二行的绘制,我们发现里面的代码重复性太大

 static string ReturnMapData(int pos)
        {
            string r = "";
            if (playerPos[0] == pos && playerPos[1] == pos)
            {
                r = "〓"; // 如果在一起就绘制此图形
            }
            else if (playerPos[0] == pos)
            {
                r = "1"; // 如果不在一起,那玩家1所在i格绘制1
            }
            else if (playerPos[1] == pos)
            {
                r = "2";// 如果不在一起,那玩家2所在的i格绘制2
            }
            else  // 绘制完玩家和重合位置,那么其余的格子绘制根据Map数组的下标来绘制
            {
                switch (map[pos])
                {
                    case 0:
                        r = "□";
                        break;
                    case 1:
                        r ="▲";
                        break;
                    case 2:
                        r ="☆";
                        break;
                    case 3:
                       r ="●";
                        break;
                    case 4:
                        r="∞";
                        break;
                }
            }
            return r;
        }
抽取方法
绘制调用抽取方法
     static void DrawMap()
        {
            // 画第一行
            for (int i = 0; i < 30; i++)
            {
                Console.Write(ReturnMapData(i));
            }
            // 第一行绘制完毕换行
            Console.WriteLine();
            // 画第二行
            for (int i = 30; i < 34; i++)
            {
                for (int j = 0; j < 29; j++)
                {
                    Console.Write("  ");
                }
                Console.WriteLine(ReturnMapData(i)); 
            }  
            // 绘制第三行,从左边往右边绘制
            for (int i = 64;  i >34 ;  i--)
            {
                Console.Write(ReturnMapData(i));
            }
            Console.WriteLine();
            // 绘制第四行
            for (int i = 65; i < 69; i++)
            {
                Console.WriteLine(ReturnMapData(i));
            }
            // 绘制第五行
            for (int i = 70; i < 100; i++)
            {
                Console.Write(ReturnMapData(i));
            }
            Console.WriteLine();
            Console.ForegroundColor = ConsoleColor.White;
        }

11.玩家选择

玩家位置判断
玩家选择
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,641评论 25 708
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 12,259评论 4 61
  • 今天瑞士花园的一个业主家旧房翻新开工,联系了两个以前有合作过的师傅,先把厨房的地板砖和隔墙打掉。 交待好师傅按业主...
    高能故事阅读 312评论 2 1
  • 也许是因为我深爱了一个人 思念总在夜里洗刷灵魂 才总让我这般 人不像人 也许是因为我深爱了一个人 幻想总在每个荒芜...
    文星星阅读 119评论 0 0
  • 这个不错!
    一朵云136阅读 216评论 1 0