黑马程序员技术交流社区

标题: 求大神指教,为什么我这样做所有字符的颜色都一样了? [打印本页]

作者: 复古。先生    时间: 2014-7-29 23:14
标题: 求大神指教,为什么我这样做所有字符的颜色都一样了?
本帖最后由 复古。先生 于 2014-7-30 23:21 编辑

      public static void drawGame()
        {
            string[] game = new string[100];
            int[] stop = { 3, 27, 45, 92 };//暂停1
            int[] lucky = { 5, 35, 66, 88, 99 };//幸运轮盘2
            int[] guy = { 4, 65, 34, 57, 87,98 };//炸弹3
            int[] change = new int[100];//change控制方格效果

            #region 令change制0表普通,制1表暂停,制2表轮盘,制3表炸弹
            for (int i = 0; i < stop.Length; i++)
            {
                change[stop【i】] = 1;
            }
            for (int i = 0; i < lucky.Length; i++)
            {
                change[lucky
【i】] = 2;
            }
            for (int i = 0; i < guy.Length; i++)
            {
                change[guy
【i】] = 3;
            }
            #endregion

            for (int i = 0; i < 100; i++)
            {
                switch (change【i】)

                {
                    case 0:
                    Console.ForegroundColor = ConsoleColor.Yellow;
                    game 【i】= "□";
                    break;
                    case 1:
                    Console.ForegroundColor = ConsoleColor.Green;
                    game 【i】=  "◆";
                    break;
                    case 2:
                    Console.ForegroundColor = ConsoleColor.DarkRed;
                    game 【i】=  "◎";
                    break;
                    case 3:
                    Console.ForegroundColor = ConsoleColor.Red;
                    game 【i】=  "☆";
                    break;
                    default:
                    game 【i】=  "□";
                    break;
                }
            }
        



            for (int i = 0; i < 30; i++)
            {
                Console.Write(game【i】);
            }
            Console.WriteLine();
            for (int i = 30; i < 35; i++)
            {
                for (int j = 0; j < 29; j++)
                {
                    Console.Write("  ");
                }
                Console.WriteLine(game【i】);
            }
            for (int i = 64; i > 34; i--)
            {
                Console.Write(game【i】);
            }
            Console.WriteLine();
            for (int i = 65; i < 70; i++)
            {
                Console.WriteLine(game【i】);
            }
            for (int i = 70; i < 100; i++)
            {
                Console.Write(game【i】);
            }

        }


作者: 复古。先生    时间: 2014-7-30 23:20
我知道为什么呢,^-^!
作者: 流失的温度0    时间: 2014-8-1 14:53
问题分析:
在你的那个填充符号的步骤里,你把数组的最后一个元素game[99],
也就是地图的最后一步填充为幸运罗盘。值为2。
这点不是问题,问题出现在你的switch语句中
在你判断地图中每一步的图形的时候,根据图形设置前景色,
每判断一次就改变一次前景色,
最终判断到最后一个元素。注意这个前景色是整体的。
已经打印出来得东西颜色不受影响,如果你后面不改变前景色,
那么后面打印出来的东西都是最后一次设置的那个颜色。
最后一个元素为game[99],值为2,前景色被设为ConsoleColor.DarkRed,
期间你并没有输出地图,所以颜色改来改去,最终被定为ConsoleColor.DarkRed,
然后执行后面的代码,开始输出地图。所以整个地图的颜色就变为ConsoleColor.DarkRed
改变颜色的步骤在打印地图的时候改。
作者: 复古。先生    时间: 2014-8-2 09:12
流失的温度0 发表于 2014-8-1 14:53
问题分析:
在你的那个填充符号的步骤里,你把数组的最后一个元素game[99],
也就是地图的最后一步填充为幸 ...

谢谢了!




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2