(C#) 无法对移动对象进行限制

问题描述 投票:0回答:1

我是初学者,别怪我。我目前正在用 C# 编写一个简单的“乒乓球”游戏,只是为了练习一下,因为这是我学习这门语言的第二周。

我现在尝试制作关键事件以使“picsSchlägerRechts”上下移动,效果很好,但我无法设法使其不移出我的面板。有什么想法吗?

private static bool conditionUP ;
    private static bool conditionDown ;


    private void frmPingPong_KeyDown(object sender, KeyEventArgs e)
    {

        {
            if (!(picSchlägerRechts.Location.Y == 0 && picSchlägerRechts.Location.Y == 249)) {
                conditionDown = true;
                conditionUP = true;
            }

            if (e.KeyCode == Keys.W && conditionUP == true)
            {
                picSchlägerRechts.Location = new Point(picSchlägerRechts.Location.X, picSchlägerRechts.Location.Y - ms);
                

                    if (picSchlägerRechts.Location.Y == 0)
                    {
                        conditionUP = false;
                        
                    }

                
            }
            if(e.KeyCode == Keys.S && conditionDown == true)
            {
                picSchlägerRechts.Location = new Point(picSchlägerRechts.Location.X, picSchlägerRechts.Location.Y + ms);
                
                if (picSchlägerRechts.Location.Y == 298)
                {
                    conditionDown = false;
                  

                }
            }
        
c# game-physics keyevent
1个回答
1
投票

您可以尝试这样的操作,以便它检查以确保您的 Y 不大于或小于最大/最小 y

private void frmPingPong_KeyDown(object sender, KeyEventArgs e)
{
    var maxY = 298;
    var minY = 0;

    if (e.KeyCode == Keys.W)
    {
        var newY = picSchlägerRechts.Location.Y - ms;

        if (newY < minY)
        {
            newY = minY;
        }
        picSchlägerRechts.Location = new Point(picSchlägerRechts.Location.X, newY);
    }
    else if (e.KeyCode == Keys.S)
    {
        var newY = picSchlägerRechts.Location.Y + ms;

        if (newY > maxY)
        {
            newY = maxY;
        }
        picSchlägerRechts.Location = new Point(picSchlägerRechts.Location.X, newY);
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.