簡體   English   中英

使我的對象連續左右移動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();
}

這行不通。 有人可以幫忙。 謝謝

除了坐標X和Y外,怪物還必須擁有一個屬性,我們將其稱為“方向”。 當怪物達到目標之一時,您可以更改“方向”屬性,然后才調整坐標。

這可能為您完成工作

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等於501,就將其值減一,因此在下一次調用時,其值為500,因此將其重置為501,依此類推。 這就是為什么它停止運動的原因。 您需要更改邊緣的方向,因此增加或減少X直到碰到另一條邊緣。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM