让我的对象连续左右移动c#

Make my object move left and right continuously c#

所以我创建了一个怪物,我希望它在 x= 156 和 x = 501 之间始终左右移动 这是我到目前为止在我的 move() 方法中所做的:

public void move()
{
    int left = 156;
    int right = 501;

    if (left <= x)
    {
        x++;   
    }
    if (x >= 501)
    {  
        x -= 1;
    }
}

然后我使用计时器调用方法

private void tmr2_Tick(object sender, EventArgs e)
{
    foreach (Monster m in monsters_)
    {
        m.move();
    }
    screen.Refresh();
}

这行不通。有人可以帮忙吗? 谢谢

这可能适合您

public class Monster
{
    private const int MIN_X = 156;
    private const int MAX_X = 501;
    private int _x;

    //your TL(probably) will tell you to use Enum 
    private bool _toLeft;

    public Monster()
    {
        _toLeft = false;
        _x = MIN_X;
    }

    public void Move()
    {
        if (_toLeft)
        {
            _x--;
        }
        else
        {
            _x++;
        }
        CheckEdges();
    }

    private void CheckEdges()
    {
        if (_x == MAX_X || _x == MIN_X)
            _toLeft = !_toLeft;
    }

}

除了坐标 X 和 Y 之外,怪物还必须有一个 属性,我们称之为方向。当怪物达到其中一个目标时,你改变这个方向 属性,然后你才调整坐标。

您的代码中缺少方向的概念。您可以通过数百种方式来实现,所以我不打算在这里编写代码。

但是一旦您的 x 等于 501,您就将其值减一,因此在下一次调用时其值为 500,因此将其重置为 501,依此类推。这就是它停止移动的原因。您需要改变边缘的方向,因此增加或减少 X 直到碰到另一条边缘。