美文网首页
语法基础-方案一:C#阶段项目

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

作者: 元宇宙协会 | 来源:发表于2017-08-07 19:31 被阅读65次

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

    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.玩家选择

    玩家位置判断 玩家选择

    相关文章

      网友评论

          本文标题:语法基础-方案一:C#阶段项目

          本文链接:https://www.haomeiwen.com/subject/mfpalxtx.html