数组赋值Snake

Bat*_*sta 6 c# arrays multidimensional-array

在商业环境中工作,我不再需要编写代码或使用旧的控制台了.我的工作是重复的,因此并不具有挑战性.

我决定在C#控制台上写一个蛇游戏来挑战自己; 和男孩做了它让我的大脑工作.我从来不需要在日常工作中考虑这一点,但我觉得我的编程技巧没有变得更好.

我有一个问题.我采取的基本方法是创建一个蛇类和一个食品类.snake类使用数组来存储所有坐标,然后绘图类决定在屏幕上绘制哪些坐标.

问题是当你移动蛇时,数组填满(maxsize为250表示性能),所以当我到达数组的末尾时我想将最后几个coords复制到temp数组,刷新原始数组并复制临时坐标回到主阵列.

我遇到的问题是将x coords复制回原始数组.我决定手动进行测试,但这个解决方案总是让我可怜的蛇留在屏幕上的一个部分后面不应该在那里.

我将如何以编程方式执行此操作?

spoints[4, 0] = stemp[249, 0];
spoints[4, 1] = stemp[249, 1];
spoints[4, 2] = stemp[249, 2];

spoints[3, 0] = stemp[248, 0];
spoints[3, 1] = stemp[248, 1];
spoints[3, 2] = stemp[248, 2];

spoints[2, 0] = stemp[247, 0];
spoints[2, 1] = stemp[247, 1];
spoints[2, 2] = stemp[247, 2];

spoints[1, 0] = stemp[246, 0];
spoints[1, 1] = stemp[246, 1];
spoints[1, 2] = stemp[246, 2];

spoints[0, 0] = stemp[245, 0];
spoints[0, 1] = stemp[245, 1];
spoints[0, 2] = stemp[245, 2];
Run Code Online (Sandbox Code Playgroud)

如果有人真的想深入研究代码,我真的不介意在这里发布整个游戏.

hyp*_*hyp 1

考虑使用数组来表示“一般点”而不是绘制点,创建另一个名为类似的类,SnakePart以便您的Snake类具有可管理的部分。

您还可以创建一个自定义数组类,以便在网格的每个部分中您只有一个值hasSnakePart并对其进行操作。