Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 蛇形游戏绘制数组函数_C#_.net_Arrays - Fatal编程技术网

C# 蛇形游戏绘制数组函数

C# 蛇形游戏绘制数组函数,c#,.net,arrays,C#,.net,Arrays,我看了一段YouTube视频,其中有一段代码我不明白。希望你们能帮我 这个阵法是为蛇身设计的 Public void Draw() { for (int i = Body.length - 1; i > 0; i- -) Body[i] = Body[i - 1]; } 这段代码是做什么的?我假设Body是一个数组,指示蛇的所有位置,从第一个开始。该循环表示,对于数组中表示蛇位置的每个位置(从最末端向前移动开始),将其设置为前一个位置。最终结果是与以前完全相同的数

我看了一段YouTube视频,其中有一段代码我不明白。希望你们能帮我

这个阵法是为蛇身设计的

Public void Draw()
{
    for (int i = Body.length - 1; i > 0; i- -)
        Body[i] = Body[i - 1];
}

这段代码是做什么的?

我假设Body是一个数组,指示蛇的所有位置,从第一个开始。该循环表示,对于数组中表示蛇位置的每个位置(从最末端向前移动开始),将其设置为前一个位置。最终结果是与以前完全相同的数组,只是每个位置都向下移动了一行

注意这里的顺序很重要。如果从数组中的位置1开始,则会将Body[1]指定给Body[0]的值,然后在下一步中,将Body[2]指定给Body[1]的值,等等,直到整个数组被Body[0]中的初始值覆盖


事实上,在本例中,“Draw”是一个有点误导性的方法名称,因为它更新了snake,而不是引导您思考的“Draw”snake

恰恰相反
Body[i]=Body[i-1]
意味着将Body[99]分配给Body[100],下一步,将Body[98]分配给Body[99],等等。您的答案也没有提到递减for循环,这使得您的示例在这里不太适用,并使您的最终结论无效(“直到整个数组被正文[0]中的初始值覆盖”是不正确的,代码将所有点正确地移动一个索引,它不会用相同的值覆盖所有内容)@更平坦的是,“将Body[1]分配给Body[0]”我的意思是“将Body[1]分配给Body[0]的值”。此外,“直到整个数组被Body[0]中的初始值覆盖”的结论是,如果顺序颠倒,则会出现这种情况。请重新阅读之前的更正。为清晰起见进行了编辑。对于任何误解,我深表歉意。为什么你要回答如果for循环没有反转会发生什么?问题是OP的代码段完成了什么,而不是稍微不同的代码段可以完成什么。对于这种特定的情况,操作顺序对于一个正常的For循环毫无意义的点很重要。@Flater,因为传统上,循环从0开始,然后向上移动。OP在理解循环时遇到了困难,我认为值得一提的是为什么循环倒计时,虽然倒计时也可以完成,但前提是您还将内部命令更改为
Body[I-1]=Body[I]
。我想我宁愿犯错误,解释得太多而不是太少。再次表示歉意。