1

Windowsのロゴのような4つの正方形を出力するプログラムを作成したいと思います。これまでのところ、次のような2つの正方形を作成することができました。

[ ]

[ ]

最初に2つの垂直の正方形を作成しました。では、他の2つの垂直方向の正方形を追加して、Windowsロゴを完成させるにはどうすればよいでしょうか。

[ ] [ ]

[ ] [ ]

これが私のコードです:

        Console.BackgroundColor = ConsoleColor.DarkCyan;
        Console.Clear();
        int size = 10;
        Console.WriteLine();
        for (int row = 3; row <= size; row++)
        {
            for (int col = 0; col <= size + 1; col++)
            {
                if (col == 0)
                {
                    Console.BackgroundColor = ConsoleColor.DarkCyan;
                    Console.Write(" ");
                    Console.ResetColor();
                }
                else
                {
                    Console.BackgroundColor = ConsoleColor.White;
                    Console.Write(" ");
                    Console.ResetColor();
                }
            }
            Console.WriteLine();
        }
        Console.WriteLine();
        for (int row = 3; row <= size; row++)
        {
            for (int col = 0; col <= size + 1; col++)
            {
                if (col == 0)
                {
                    Console.BackgroundColor = ConsoleColor.DarkCyan;
                    Console.Write(" ");
                    Console.ResetColor();
                }
                else
                {
                    Console.BackgroundColor = ConsoleColor.White;
                    Console.Write(" ");
                    Console.ResetColor();
                }
            }
            Console.WriteLine();
        }
        Console.ReadKey();
4

3 に答える 3

1

最初のステップで、何かを描画するためのヘルパーメソッドを記述します。

public static class Draw
{
    public static void Rectangle(int top, int left, int width, int height, ConsoleColor color)
    {
        if (width < 0)
            throw new ArgumentException("width must be greater or equal zero.", "width");

        if (height < 0)
            throw new ArgumentException("height must be greater or equal zero.", "height");

        var oldPositionLeft = Console.CursorLeft;
        var oldPositionTop = Console.CursorTop;
        var oldColor = Console.BackgroundColor;

        Console.BackgroundColor = color;

        for (int i = 0; i < height; i++)
        {
            Console.SetCursorPosition(left, top + i);
            Console.Write(new String(' ', width));
        }

        Console.SetCursorPosition(oldPositionLeft, oldPositionTop);
        Console.BackgroundColor = oldColor;
    }

次に、描画するアイテムを定義します。

var items = new[] 
{ 
    new 
    { 
        Color = ConsoleColor.DarkCyan,
        Top = 1,
        Left = 1,
        Size = 5
    },
    new 
    { 
        Color = ConsoleColor.DarkGreen,
        Top = 1,
        Left = 7,
        Size = 5
    },
    new 
    { 
        Color = ConsoleColor.DarkRed,
        Top = 7,
        Left = 1,
        Size = 5
    },
    new 
    { 
        Color = ConsoleColor.DarkYellow,
        Top = 7,
        Left = 7,
        Size = 5
    },
};

次に、要素を繰り返し処理して描画します。

foreach (var item in items)
{
    Draw.Rectangle(item.Top, item.Left, item.Size, item.Size, item.Color);
}
于 2012-10-24T12:29:08.170 に答える
0

これがあなたのコード(あなたがたくさん働くべきです)があなたが望むものを描くように変更されたものです。少しリファクタリングすることをお勧めします。サイズを少なくとも2倍に増やし、最初の長方形(サイズの中央)を描​​画した後、DarkCyanを1回書き込む必要があることに注意してください。コードを確認してください:

            Console.BackgroundColor = ConsoleColor.DarkCyan;
            Console.Clear();
            int size = 20;
            Console.WriteLine();
            for (int row = 3; row <= size/2; row++)
            {
                for (int col = 0; col <= size + 1; col++)
                {
                    if (col == 0 || col == size/2 +1)
                    {
                        Console.BackgroundColor = ConsoleColor.DarkCyan;
                        Console.Write(" ");
                        Console.ResetColor();
                    }
                    else
                    {
                        Console.BackgroundColor = ConsoleColor.White;
                        Console.Write(" ");
                        Console.ResetColor();
                    }
                }
                Console.WriteLine();
            }
            Console.WriteLine();
            for (int row = 3; row <= size/2; row++)
            {
                for (int col = 0; col <= size + 1; col++)
                {
                    if (col == 0 || col == size / 2 + 1)
                    {
                        Console.BackgroundColor = ConsoleColor.DarkCyan;
                        Console.Write(" ");
                        Console.ResetColor();
                    }
                    else
                    {
                        Console.BackgroundColor = ConsoleColor.White;
                        Console.Write(" ");
                        Console.ResetColor();
                    }
                }
                Console.WriteLine();
            }
            Console.ReadKey();
于 2012-10-24T12:10:00.307 に答える
0

これを試して

Console.BackgroundColor = ConsoleColor.DarkCyan;

        Console.Clear();
        int size = 10;
        Console.WriteLine();
        for (int row = 3; row <= size; row++)
        {
            for (int col = 0; col <= size + 1; col++)
            {
                if (col == 0)
                {
                    Console.BackgroundColor = ConsoleColor.DarkCyan;
                    Console.Write(" ");
                    Console.ResetColor();
                }
                else
                {
                    Console.BackgroundColor = ConsoleColor.White;
                    Console.Write(" ");
                    Console.ResetColor();
                }

            }
            for (int col = 0; col <= size + 1; col++)
            {
                if (col == 0)
                {
                    Console.BackgroundColor = ConsoleColor.DarkCyan;
                    Console.Write(" ");
                    Console.ResetColor();
                }
                else
                {
                    Console.BackgroundColor = ConsoleColor.White;
                    Console.Write(" ");
                    Console.ResetColor();
                }
            }
            Console.WriteLine();
        }
        Console.WriteLine();
        for (int row = 3; row <= size; row++)
        {
            for (int col = 0; col <= size + 1; col++)
            {
                if (col == 0)
                {
                    Console.BackgroundColor = ConsoleColor.DarkCyan;
                    Console.Write(" ");
                    Console.ResetColor();
                }
                else
                {
                    Console.BackgroundColor = ConsoleColor.White;
                    Console.Write(" ");
                    Console.ResetColor();
                }
            }
            for (int col = 0; col <= size + 1; col++)
            {
                if (col == 0)
                {
                    Console.BackgroundColor = ConsoleColor.DarkCyan;
                    Console.Write(" ");
                    Console.ResetColor();
                }
                else
                {
                    Console.BackgroundColor = ConsoleColor.White;
                    Console.Write(" ");
                    Console.ResetColor();
                }
            }
            Console.WriteLine();
        }
       

        Console.ReadKey();
于 2012-10-24T12:10:46.670 に答える