У меня есть проект в классе, где я решил сделать игру DX Ball в XNA и хорошо прошел, но теперь я застрял.XNA/C# Редактировать список <> из другого класса
Я создал список «кирпичей», то есть прямоугольников, для того, чтобы мои спрайты располагались и для моего шара сталкивались. У меня есть идея, чтобы вся логика шара была в классе шара, поэтому теперь интересная часть, в которой мне нужна помощь. Как отредактировать этот список, когда шар сталкивается с одним из кирпичей. Я хочу удалить кирпич, который был поражен, и я полагаю, что это будет хорошо, поскольку они объявлены как отдельные кирпичи с индивидуальными координатами.
Я нашел этот вопрос, и он отвечает на вопрос о том, как получить информацию из списка, но не как его редактировать. Access List from another class
Я думал о написании булевой функции в поле обновления шара, так как мне не нужно его вычислять каждый раз, когда он обновляет фрейм. Когда столкновение истинно, оно может выполнять функцию, которая выполняет итерацию по списку кирпичей и удаляет тот, который попал в мяч.
Я не уверен, что мне нужно показать из моего класса шара, чтобы в дальнейшем могли быть какие-то при необходимости.
public struct BoundingBrick
{
public Vector2 brickPosision;
public double BrickW;
public double BrickH;
}
public BoundingBrick boundingBrick = new BoundingBrick();
boundingBrick.BrickW = 50;
boundingBrick.BrickH = 20;
boundingBrick.brickPosision.X = 50;
boundingBrick.brickPosision.Y = 50;
bricks = new List<Rectangle>();
for (var i = 0; i < 14; i++)
{
for (var j = 0; j < 12; j++)
{
bricks.Add(new Rectangle((int)boundingBrick.brickPosision.X + j * 50, (int)boundingBrick.brickPosision.Y + i * 20, (int)boundingBrick.BrickW, (int)boundingBrick.BrickH));
}
}
Прежде всего, добро пожаловать в SO. Я бы посоветовал вам добавить логическую переменную, что-то вроде 'Visible' в ваш' BoundingBrick'struct. Затем вместо того, чтобы иметь «Список», вам лучше иметь «Список » и построить свой прямоугольник после заполнения списка. Я не эксперт xna, поэтому я не могу вам помочь. –
Pikoh
RemoveAt (index) удаляет элемент по данному индексу. https://msdn.microsoft.com/pt-br/library/5cw9x18z(v=vs.110).aspx – Magnetron
Но как отредактировать из другого класса? –