C# 如何在.NET中创建波浪
我对此很陌生,但我已经思考了一段时间 但是出来的是随意排列的角色,我也无法恰当地创造一个完美的“g”波,而且该波应该出现从顶端产生和从底端删除的流动 输出: 这是C#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”
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();
}
}