Visual C#对象数组更改数组中的所有元素而不是一个元素
我是C#的新手所以我正在制作一个蛇游戏来学习。 我创建了一个蛇的对象,其中包含一个名为pieces的对象数组。 所以这些碎片构成了蛇。 我试图将第一个棋子的x值改为1,以便将第一个棋子的一个单位向右移动。 问题是,当我将第一个棋子的x值改为1时,第二个棋子的x值也会改变1.所以myPiece [1] .x = 6和myPiece [2] .x = 6即使我只增加了第一个一个人的价值。 我怎样才能做到这一点,这样我就可以改变每件作品的价值而不改变作品价值的其余部分?
class theSnake { private int size; private thePiece[] myPieces=new thePiece[50]; private int xDim; private int yDim; public theSnake(int pxDim,int pyDim) { size = 1; xDim = pxDim; yDim = pyDim; for (int i = 1; i = 2; i--) { myPieces[i] = myPieces[i-1]; } //moves leading snake based on direction given switch (myPieces[1].getDir()) { case 1: myPieces[1].setY(myPieces[1].getY() + 1); break; case 2: myPieces[1].setY(myPieces[1].getY() - 1); break; case 3: myPieces[1].setX(myPieces[1].getX() + 1); break; case 4: myPieces[1].setX(myPieces[1].getX() - 1); break; } }
class thePiece { private int x; private int y; private int direction; //north = 1 south = 2 east = 3 west =4 public thePiece() { x = 0; y = 0; direction = 1; } }
for (int i = size; i >= 2; i--) { myPieces[i] = myPieces[i-1]; }
因为myPieces[2]
指向myPieces[1]
,换句话说, myPieces[2]
和myPieces[1]
是同一个对象。 现在, myPieces[3]
引用了myPieces[3]
myPieces[2]
对象。
如果要分配值,可以使用以下代码
for (int i = size; i >= 2; i--) { myPieces[i].x = myPieces[i-1].x; myPieces[i].y = myPieces[i-1].y; myPieces[i].direction = myPieces[i-1].direction; }
您的问题是您没有正确地交换数组中的对象:
更改以下内容:
for (int i = size; i >= 2; i--) { myPieces[i] = myPieces[i-1]; }
对于类似下面的内容(如果我没有正确理解你的逻辑,这可能需要进行小的调整):
上述就是C#学习教程:Visual C#对象数组更改数组中的所有元素而不是一个元素分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
for (int i = size; i >= 2; i--) { // Save a reference to the piece that will be written over var savePiece = myPieces[i]; // Move the previous piece myPieces[i] = myPieces[i-1]; // Now move the saved piece to the previous position myPieces[i-1] = savePiece; }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1012251.html