动画模式可在控制台中左右移动vom

时间:2019-06-07 08:54:18

标签: c#

我目前正在使用c#并尝试在控制台中玩耍。 我基本上想在控制台中制作徽标动画。我已经编写了两种方法来显示带有“#”的字母H和S。现在,它们只是并排编写的。现在,我希望它们从左向右移动并向后移动。在下一步中,我还要每隔几帧就将字母变大一点。它们现在的大小为5x7,因此它将像这样更改每个帧: 3x5-> 5x7-> 7x9。

我的想法是写字母,向右移动一列,删除旧行并打印新行。

关于我可以在这里做什么的任何提示?

public class Program
{
    static int row, col;

    public static void Main(string[] args)
    {
        Console.CursorVisible = false;
        WriteH();
        WriteS();
    }

    public static void WriteH()
    {
        for (row = 0; row < 7; row++)
        {
            for (col = 0; col < 7; col++)
            {
                if ((col == 1 || col == 5) || (row == 3 && col > 1 && col < 6))
                {                       
                    Console.Write("#");                     
                }
                else
                {            
                    Console.Write(" ");                        
                }
            }
            Console.WriteLine();
        }
    }

    public static void WriteS()
    {
        for (row = 0; row < 7; row++)
        {
            for (col = 0; col < 7; col++)
            {
                if (((row == 0 || row == 3 || row == 6) && col > 1 && col < 5)
                    || (col == 1 && (row == 1 || row == 2 || row == 6))
                    || (col == 5 && (row == 0 || row == 4 || row == 5)))
                {
                    Console.SetCursorPosition(col+7, row);
                    Console.Write("#");
                }
                else
                {
                    Console.SetCursorPosition(col+7, row);
                    Console.Write(" ");
                }
            }

            Console.WriteLine();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

如果有人遇到相同的问题,我现在想出了如何使用无尽的while循环来做到这一点。缩放字母应该可以以相同的方式进行。被评论的部分是我的第一个while循环,但是只是从左到右移动。

    public class Program
{


    static void Main(string[] args)
    {
        //WriteH();
        //WriteS();
        MoveLetters();
    }


    /*public static void MoveLetters()
    {
        int i = 0;
        while (i < 100)
        {
            WriteH(i);
            WriteS(i);
            i++;
            System.Threading.Thread.Sleep(20);
            Console.Clear();
        }
    }*/


    public static void MoveLetters()
    {
        int i = 0;
        while (true)
        {
            for(i=0; i<100; i++)
            {
                WriteH(i);
                WriteS(i);
                System.Threading.Thread.Sleep(20);
                Console.Clear();
            }
            for(i=100; i>0; i--)
            {
                WriteH(i);
                WriteS(i);
                System.Threading.Thread.Sleep(20);
                Console.Clear();
            }
        }
    }


    public static void WriteH(int xPosition)
    {                            
            for (var row = 0; row < 7; row++)
            {
                for (var col = 0; col < 7; col++)
                {
                    if ((col == 1 || col == 5) || (row == 3 && col > 1  && col < 6))
                    {
                        Console.SetCursorPosition(col + xPosition, row);
                        Console.Write("#");
                    }
                }
                Console.WriteLine();
            }             
    }
    public static void WriteS(int xPosition)
    {
        for (var row = 0; row < 7; row++)
        {
            for (var col = 0; col < 7; col++)
            {
                if (((row == 0 || row == 3 || row == 6) && col > 1 && col < 5)
                    || (col == 1 && (row == 1 || row == 2 || row == 6))
                    || (col == 5 && (row == 0 || row == 4 || row == 5)))
                {
                    Console.SetCursorPosition(col + 7 + xPosition, row);
                    Console.Write("#");
                }

            }

            Console.WriteLine();
        }
    }

}