前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >语法基础-方案一:C#阶段项目

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

作者头像
孙寅
发布2020-06-02 16:08:42
4280
发布2020-06-02 16:08:42
举报
文章被收录于专栏:宜达数字宜达数字

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

1.创建窗口程序
2.显示UI面板

显示UI

代码实现

3.创建游戏玩家

创建玩家代码

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

清楚屏幕,重新绘制信息

这是重新绘制后的控制台程序

5.绘制地图

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

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

for循环

添加监视

通过循环发现已经设置好了

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

循环遍历赋值

最终Map里面的值

8.根据数据绘制地图

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

设置出生点

9.完善地图

绘制第二条地图

代码语言:javascript
复制
// 画第二行
            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.抽取封装

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

代码语言:javascript
复制
 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;
        }

抽取方法

绘制调用抽取方法

代码语言:javascript
复制
     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.玩家选择

玩家位置判断

玩家选择

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1.创建窗口程序
  • 2.显示UI面板
  • 3.创建游戏玩家
  • 4.输入完毕后,进入第二个页面
  • 5.绘制地图
  • 6.设置地图数组Map的数据
  • 7.将所有特殊格写入Map数组地图中
  • 8.根据数据绘制地图
  • 9.完善地图
  • 10.抽取封装
  • 11.玩家选择
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档