我只需要添加属性a4个对象

  • 本文关键字:a4 对象 属性 添加 c#
  • 更新时间 :
  • 英文 :


我制作一个俄罗斯方块,需要添加属性重力并移动所有对象,我的问题是,我逐个对象地做,我希望它可以为所有对象添加属性

类件:

interface Figura
{
void MoverI(); //Izquierda
void MoverD(); //Derecha
void RotarI(); //Rotacion
void RotarD();
void Gravedad();
}
class Square : Figura
{
public SolidColorBrush C = new SolidColorBrush();
public Rectangle _P = new Rectangle();
public int X,
Y,
YDIR = 5,
XDIR = 10;
const int TAM = 10;
protected Canvas c;
public Square(Canvas c, int X, int Y)
{      
_P.Width = TAM;
_P.Height = TAM;
this.X = X;
this.Y = Y;
C.Color = Color.FromRgb(255, 0, 0);
_P.Fill = C;
Canvas.SetLeft(_P, X);
Canvas.SetTop(_P, Y);
c.Children.Add(_P);
}
void Figura.Gravedad()
{
Y += YDIR;
Canvas.SetTop(_P, Y);
}

Class MainWindows

public MainWindow()
{
InitializeComponent();          
A = new Square(Canvas, 50, 50);
A1 = new Square(Canvas, 50, 60);
A2 = new Square(Canvas, 60, 50);
A3 = new Square(Canvas, 60, 60);
DP = new DispatcherTimer();
DP.Interval = new TimeSpan(0, 0, 0, 0, 80);
DP.Tick += new EventHandler(DP_TICK);
DP.IsEnabled = true;
MatrizTetris = new int[100, 100];
}
public void DP_TICK(object sender, EventArgs e)
{
A.Gravedad();
A1.Gravedad();
A2.Gravedad();
A3.Gravedad();
}

例如:

A.Gravedad();
A1.Gravedad();
A2.Gravedad();
A3.Gravedad();

添加所有属性或重新组合A、A1、A2、A3并添加Gravedad的其他方法?

您可以维护类中所有对象的列表:

ICollection<Figura> _objects;

MainWindow构造函数中初始化:

_objects = new List<Figura> { A, A1, A2, A3 };

然后在DP_TICK中,您可以迭代所有对象并调用您的方法:

foreach (var x in _objects)
x.Gravedad();

最新更新