C# 如何在.NET中创建波浪

C# 如何在.NET中创建波浪,c#,.net,vb.net,wave,C#,.net,Vb.net,Wave,我对此很陌生,但我已经思考了一段时间 但是出来的是随意排列的角色,我也无法恰当地创造一个完美的“g”波,而且该波应该出现从顶端产生和从底端删除的流动 输出: 这是C# string s=“g”+Environment.NewLine+“gg”+Environment.NewLine+“ggg”+Environment.NewLine+ “gggg”+Environment.NewLine+“ggg”+Environment.NewLine+“gg”+Environment.NewLine+“g”

我对此很陌生,但我已经思考了一段时间 但是出来的是随意排列的角色,我也无法恰当地创造一个完美的“g”波,而且该波应该出现从顶端产生和从底端删除的流动 输出:

这是C#

string s=“g”+Environment.NewLine+“gg”+Environment.NewLine+“ggg”+Environment.NewLine+
“gggg”+Environment.NewLine+“ggg”+Environment.NewLine+“gg”+Environment.NewLine+“g”;
StringBuilder sb=新的StringBuilder();
对于(int32i=0;i<10;i++)sb.AppendLine(s);
弦波=sb.ToString();

也许这是一种过度的杀伤力,但它很有趣 这是一个C#Console应用程序,它可以产生真实的波形,而不是由g构成的saw波形

它没有经过优化,因此一些表达式比它们应该的更复杂(例如buildspace函数可能有更好的方法)

您可以删除该任务。如果不需要动画,请延迟

class Program
{
    const int NUM_WAVES = 5;
    const double WAVES_LENGTH = 20;
    const double WAVE_WIDTH = 20;
    static  void Main(string[] args)
    {
        string s = "";
        for (int waves = 0; waves < NUM_WAVES; waves++)
        {
            for (double i = 0; i < WAVES_LENGTH; i++)
            {
                int width = (int)((Math.Cos((i / WAVES_LENGTH) * 360 * Math.PI / 180)) * WAVE_WIDTH);
                s = BuildSpace(width + (int)WAVE_WIDTH);
                Task.Delay(25).Wait();
                Console.WriteLine(s + "g");
            }
        }
        Console.ReadLine();
    }

    private static string BuildSpace(int i)
    {
        string s="";
        for (int y = 0; y < i; y++)
            s += " ";
        return s;
    }
}
类程序
{
const int NUM_WAVES=5;
常数双波长度=20;
常数双波_宽度=20;
静态void Main(字符串[]参数)
{
字符串s=“”;
对于(int waves=0;waves
用于(int k=0;k<10;k++)
{
对于(int j=1;j 0;j--)
{
对于(int m=0;m

只需更改k和j的位置,然后从开始更改大小。

您需要做什么?)这里有一个方法:记录有多少个g(即波有多大),以及它是上升还是下降。然后做一个循环(无止境的,或者做一定次数的循环),在每次迭代中,根据需要递增或递减,根据需要反转方向,并打印出正确数量的g。查一下你高中的数学书。你试过循环吗?@HansPassant问得好-对提问者来说,这应该是正弦波还是其他东西,比如三角波?例如,请看这是C#为了公平起见,问题被标记为
C#
too@O.R.Mapper是的,是C。它是手工做的,没有在编译器中测试。OP确实标记了C#,所以也许他并不担心它是在C#还是在vb.net中?@DGibbs:我不是有意抱怨它是C#;我重复了这个事实来强调为什么这段代码无法编译。
string s = "g" + Environment.NewLine + "gg" + Environment.NewLine + "ggg" + Environment.NewLine + 
           "gggg" + Environment.NewLine + "ggg" + Environment.NewLine + "gg" + Environment.NewLine + "g";
StringBuilder sb = new StringBuilder();
for (Int32 i = 0; i < 10; i++) sb.AppendLine(s);
string wave = sb.ToString();
class Program
{
    const int NUM_WAVES = 5;
    const double WAVES_LENGTH = 20;
    const double WAVE_WIDTH = 20;
    static  void Main(string[] args)
    {
        string s = "";
        for (int waves = 0; waves < NUM_WAVES; waves++)
        {
            for (double i = 0; i < WAVES_LENGTH; i++)
            {
                int width = (int)((Math.Cos((i / WAVES_LENGTH) * 360 * Math.PI / 180)) * WAVE_WIDTH);
                s = BuildSpace(width + (int)WAVE_WIDTH);
                Task.Delay(25).Wait();
                Console.WriteLine(s + "g");
            }
        }
        Console.ReadLine();
    }

    private static string BuildSpace(int i)
    {
        string s="";
        for (int y = 0; y < i; y++)
            s += " ";
        return s;
    }
}
for (int k = 0; k < 10; k++)
{
    for (int j = 1; j <= 4; j++)
    {
        for (int m = 0; m < j; m++)
        {
            Console.Write("g");
        }
            Console.WriteLine();
    }
    for (int j = 4; j > 0; j--)
    {
        for (int m = 0; m < j; m++)
        {
            Console.Write("g");
        }
        Console.WriteLine();
    }
}